Please HELP, info required about 'DIB_Status_GdiMod' and 'DIB_Status_AppMod'
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! Iulian
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
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(a)codeweavers.com> To: Marinescu-Ghetau Iulian <giulian2003(a)hotmail.com> CC: wine-devel(a)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
Marinescu-Ghetau Iulian wrote:
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 !
You can't really speed up the uploading of bitmaps to the X server when the state has been changed to DIB_Status_AppMod since you can't tell what has changed, but I do think your idea is good for downloading the bitmap from the X server when in the GDI state. I would maybe suggest making the changed rect an argument to the coerce function though so it isn't possible for GDI functions to forget to do it before calling coerce. -- Rob Shearman
participants (2)
-
Marinescu-Ghetau Iulian -
Robert Shearman