Hi there,
Thanks alot for all the information, it helped me a great deal in understanding the problem and trying to solve it! I would like to ask you one more thing: if its not too much trouble for you, could you have a look over the few lines i wrote at "http://bugs.winehq.org/show_bug.cgi?id=3902#c4" and tell me what you think ? I found a way to fix the Bug and improve general bitmaps performance and wanted to know if it could work, before i start coding !
Iulian
From: Robert Shearman rob@codeweavers.com To: Marinescu-Ghetau Iulian giulian2003@hotmail.com CC: wine-devel@winehq.org Subject: Re: Please HELP, info required about 'DIB_Status_GdiMod' and 'DIB_Status_AppMod' Date: Tue, 29 Nov 2005 11:25:23 -0600
Marinescu-Ghetau Iulian wrote:
Hello,
Could anyone give me some more info on X11DRV_CoerceDIBSection function and the logic behind using 'DIB_Status_GdiMod' and 'DIB_Status_AppMod' stats? I am trying to repair a bug (3902) that has to do with application waiting exccessivly on some locks and i am kind of lost ;( Any help would be greatly appreciated!
That code is designed to keep DIBs sync'ed between applications and the X server. When the application does a Win32 GDI call then the state of the DIB gets set to DIB_Status_GdiMod and the memory that backs the DIB is set to no-access so that a page fault occurs if the application tries to read it. A handler detects this and downloads the DIB from the X server and sets the state to DIB_Status_None. In this state the DIB memory is set to read-only, so that a page fault occurs if the application tries to write it. The same handler also detects this and consequentially sets the DIB state to DIB_Status_AppMod and allows full access to the DIB memory.
If this doesn't answer help with your bug then you'll have to be more specific.
-- Rob Shearman