Unverified Commit bf08b996 authored by Mike Gabriel's avatar Mike Gabriel

Merge branch 'sunweaver-pr/writeeventstoclients-no-sequencenumber' into 3.6.x

Attributes GH PR #177: https://github.com/ArcticaProject/nx-libs/pull/177 Reviewed by: Vadim Troshchinskiy <vadim@qindel.com> -- Tue, 05 Jul 2016 00:02:17 -0700
parents 320a8cc0 cb0089ba
...@@ -447,7 +447,6 @@ SendScreenSaverNotify (pScreen, state, forced) ...@@ -447,7 +447,6 @@ SendScreenSaverNotify (pScreen, state, forced)
ScreenSaverEventPtr pEv; ScreenSaverEventPtr pEv;
unsigned long mask; unsigned long mask;
xScreenSaverNotifyEvent ev; xScreenSaverNotifyEvent ev;
ClientPtr client;
int kind; int kind;
UpdateCurrentTimeIf (); UpdateCurrentTimeIf ();
...@@ -466,20 +465,16 @@ SendScreenSaverNotify (pScreen, state, forced) ...@@ -466,20 +465,16 @@ SendScreenSaverNotify (pScreen, state, forced)
kind = ScreenSaverInternal; kind = ScreenSaverInternal;
for (pEv = pPriv->events; pEv; pEv = pEv->next) for (pEv = pPriv->events; pEv; pEv = pEv->next)
{ {
client = pEv->client;
if (client->clientGone)
continue;
if (!(pEv->mask & mask)) if (!(pEv->mask & mask))
continue; continue;
ev.type = ScreenSaverNotify + ScreenSaverEventBase; ev.type = ScreenSaverNotify + ScreenSaverEventBase;
ev.state = state; ev.state = state;
ev.sequenceNumber = client->sequence;
ev.timestamp = currentTime.milliseconds; ev.timestamp = currentTime.milliseconds;
ev.root = pScreen->root->drawable.id; ev.root = pScreen->root->drawable.id;
ev.window = savedScreenInfo[pScreen->myNum].wid; ev.window = savedScreenInfo[pScreen->myNum].wid;
ev.kind = kind; ev.kind = kind;
ev.forced = forced; ev.forced = forced;
WriteEventsToClient (client, 1, (xEvent *) &ev); WriteEventsToClient (pEv->client, 1, (xEvent *) &ev);
} }
} }
......
...@@ -309,16 +309,10 @@ SecurityDeleteAuthorization( ...@@ -309,16 +309,10 @@ SecurityDeleteAuthorization(
while ((pEventClient = pAuth->eventClients)) while ((pEventClient = pAuth->eventClients))
{ {
/* send revocation event event */ /* send revocation event event */
ClientPtr client = rClient(pEventClient);
if (!client->clientGone)
{
xSecurityAuthorizationRevokedEvent are; xSecurityAuthorizationRevokedEvent are;
are.type = SecurityEventBase + XSecurityAuthorizationRevoked; are.type = SecurityEventBase + XSecurityAuthorizationRevoked;
are.sequenceNumber = client->sequence;
are.authId = pAuth->id; are.authId = pAuth->id;
WriteEventsToClient(client, 1, (xEvent *)&are); WriteEventsToClient(rClient(pEventClient), 1, (xEvent *)&are);
}
FreeResource(pEventClient->resource, RT_NONE); FreeResource(pEventClient->resource, RT_NONE);
} }
......
...@@ -915,7 +915,6 @@ SendShapeNotify (pWin, which) ...@@ -915,7 +915,6 @@ SendShapeNotify (pWin, which)
int which; int which;
{ {
ShapeEventPtr *pHead, pShapeEvent; ShapeEventPtr *pHead, pShapeEvent;
ClientPtr client;
xShapeNotifyEvent se; xShapeNotifyEvent se;
BoxRec extents; BoxRec extents;
RegionPtr region; RegionPtr region;
...@@ -968,20 +967,16 @@ SendShapeNotify (pWin, which) ...@@ -968,20 +967,16 @@ SendShapeNotify (pWin, which)
return; return;
} }
for (pShapeEvent = *pHead; pShapeEvent; pShapeEvent = pShapeEvent->next) { for (pShapeEvent = *pHead; pShapeEvent; pShapeEvent = pShapeEvent->next) {
client = pShapeEvent->client;
if (client == serverClient || client->clientGone)
continue;
se.type = ShapeNotify + ShapeEventBase; se.type = ShapeNotify + ShapeEventBase;
se.kind = which; se.kind = which;
se.window = pWin->drawable.id; se.window = pWin->drawable.id;
se.sequenceNumber = client->sequence;
se.x = extents.x1; se.x = extents.x1;
se.y = extents.y1; se.y = extents.y1;
se.width = extents.x2 - extents.x1; se.width = extents.x2 - extents.x1;
se.height = extents.y2 - extents.y1; se.height = extents.y2 - extents.y1;
se.time = currentTime.milliseconds; se.time = currentTime.milliseconds;
se.shaped = shaped; se.shaped = shaped;
WriteEventsToClient (client, 1, (xEvent *) &se); WriteEventsToClient (pShapeEvent->client, 1, (xEvent *) &se);
} }
} }
......
...@@ -928,7 +928,6 @@ ProcShmPutImage(client) ...@@ -928,7 +928,6 @@ ProcShmPutImage(client)
ev.type = ShmCompletionCode; ev.type = ShmCompletionCode;
ev.drawable = stuff->drawable; ev.drawable = stuff->drawable;
ev.sequenceNumber = client->sequence;
ev.minorEvent = X_ShmPutImage; ev.minorEvent = X_ShmPutImage;
ev.majorEvent = ShmReqCode; ev.majorEvent = ShmReqCode;
ev.shmseg = stuff->shmseg; ev.shmseg = stuff->shmseg;
......
...@@ -545,7 +545,6 @@ SyncSendAlarmNotifyEvents(pAlarm) ...@@ -545,7 +545,6 @@ SyncSendAlarmNotifyEvents(pAlarm)
ane.type = SyncEventBase + XSyncAlarmNotify; ane.type = SyncEventBase + XSyncAlarmNotify;
ane.kind = XSyncAlarmNotify; ane.kind = XSyncAlarmNotify;
ane.sequenceNumber = pAlarm->client->sequence;
ane.alarm = pAlarm->alarm_id; ane.alarm = pAlarm->alarm_id;
if (pTrigger->pCounter) if (pTrigger->pCounter)
{ {
...@@ -563,18 +562,12 @@ SyncSendAlarmNotifyEvents(pAlarm) ...@@ -563,18 +562,12 @@ SyncSendAlarmNotifyEvents(pAlarm)
ane.state = pAlarm->state; ane.state = pAlarm->state;
/* send to owner */ /* send to owner */
if (pAlarm->events && !pAlarm->client->clientGone) if (pAlarm->events)
WriteEventsToClient(pAlarm->client, 1, (xEvent *) &ane); WriteEventsToClient(pAlarm->client, 1, (xEvent *) &ane);
/* send to other interested clients */ /* send to other interested clients */
for (pcl = pAlarm->pEventClients; pcl; pcl = pcl->next) for (pcl = pAlarm->pEventClients; pcl; pcl = pcl->next)
{
if (!pAlarm->client->clientGone)
{
ane.sequenceNumber = pcl->client->sequence;
WriteEventsToClient(pcl->client, 1, (xEvent *) &ane); WriteEventsToClient(pcl->client, 1, (xEvent *) &ane);
}
}
} }
...@@ -602,7 +595,6 @@ SyncSendCounterNotifyEvents(client, ppAwait, num_events) ...@@ -602,7 +595,6 @@ SyncSendCounterNotifyEvents(client, ppAwait, num_events)
SyncTrigger *pTrigger = &(*ppAwait)->trigger; SyncTrigger *pTrigger = &(*ppAwait)->trigger;
pev->type = SyncEventBase + XSyncCounterNotify; pev->type = SyncEventBase + XSyncCounterNotify;
pev->kind = XSyncCounterNotify; pev->kind = XSyncCounterNotify;
pev->sequenceNumber = client->sequence;
pev->counter = pTrigger->pCounter->id; pev->counter = pTrigger->pCounter->id;
pev->wait_value_lo = XSyncValueLow32(pTrigger->test_value); pev->wait_value_lo = XSyncValueLow32(pTrigger->test_value);
pev->wait_value_hi = XSyncValueHigh32(pTrigger->test_value); pev->wait_value_hi = XSyncValueHigh32(pTrigger->test_value);
......
...@@ -1205,7 +1205,6 @@ ProcXvShmPutImage(ClientPtr client) ...@@ -1205,7 +1205,6 @@ ProcXvShmPutImage(ClientPtr client)
ev.type = ShmCompletionCode; ev.type = ShmCompletionCode;
ev.drawable = stuff->drawable; ev.drawable = stuff->drawable;
ev.sequenceNumber = client->sequence;
ev.minorEvent = xv_ShmPutImage; ev.minorEvent = xv_ShmPutImage;
ev.majorEvent = XvReqCode; ev.majorEvent = XvReqCode;
ev.shmseg = stuff->shmseg; ev.shmseg = stuff->shmseg;
......
...@@ -69,7 +69,6 @@ DamageExtNotify (DamageExtPtr pDamageExt, BoxPtr pBoxes, int nBoxes) ...@@ -69,7 +69,6 @@ DamageExtNotify (DamageExtPtr pDamageExt, BoxPtr pBoxes, int nBoxes)
ev.area.y = pBoxes[i].y1; ev.area.y = pBoxes[i].y1;
ev.area.width = pBoxes[i].x2 - pBoxes[i].x1; ev.area.width = pBoxes[i].x2 - pBoxes[i].x1;
ev.area.height = pBoxes[i].y2 - pBoxes[i].y1; ev.area.height = pBoxes[i].y2 - pBoxes[i].y1;
if (!pClient->clientGone)
WriteEventsToClient (pClient, 1, (xEvent *) &ev); WriteEventsToClient (pClient, 1, (xEvent *) &ev);
} }
} }
...@@ -79,7 +78,6 @@ DamageExtNotify (DamageExtPtr pDamageExt, BoxPtr pBoxes, int nBoxes) ...@@ -79,7 +78,6 @@ DamageExtNotify (DamageExtPtr pDamageExt, BoxPtr pBoxes, int nBoxes)
ev.area.y = 0; ev.area.y = 0;
ev.area.width = pDrawable->width; ev.area.width = pDrawable->width;
ev.area.height = pDrawable->height; ev.area.height = pDrawable->height;
if (!pClient->clientGone)
WriteEventsToClient (pClient, 1, (xEvent *) &ev); WriteEventsToClient (pClient, 1, (xEvent *) &ev);
} }
/* Composite extension marks clients with manual Subwindows as critical */ /* Composite extension marks clients with manual Subwindows as critical */
......
...@@ -3953,7 +3953,6 @@ SendErrorToClient(ClientPtr client, unsigned majorCode, unsigned minorCode, ...@@ -3953,7 +3953,6 @@ SendErrorToClient(ClientPtr client, unsigned majorCode, unsigned minorCode,
memset(&rep, 0, sizeof(xError)); memset(&rep, 0, sizeof(xError));
rep.type = X_Error; rep.type = X_Error;
rep.sequenceNumber = client->sequence;
rep.errorCode = errorCode; rep.errorCode = errorCode;
rep.majorCode = majorCode; rep.majorCode = majorCode;
rep.minorCode = minorCode; rep.minorCode = minorCode;
......
...@@ -1546,14 +1546,6 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask, ...@@ -1546,14 +1546,6 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
return 1; return 1;
} }
#endif #endif
type &= 0177;
if (type != KeymapNotify)
{
/* all extension events must have a sequence number */
for (i = 0; i < count; i++)
pEvents[i].u.u.sequenceNumber = client->sequence;
}
if (BitIsOn(criticalEvents, type)) if (BitIsOn(criticalEvents, type))
{ {
#ifdef SMART_SCHEDULE #ifdef SMART_SCHEDULE
...@@ -4439,6 +4431,13 @@ WriteEventsToClient(ClientPtr pClient, int count, xEvent *events) ...@@ -4439,6 +4431,13 @@ WriteEventsToClient(ClientPtr pClient, int count, xEvent *events)
xEvent eventTo, *eventFrom; xEvent eventTo, *eventFrom;
int i; int i;
if (!pClient || pClient == serverClient || pClient->clientGone)
return;
for (i = 0; i < count; i++)
if ((events[i].u.u.type & 0x7f) != KeymapNotify)
events[i].u.u.sequenceNumber = pClient->sequence;
#ifdef XKB #ifdef XKB
if ((!noXkbExtension)&&(!XkbFilterEvents(pClient, count, events))) if ((!noXkbExtension)&&(!XkbFilterEvents(pClient, count, events)))
return; return;
......
...@@ -859,14 +859,16 @@ SetCriticalOutputPending(void) ...@@ -859,14 +859,16 @@ SetCriticalOutputPending(void)
int int
WriteToClient (ClientPtr who, int count, char *buf) WriteToClient (ClientPtr who, int count, char *buf)
{ {
OsCommPtr oc = (OsCommPtr)who->osPrivate; OsCommPtr oc;
ConnectionOutputPtr oco = oc->output; ConnectionOutputPtr oco;
int padBytes; int padBytes;
#ifdef DEBUG_COMMUNICATION #ifdef DEBUG_COMMUNICATION
Bool multicount = FALSE; Bool multicount = FALSE;
#endif #endif
if (!count) if (!count || !who || who == serverClient || who->clientGone)
return(0); return(0);
oc = who->osPrivate;
oco = oc->output;
#ifdef DEBUG_COMMUNICATION #ifdef DEBUG_COMMUNICATION
{ {
char info[128]; char info[128];
......
...@@ -274,9 +274,6 @@ RRDeliverCrtcEvent(ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc) ...@@ -274,9 +274,6 @@ RRDeliverCrtcEvent(ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc)
xRRCrtcChangeNotifyEvent ce = { xRRCrtcChangeNotifyEvent ce = {
.type = RRNotify + RREventBase, .type = RRNotify + RREventBase,
.subCode = RRNotify_CrtcChange, .subCode = RRNotify_CrtcChange,
#ifdef NXAGENT_SERVER
.sequenceNumber = client->sequence,
#endif
.timestamp = pScrPriv->lastSetTime.milliseconds, .timestamp = pScrPriv->lastSetTime.milliseconds,
.window = pWin->drawable.id, .window = pWin->drawable.id,
.crtc = crtc->id, .crtc = crtc->id,
......
...@@ -351,9 +351,6 @@ RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output) ...@@ -351,9 +351,6 @@ RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output)
xRROutputChangeNotifyEvent oe = { xRROutputChangeNotifyEvent oe = {
.type = RRNotify + RREventBase, .type = RRNotify + RREventBase,
.subCode = RRNotify_OutputChange, .subCode = RRNotify_OutputChange,
#ifdef NXAGENT_SERVER
.sequenceNumber = client->sequence,
#endif
.timestamp = pScrPriv->lastSetTime.milliseconds, .timestamp = pScrPriv->lastSetTime.milliseconds,
.configTimestamp = pScrPriv->lastConfigTime.milliseconds, .configTimestamp = pScrPriv->lastConfigTime.milliseconds,
.window = pWin->drawable.id, .window = pWin->drawable.id,
......
...@@ -43,9 +43,6 @@ DeliverPropertyEvent(WindowPtr pWin, void *value) ...@@ -43,9 +43,6 @@ DeliverPropertyEvent(WindowPtr pWin, void *value)
if (!(pRREvent->mask & RROutputPropertyNotifyMask)) if (!(pRREvent->mask & RROutputPropertyNotifyMask))
continue; continue;
#ifdef NXAGENT_SERVER
event->sequenceNumber = pRREvent->client->sequence;
#endif
event->window = pRREvent->window->drawable.id; event->window = pRREvent->window->drawable.id;
WriteEventsToClient(pRREvent->client, 1, (xEvent *) event); WriteEventsToClient(pRREvent->client, 1, (xEvent *) event);
} }
......
...@@ -111,9 +111,6 @@ RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen) ...@@ -111,9 +111,6 @@ RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen)
xRRScreenChangeNotifyEvent se = { xRRScreenChangeNotifyEvent se = {
.type = RRScreenChangeNotify + RREventBase, .type = RRScreenChangeNotify + RREventBase,
#ifdef NXAGENT_SERVER
.sequenceNumber = client->sequence,
#endif
.rotation = (CARD8) (crtc ? crtc->rotation : RR_Rotate_0), .rotation = (CARD8) (crtc ? crtc->rotation : RR_Rotate_0),
.timestamp = pScrPriv->lastSetTime.milliseconds, .timestamp = pScrPriv->lastSetTime.milliseconds,
.configTimestamp = pScrPriv->lastConfigTime.milliseconds, .configTimestamp = pScrPriv->lastConfigTime.milliseconds,
......
...@@ -96,13 +96,11 @@ CursorDisplayCursor (ScreenPtr pScreen, ...@@ -96,13 +96,11 @@ CursorDisplayCursor (ScreenPtr pScreen,
CursorCurrent = pCursor; CursorCurrent = pCursor;
for (e = cursorEvents; e; e = e->next) for (e = cursorEvents; e; e = e->next)
{ {
if ((e->eventMask & XFixesDisplayCursorNotifyMask) && if ((e->eventMask & XFixesDisplayCursorNotifyMask))
!e->pClient->clientGone)
{ {
xXFixesCursorNotifyEvent ev; xXFixesCursorNotifyEvent ev;
ev.type = XFixesEventBase + XFixesCursorNotify; ev.type = XFixesEventBase + XFixesCursorNotify;
ev.subtype = XFixesDisplayCursorNotify; ev.subtype = XFixesDisplayCursorNotify;
ev.sequenceNumber = e->pClient->sequence;
ev.window = e->pWindow->drawable.id; ev.window = e->pWindow->drawable.id;
ev.cursorSerial = pCursor->serialNumber; ev.cursorSerial = pCursor->serialNumber;
ev.timestamp = currentTime.milliseconds; ev.timestamp = currentTime.milliseconds;
......
...@@ -79,8 +79,7 @@ XFixesSelectionCallback (CallbackListPtr *callbacks, void * data, void * args) ...@@ -79,8 +79,7 @@ XFixesSelectionCallback (CallbackListPtr *callbacks, void * data, void * args)
for (e = selectionEvents; e; e = e->next) for (e = selectionEvents; e; e = e->next)
{ {
if (e->selection == selection->selection && if (e->selection == selection->selection &&
(e->eventMask & eventMask) && (e->eventMask & eventMask))
!e->pClient->clientGone)
{ {
xXFixesSelectionNotifyEvent ev; xXFixesSelectionNotifyEvent ev;
...@@ -88,7 +87,6 @@ XFixesSelectionCallback (CallbackListPtr *callbacks, void * data, void * args) ...@@ -88,7 +87,6 @@ XFixesSelectionCallback (CallbackListPtr *callbacks, void * data, void * args)
ev.type = XFixesEventBase + XFixesSelectionNotify; ev.type = XFixesEventBase + XFixesSelectionNotify;
ev.subtype = subtype; ev.subtype = subtype;
ev.sequenceNumber = e->pClient->sequence;
ev.window = e->pWindow->drawable.id; ev.window = e->pWindow->drawable.id;
if (subtype == XFixesSetSelectionOwnerNotify) if (subtype == XFixesSetSelectionOwnerNotify)
ev.owner = selection->window; ev.owner = selection->window;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment