From 8e5a12b869e31407dbbe11f5e8117aaba9ca0ef2 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Sun, 19 May 2019 15:46:09 -0400 Subject: [PATCH] And changed unusedIDs to use uiprivArray. Now we can transplant this into testing. --- common/events.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/common/events.c b/common/events.c index 309c1c4e..77dcde9c 100644 --- a/common/events.c +++ b/common/events.c @@ -28,9 +28,7 @@ static int handlerCmp(const void *a, const void *b) struct uiEvent { uiEventOptions opts; uiprivArray handlers; - int *unusedIDs; - size_t unusedIDsLen; - size_t unusedIDsCap; + uiprivArray unusedIDs; bool firing; }; @@ -49,6 +47,7 @@ uiEvent *uiNewEvent(const uiEventOptions *options) e = (uiEvent *) uiprivAlloc(sizeof (uiEvent), "uiEvent"); e->opts = *options; uiprivArrayInit(e->handlers, struct handler, 32, "uiEvent handlers"); + uiprivArrayInit(e->unusedIDs, int, 32, "uiEvent handler unused IDs"); return e; } @@ -89,9 +88,12 @@ int uiEventAddHandler(uiEvent *e, uiEventHandler handler, void *sender, void *da return 0; id = 0; - if (e->unusedIDsLen > 0) { - id = e->unusedIDs[e->unusedIDsLen - 1]; - e->unusedIDsLen--; + if (e->unusedIDs.len > 0) { + int *p; + + p = uiprivArrayAt(e->unusedIDs, int, e->unusedIDs.len - 1); + id = *p; + uiprivArrayDeleteItem(&(e->unusedIDs), p, 1); } else if (e->handlers.len != 0) id = uiprivArrayAt(e->handlers, struct handler, e->handlers.len - 1)->id + 1; @@ -128,16 +130,7 @@ void uiEventDeleteHandler(uiEvent *e, int id) return; uiprivArrayDeleteItem(&(e->handlers), h, 1); - - if (e->unusedIDsLen >= e->unusedIDsCap) { - e->unusedIDs = (int *) uiprivRealloc(e->unusedIDs, - e->unusedIDsCap * sizeof (int), - (e->unusedIDsCap + 32) * sizeof (int), - "uiEvent handler unused IDs"); - e->unusedIDsCap += 32; - } - e->unusedIDs[e->unusedIDsLen] = id; - e->unusedIDsLen++; + *((int *) uiprivArrayAppend(&(e->unusedIDs), 1)) = id; } void uiEventFire(uiEvent *e, void *sender, void *args)