[Bug 3902] Need DIB engine (Unnormal slowness in Heroes 4 (X11DRV_BitBlt?))

Wine Bugs wine-bugs at winehq.org
Fri Oct 13 16:41:11 CDT 2006


damjan.jov at gmail.com changed:

           What    |Removed                     |Added
Attachment #3761 is|0                           |1
           obsolete|                            |

------- Additional Comments From damjan.jov at gmail.com  2006-13-10 16:41 -------
Created an attachment (id=3848)
 --> (http://bugs.winehq.org/attachment.cgi?id=3848&action=view)
dirty rectangle patch, v2

Well, found out why the dirty rectangle patch sometimes crashes winecfg (a
pointer is sometimes NULL), so I posted a new patch that doesn't crash crash.
It's against wine-0.9.23, but it should apply cleanly to 0.9.22 (since the
0.9.22 patch applies cleanly against 0.9.23).

As far as the client-side DIB copy patch goes, the width and height of the
source and destination rectangles have to be the same, otherwise X11DRV_BitBlt
(and hence my code) never gets called. I did thorough checks against the x-y
coordinates and width and height - they're always valid, positive, in-range -
perfect in every way.

But I tried to copy the original destination pixels into a buffer, then copy
pixels from source to destination, then mark the image DIB_Status_GdiMod and
coerce it to DIB_Status_InSync (forcing the image to be downloaded from the X
server again), and compare the newly downloaded image with the originally
downloaded image. The result? They differ! Somehow, the X server is modifying
the image while the pixels are being copied client-side. I've tried using
wine_tsx11_lock(), XFlush(), GdiFlush(), glFinish(), tried locking the image in
DIB_Status_AppMod or DIB_Status_InSync instead of the current DIB_Status_None,
and nothing worked.

Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.

More information about the wine-bugs mailing list