diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2012-08-23 14:01:36 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2012-08-23 14:01:41 +0200 |
commit | deca9047094c875aa50ed773c6c08ea57042db13 (patch) | |
tree | 531bdf5351331f17275637c4408369b4626a9edc /libvirt-glib-event.c | |
parent | 0957210d86be6a8daacef7dd0ac5adb1cb272b37 (diff) | |
download | vconsole-deca9047094c875aa50ed773c6c08ea57042db13.tar.gz |
libvirt-glib-event: run callbacks unlocked
Otherwise we'll deadlock in case the callback wants add/remove events.
Diffstat (limited to 'libvirt-glib-event.c')
-rw-r--r-- | libvirt-glib-event.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libvirt-glib-event.c b/libvirt-glib-event.c index 7411c9b..851fc46 100644 --- a/libvirt-glib-event.c +++ b/libvirt-glib-event.c @@ -247,11 +247,11 @@ _event_handle_remove(gpointer data) { struct gvir_event_handle *h = data; - g_mutex_lock(eventlock); - if (h->ff) (h->ff)(h->opaque); + g_mutex_lock(eventlock); + g_ptr_array_remove_fast(handles, h); g_mutex_unlock(eventlock); @@ -396,11 +396,11 @@ _event_timeout_remove(gpointer data) { struct gvir_event_timeout *t = data; - g_mutex_lock(eventlock); - if (t->ff) (t->ff)(t->opaque); + g_mutex_lock(eventlock); + g_ptr_array_remove_fast(timeouts, t); g_mutex_unlock(eventlock); |