Lines 136-156
Link Here
|
136 |
ret = (*pScreen->DisplayCursor) (pScreen, pCursor); |
136 |
ret = (*pScreen->DisplayCursor) (pScreen, pCursor); |
137 |
} |
137 |
} |
138 |
|
138 |
|
139 |
if (pCursor != CursorCurrent) |
139 |
if (pCursor != CursorCurrent) |
140 |
{ |
140 |
{ |
141 |
CursorEventPtr e; |
141 |
CursorEventPtr e; |
142 |
|
142 |
|
143 |
CursorCurrent = pCursor; |
143 |
CursorCurrent = pCursor; |
144 |
for (e = cursorEvents; e; e = e->next) |
144 |
for (e = cursorEvents; e; e = e->next) |
145 |
{ |
145 |
{ |
146 |
if (e->eventMask & XFixesDisplayCursorNotifyMask) |
146 |
if ((e->eventMask & XFixesDisplayCursorNotifyMask) && |
|
|
147 |
!e->pClient->clientGone) |
147 |
{ |
148 |
{ |
148 |
xXFixesCursorNotifyEvent ev; |
149 |
xXFixesCursorNotifyEvent ev; |
149 |
ev.type = XFixesEventBase + XFixesCursorNotify; |
150 |
ev.type = XFixesEventBase + XFixesCursorNotify; |
150 |
ev.subtype = XFixesDisplayCursorNotify; |
151 |
ev.subtype = XFixesDisplayCursorNotify; |
151 |
ev.sequenceNumber = e->pClient->sequence; |
152 |
ev.sequenceNumber = e->pClient->sequence; |
152 |
ev.window = e->pWindow->drawable.id; |
153 |
ev.window = e->pWindow->drawable.id; |
153 |
ev.cursorSerial = pCursor->serialNumber; |
154 |
ev.cursorSerial = pCursor->serialNumber; |
154 |
ev.timestamp = currentTime.milliseconds; |
155 |
ev.timestamp = currentTime.milliseconds; |
155 |
ev.name = pCursor->name; |
156 |
ev.name = pCursor->name; |
156 |
WriteEventsToClient (e->pClient, 1, (xEvent *) &ev); |
157 |
WriteEventsToClient (e->pClient, 1, (xEvent *) &ev); |