http://bugs.winehq.org/show_bug.cgi?id=32058
--- Comment #10 from x.egam.wodahs.x@gmail.com 2012-11-25 16:34:36 CST --- So I'm currently using wine 1.5.18 with 6f3b097a203d9ca248732cb45eed462599ca3af1 reverted (the same commit mentioned in Comment 9, which is also the "first bad" commit of the 2nd git bisect from the initial report). Reverting this commit and compiling from source (and using -dx9single) is the only way I can run GW2 with wine 1.5.15 or higher. I know this isn't really news, just a status update I guess.
However, in an attempt to help get this fixed, I have taken a closer look at the diff of the commit
diff --git a/dlls/winex11.drv/bitblt.c b/dlls/winex11.drv/bitblt.c index ceecb0c..36e3ac9 100644 --- a/dlls/winex11.drv/bitblt.c +++ b/dlls/winex11.drv/bitblt.c @@ -1676,8 +1676,8 @@ static void update_surface_region( struct x11drv_window_surface *surface ) (surface->is_argb && !(bits[x] & 0xff000000)))) x++; start = x; while (x < width && - ((bits[x] & 0xffffff) != surface->color_key || - !(surface->is_argb && !(bits[x] & 0xff000000)))) x++; + !((bits[x] & 0xffffff) == surface->color_key || + (surface->is_argb && !(bits[x] & 0xff000000)))) x++; add_row( rgn, data, surface->header.rect.left + start, y, x - start ); } }
and can't help but wonder: was the condition in the while loop intentionally changed, or was the intention just to re-write it? I don't know enough about the wine source to understand the condition, but I would like to note that they are different, which is why reverting this commit makes GW2 work for me again.
If we simplify the condition by using letters a, b, c, d, then we can see the difference more easily: before: (x < width && (a != b || !(c && !d))) after: (x < width && !(a == b || (c && !d)))
In order for these to be the same, the second one would instead need to be for example (x < width && !(a == b && (c && !d)))
If the condition change was intentional, any ideas what may be the cause of the new one not working on my system? Here's some info (I can provide more info upon request) about my system: Operating System: Ubuntu 12.04 64-bit Graphics card: GeForce GTX 560 Ti NVIDIA Driver Version: 304.43