summaryrefslogtreecommitdiff
path: root/src/cairo-xlib-display.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2008-08-14 09:14:51 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2008-08-14 09:14:51 +0100
commit63befc6ab124059a8078493345d21463c4609f41 (patch)
tree1e51a52fe9e06caf23480b7e2b007a69494835ee /src/cairo-xlib-display.c
parent84a541a041c6bb22c57517e267dc7adcfd7e84dc (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.c13
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);