diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2011-11-03 15:45:34 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2011-11-29 15:12:43 +1000 |
commit | ee9346bb31efce4036df1b8dd8f1a5dc43ae955a (patch) | |
tree | e8e0821aca9b864719c8fe5e761c43a92cba0367 | |
parent | 4acf999c294868a44e559d212c6d88a4978256b2 (diff) |
Xi: add helper functions to alloc/free InputClientPtrs
Currently not needed since the InputClientRec is a self-contained struct. As
part of the touch rework that won't be the case in the future and a function
to allocate/free memory appropriately is required.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
-rw-r--r-- | Xi/exevents.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/Xi/exevents.c b/Xi/exevents.c index 53db03629..f53031013 100644 --- a/Xi/exevents.c +++ b/Xi/exevents.c @@ -1628,6 +1628,19 @@ SelectForWindow(DeviceIntPtr dev, WindowPtr pWin, ClientPtr client, return Success; } +static void +FreeInputClient(InputClientsPtr *other) +{ + free(*other); + *other = NULL; +} + +static InputClientsPtr +AllocInputClient(void) +{ + return calloc(1, sizeof(InputClients)); +} + int AddExtensionClient(WindowPtr pWin, ClientPtr client, Mask mask, int mskidx) { @@ -1635,7 +1648,7 @@ AddExtensionClient(WindowPtr pWin, ClientPtr client, Mask mask, int mskidx) if (!pWin->optional && !MakeWindowOptional(pWin)) return BadAlloc; - others = calloc(1, sizeof(InputClients)); + others = AllocInputClient(); if (!others) return BadAlloc; if (!pWin->optional->inputMasks && !MakeInputMasks(pWin)) @@ -1649,7 +1662,7 @@ AddExtensionClient(WindowPtr pWin, ClientPtr client, Mask mask, int mskidx) return Success; bail: - free(others); + FreeInputClient(&others); return BadAlloc; } @@ -1721,14 +1734,14 @@ InputClientGone(WindowPtr pWin, XID id) if (other->resource == id) { if (prev) { prev->next = other->next; - free(other); + FreeInputClient(&other); } else if (!(other->next)) { if (ShouldFreeInputMasks(pWin, TRUE)) { wOtherInputMasks(pWin)->inputClients = other->next; free(wOtherInputMasks(pWin)); pWin->optional->inputMasks = (OtherInputMasks *) NULL; CheckWindowOptionalNeed(pWin); - free(other); + FreeInputClient(&other); } else { other->resource = FakeClientID(0); if (!AddResource(other->resource, RT_INPUTCLIENT, @@ -1737,7 +1750,7 @@ InputClientGone(WindowPtr pWin, XID id) } } else { wOtherInputMasks(pWin)->inputClients = other->next; - free(other); + FreeInputClient(&other); } RecalculateDeviceDeliverableEvents(pWin); return Success; |