dix: drop DeviceIntRec's activeGrab struct
Obsolete since4bc2761ad5
. This struct existed so copying a passive grab could be simply done by activeGrab = *grab and thus have a copy of the GrabPtr we'd get from various sources but still be able to check device->grab for NULL. Since4bc2761
activeGrab is a pointer itself and points to the same memory as grabinfo->grab, leaving us with the potential of dangling pointers if either calls FreeGrab() and doesn't reset the other one. There is no reader of activeGrab anyway, so simply removing it is sufficient. Note: field is merely renamed to keep the ABI. Should be removed in the future. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
7dbf61817d
commit
5363433a5c
|
@ -281,7 +281,6 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
|
|||
dev->deviceGrab.grabTime = currentTime;
|
||||
dev->deviceGrab.ActivateGrab = ActivateKeyboardGrab;
|
||||
dev->deviceGrab.DeactivateGrab = DeactivateKeyboardGrab;
|
||||
dev->deviceGrab.activeGrab = AllocGrab();
|
||||
dev->deviceGrab.sync.event = calloc(1, sizeof(DeviceEvent));
|
||||
|
||||
XkbSetExtension(dev, ProcessKeyboardEvent);
|
||||
|
@ -977,7 +976,8 @@ CloseDevice(DeviceIntPtr dev)
|
|||
}
|
||||
}
|
||||
|
||||
FreeGrab(dev->deviceGrab.activeGrab);
|
||||
if (dev->deviceGrab.grab)
|
||||
FreeGrab(dev->deviceGrab.grab);
|
||||
free(dev->deviceGrab.sync.event);
|
||||
free(dev->config_info); /* Allocated in xf86ActivateDevice. */
|
||||
free(dev->last.scroll);
|
||||
|
|
14
dix/events.c
14
dix/events.c
|
@ -1490,8 +1490,9 @@ ActivatePointerGrab(DeviceIntPtr mouse, GrabPtr grab,
|
|||
grabinfo->grabTime = time;
|
||||
if (grab->cursor)
|
||||
grab->cursor->refcnt++;
|
||||
CopyGrab(grabinfo->activeGrab, grab);
|
||||
grabinfo->grab = grabinfo->activeGrab;
|
||||
BUG_WARN(grabinfo->grab != NULL);
|
||||
grabinfo->grab = AllocGrab();
|
||||
CopyGrab(grabinfo->grab, grab);
|
||||
grabinfo->fromPassiveGrab = isPassive;
|
||||
grabinfo->implicitGrab = autoGrab & ImplicitGrabMask;
|
||||
PostNewCursor(mouse);
|
||||
|
@ -1554,6 +1555,8 @@ DeactivatePointerGrab(DeviceIntPtr mouse)
|
|||
ReattachToOldMaster(mouse);
|
||||
|
||||
ComputeFreezes();
|
||||
|
||||
FreeGrab(grab);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1591,8 +1594,9 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time,
|
|||
grabinfo->grabTime = syncEvents.time;
|
||||
else
|
||||
grabinfo->grabTime = time;
|
||||
CopyGrab(grabinfo->activeGrab, grab);
|
||||
grabinfo->grab = grabinfo->activeGrab;
|
||||
BUG_WARN(grabinfo->grab != NULL);
|
||||
grabinfo->grab = AllocGrab();
|
||||
CopyGrab(grabinfo->grab, grab);
|
||||
grabinfo->fromPassiveGrab = passive;
|
||||
grabinfo->implicitGrab = passive & ImplicitGrabMask;
|
||||
CheckGrabForSyncs(keybd, (Bool) grab->keyboardMode,
|
||||
|
@ -1638,6 +1642,8 @@ DeactivateKeyboardGrab(DeviceIntPtr keybd)
|
|||
ReattachToOldMaster(keybd);
|
||||
|
||||
ComputeFreezes();
|
||||
|
||||
FreeGrab(grab);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -485,7 +485,7 @@ typedef struct _GrabInfoRec {
|
|||
TimeStamp grabTime;
|
||||
Bool fromPassiveGrab; /* true if from passive grab */
|
||||
Bool implicitGrab; /* implicit from ButtonPress */
|
||||
GrabPtr activeGrab;
|
||||
GrabPtr unused; /* Kept for ABI stability, remove soon */
|
||||
GrabPtr grab;
|
||||
CARD8 activatingKey;
|
||||
void (*ActivateGrab) (DeviceIntPtr /*device */ ,
|
||||
|
|
Loading…
Reference in New Issue