http://bugs.winehq.org/show_bug.cgi?id=19082
Summary: Missing pixels in the widgets Product: Wine Version: 1.1.24 Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: jaimerave@gmail.com
Created an attachment (id=22026) --> (http://bugs.winehq.org/attachment.cgi?id=22026) Buttons affected
In almost all the controls in Wine, there are a missing pixel in the corners that maybe it's a little detail, but it can make a huge difference in how the applications looks. You can check the issue on the attached screenshots. (If you don't see the problem you just have to zoom in the image.)
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #1 from Jaime Rave jaimerave@gmail.com 2009-06-26 00:26:13 --- Created an attachment (id=22027) --> (http://bugs.winehq.org/attachment.cgi?id=22027) Others widgets affected
http://bugs.winehq.org/show_bug.cgi?id=19082
Dmitry Timoshkov dmitry@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |trivial
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #2 from Jaime Rave jaimerave@gmail.com 2009-06-27 10:32:58 --- Created an attachment (id=22055) --> (http://bugs.winehq.org/attachment.cgi?id=22055) Bug affecting Winecfg
This bug is affecting all the programs that i have tested so i think this should have a better priority. I know it's just a cosmetic problem but can improve the look and fell of a lot of programs.
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #3 from Jaime Rave jaimerave@gmail.com 2009-07-07 12:19:25 --- Well I just tested in another PC and works ok there, so maybe it's a problem specific of my hardware.
My video card: 00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #4 from Jaime Rave jaimerave@gmail.com 2009-07-09 14:35:40 --- To be more precise, I have an Intel X4500HD.
00:02.0 VGA compatible controller [0300]: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller [8086:2a42] (rev 07).
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #5 from Dmitry Timoshkov dmitry@codeweavers.com 2009-07-11 01:37:54 --- This might be a driver bug. Please try to change to a different one (say vesa).
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #6 from Jaime Rave jaimerave@gmail.com 2009-07-11 13:58:02 --- Well using the vesa driver fix the problem. So i think this makes the bug invalid.
http://bugs.winehq.org/show_bug.cgi?id=19082
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID
--- Comment #7 from Austin English austinenglish@gmail.com 2009-07-11 15:55:24 --- Invalid.
http://bugs.winehq.org/show_bug.cgi?id=19082
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #8 from Austin English austinenglish@gmail.com 2009-07-11 15:55:57 --- Closing.
http://bugs.winehq.org/show_bug.cgi?id=19082
Jaime Rave jaimerave@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|CLOSED |UNCONFIRMED Resolution|INVALID |
--- Comment #9 from Jaime Rave jaimerave@gmail.com 2009-09-03 20:20:11 --- I have reported the bug to freedesktop: http://bugs.freedesktop.org/show_bug.cgi?id=22770
-----quoting------- I'm now attaching a test program that is as minimal as possible and that shows different behavior with either the vesa or xf86-video-intel drivers.
However, this isn't actually a driver bug.
Instead, the test program (and wine) are drawing lines with width of 0, (known as "thin lines" in the X protocol description). And such lines can be implemented with a device-specific algorithm that can differ from driver to driver[*].
So it's not actually surprising that there are differences here---that's perfectly allowable. What is a bit surprising is that the results with the intel driver are equivalent to the results that would be obtained by using a line width of 1, (where the protocol specifies an algorithm that defines precisely which pixels must be affected). I would have expected the vesa driver to match that behavior.
-----end---------
They give a complete description of the problem and a way to solve it. You can read all the info in: http://bugs.freedesktop.org/show_bug.cgi?id=22770#c14
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #10 from Jaime Rave jaimerave@gmail.com 2009-09-03 20:22:03 --- Created an attachment (id=23412) --> (http://bugs.winehq.org/attachment.cgi?id=23412) Source code of the test program
This is a test program that shows the difference of the implementation. More info http://bugs.freedesktop.org/show_bug.cgi?id=22770#c14
http://bugs.winehq.org/show_bug.cgi?id=19082
Jaime Rave jaimerave@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |source, testcase
http://bugs.winehq.org/show_bug.cgi?id=19082
Vitaliy Margolen vitaliy@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #23412|0 |1 is obsolete| |
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #11 from Dmitry Timoshkov dmitry@codeweavers.com 2009-09-03 22:42:47 --- Wine uses width 0 instead of 1 because it's faster. Still from your post it's clear that this is a driver dependent behaviour.
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #12 from Jaime Rave jaimerave@gmail.com 2009-09-03 23:13:26 --- (In reply to comment #11)
Wine uses width 0 instead of 1 because it's faster. Still from your post it's clear that this is a driver dependent behaviour.
--- snip --- So, according to what I can read of the X protocol specification, neither the vesa nor intel drivers have a bug here. They are allowed to differ in these details of which pixels get lit. (And if anything, vesa is the odd one for not matching the algorithm of line_width=1.)
So, to fix the bug, wine is going to have to change its code to not rely on the pixelization of zero-width lines, (which can differ from one driver to the next), and should instead use lines with width=1. Making this change will require making some adjustments to how the segment endpoint coordinates are computed to still achieve the desired result. --- snip ---
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #13 from Dmitry Timoshkov dmitry@codeweavers.com 2009-09-04 01:41:34 --- Created an attachment (id=23418) --> (http://bugs.winehq.org/attachment.cgi?id=23418) Don't optimize pens with width 1
Does the attached patch help?
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #14 from Jaime Rave jaimerave@gmail.com 2009-09-04 23:13:29 --- (In reply to comment #13)
Created an attachment (id=23418)
--> (http://bugs.winehq.org/attachment.cgi?id=23418) [details]
Don't optimize pens with width 1
Does the attached patch help?
No, with that patch, the problem is still there.
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #15 from Rein Klazes wijn@online.nl 2009-09-06 04:21:54 --- (In reply to comment #14)
(In reply to comment #13)
Created an attachment (id=23418)
--> (http://bugs.winehq.org/attachment.cgi?id=23418) [details] [details]
Don't optimize pens with width 1
Does the attached patch help?
No, with that patch, the problem is still there.
Oh yes, the patch works but not were you are looking at it.
Now the defects show up with drivers (eg VESA) that to this far seemed to work OK. _If_ what is written on freedesktop.org bug list is correct:
So it's not actually surprising that there are differences here---that's perfectly allowable. What is a bit surprising is that the results with the intel driver are equivalent to the results that would be obtained by using a line width of 1, (where the protocol specifies an algorithm that defines precisely which pixels must be affected). I would have expected the vesa driver to match that behavior.
_then_
wine is using the allowable, unspecified and thus unreliable behavior of such drivers.
Means, that drawing routines (like in uitools) should be modified as well.
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #16 from Jaime Rave jaimerave@gmail.com 2009-10-13 23:57:49 --- Created an attachment (id=24113) --> (http://bugs.winehq.org/attachment.cgi?id=24113) Test program
This is a modified version of the test case in the freedesktop bug. It shows the difference between line_with=0 and line_with=1 implementations.
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #17 from Jaime Rave jaimerave@gmail.com 2009-10-13 23:58:54 --- Created an attachment (id=24114) --> (http://bugs.winehq.org/attachment.cgi?id=24114) Screenshot using Vesa driver.
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #18 from Jaime Rave jaimerave@gmail.com 2009-10-13 23:59:25 --- Created an attachment (id=24115) --> (http://bugs.winehq.org/attachment.cgi?id=24115) Screenshot using Intel driver.
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #19 from Jaime Rave jaimerave@gmail.com 2009-10-29 22:06:11 --- Created an attachment (id=24439) --> (http://bugs.winehq.org/attachment.cgi?id=24439) Hack to fix the issue
Ok, this little change fix the issue for me. Am I in the correct way???
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #20 from Dmitry Timoshkov dmitry@codeweavers.com 2009-10-30 03:44:59 --- (In reply to comment #19)
Created an attachment (id=24439)
--> (http://bugs.winehq.org/attachment.cgi?id=24439) [details]
Hack to fix the issue Ok, this little change fix the issue for me. Am I in the correct way???
No. The code shouldn't use NULL_PEN for drawing.
http://bugs.winehq.org/show_bug.cgi?id=19082
Jaime Rave jaimerave@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch
--- Comment #21 from Jaime Rave jaimerave@gmail.com 2009-10-30 06:53:07 --- (In reply to comment #20)
(In reply to comment #19)
Created an attachment (id=24439)
--> (http://bugs.winehq.org/attachment.cgi?id=24439) [details] [details]
Hack to fix the issue Ok, this little change fix the issue for me. Am I in the correct way???
No. The code shouldn't use NULL_PEN for drawing.
I'm sorry Dmitry, but which NULL_PEN??
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #22 from Dmitry Timoshkov dmitry@codeweavers.com 2009-10-30 08:15:52 --- (In reply to comment #21)
I'm sorry Dmitry, but which NULL_PEN??
In the file you've patched.
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #23 from Jaime Rave jaimerave@gmail.com 2009-10-30 08:31:14 ---
In the file you've patched.
The only NULL that I see in my patch is: MoveToEx(hdc, InnerRect.left+LBpenplus, InnerRect.bottom-2, NULL);
and that is a pointer to the last postion:
From MSDN:
"lpPoint: [out] Pointer to a POINT structure that receives the previous position. If this parameter is a NULL pointer, MoveToEx does not retrieve the previous position."
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #24 from Dmitry Timoshkov dmitry@codeweavers.com 2009-10-30 09:32:19 --- grep uitools.c for NULL_PEN -> GetStockObject(NULL_PEN).
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #25 from Jaime Rave jaimerave@gmail.com 2009-10-30 09:46:54 --- (In reply to comment #24)
grep uitools.c for NULL_PEN -> GetStockObject(NULL_PEN).
So the problem is not in my patch, but in the rest of the code. I hope someone can find a solution then.
http://bugs.winehq.org/show_bug.cgi?id=19082
--- Comment #26 from Jaime Rave jaimerave@gmail.com 2010-01-21 12:44:48 --- Still a problem is Wine 1.1.36. Is there anything I can do to try to fix this issue?? I'm finding this problem in every PC with an Intel video card (netbooks and newest Dell laptops.).
http://bugs.winehq.org/show_bug.cgi?id=19082
Jaime Rave jaimerave@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED
--- Comment #27 from Jaime Rave jaimerave@gmail.com 2010-04-20 11:55:21 --- Fixed by 61052164043c8ba8be9a53e29de03e4371fced0f
http://bugs.winehq.org/show_bug.cgi?id=19082
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #28 from Alexandre Julliard julliard@winehq.org 2010-05-07 13:29:30 --- Closing bugs fixed in 1.1.44.