diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2008-08-14 09:14:51 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2008-08-14 09:14:51 +0100 |
commit | 63befc6ab124059a8078493345d21463c4609f41 (patch) | |
tree | 1e51a52fe9e06caf23480b7e2b007a69494835ee /src/cairo-xlib-display.c | |
parent | 84a541a041c6bb22c57517e267dc7adcfd7e84dc (diff) |
[xlib] Remove the key parameter from the close display hook.
By inspecting all the users of the close display hooks, we can see that
(a) the key is redundant and (b) the data is unique to the hook. This
means we can trim the interface and stop the linear searches as soon as
we've found the correct element.
Diffstat (limited to 'src/cairo-xlib-display.c')
-rw-r--r-- | src/cairo-xlib-display.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/cairo-xlib-display.c b/src/cairo-xlib-display.c index cdae8c92..895258d3 100644 --- a/src/cairo-xlib-display.c +++ b/src/cairo-xlib-display.c @@ -326,7 +326,7 @@ UNLOCK: } cairo_bool_t -_cairo_xlib_add_close_display_hook (Display *dpy, void (*func) (Display *, void *), void *data, const void *key) +_cairo_xlib_add_close_display_hook (Display *dpy, void (*func) (Display *, void *), void *data) { cairo_xlib_display_t *display; cairo_xlib_hook_t *hook; @@ -342,7 +342,6 @@ _cairo_xlib_add_close_display_hook (Display *dpy, void (*func) (Display *, void if (hook != NULL) { hook->func = func; hook->data = data; - hook->key = key; hook->next = display->close_display_hooks; display->close_display_hooks = hook; @@ -357,7 +356,7 @@ _cairo_xlib_add_close_display_hook (Display *dpy, void (*func) (Display *, void } void -_cairo_xlib_remove_close_display_hooks (Display *dpy, const void *key) +_cairo_xlib_remove_close_display_hooks (Display *dpy, const void *data) { cairo_xlib_display_t *display; cairo_xlib_hook_t *hook, *next, **prev; @@ -370,13 +369,13 @@ _cairo_xlib_remove_close_display_hooks (Display *dpy, const void *key) prev = &display->close_display_hooks; for (hook = display->close_display_hooks; hook != NULL; hook = next) { next = hook->next; - if (hook->key == key) { + if (hook->data == data) { *prev = hook->next; _cairo_freelist_free (&display->hook_freelist, hook); - } else - prev = &hook->next; + break; + } + prev = &hook->next; } - *prev = NULL; CAIRO_MUTEX_UNLOCK (display->mutex); _cairo_xlib_display_destroy (display); |