dix: Rework Enter/Leave semaphore system.
Instead of a simple counter, use bits to keep track of which device is where etc. When device enters a window (or sets focus), the bit matching the device is set, when it leaves again, it is unset. If there are 0 bits set, then Leave/Enter/Focus events may be sent to the client. Same theory as before, but this should get around the insanity with Grab/Ungrab special cases. Those cases are basically untested though.
This commit is contained in:
@@ -366,6 +366,7 @@ CreateRootWindow(ScreenPtr pScreen)
|
||||
WindowPtr pWin;
|
||||
BoxRec box;
|
||||
PixmapFormatRec *format;
|
||||
FocusSemaphoresPtr sem;
|
||||
|
||||
pWin = (WindowPtr)xalloc(sizeof(WindowRec));
|
||||
if (!pWin)
|
||||
@@ -484,6 +485,7 @@ CreateRootWindow(ScreenPtr pScreen)
|
||||
|
||||
if (disableSaveUnders)
|
||||
pScreen->saveUnderSupport = NotUseful;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user