aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2012-08-23 14:01:36 +0200
committerGerd Hoffmann <kraxel@redhat.com>2012-08-23 14:01:41 +0200
commitdeca9047094c875aa50ed773c6c08ea57042db13 (patch)
tree531bdf5351331f17275637c4408369b4626a9edc
parent0957210d86be6a8daacef7dd0ac5adb1cb272b37 (diff)
downloadvconsole-deca9047094c875aa50ed773c6c08ea57042db13.tar.gz
libvirt-glib-event: run callbacks unlocked
Otherwise we'll deadlock in case the callback wants add/remove events.
-rw-r--r--libvirt-glib-event.c8
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);