diff options
author | Fabiano Fidêncio <fidencio@redhat.com> | 2015-07-22 02:51:49 +0200 |
---|---|---|
committer | Fabiano Fidêncio <fidencio@redhat.com> | 2016-01-05 21:28:43 +0100 |
commit | 0a0ed48cde296194fbb9c319ac1c7625a5550787 (patch) | |
tree | acf31e896d65b994805c8d081f0a97db3f89b674 | |
parent | 0426fcd3c7951f5eb985e519de1782610e12efd8 (diff) |
events: register event using GOnce to avoid multiple initializations
Based on commit 8f8d9ce5238dbcbce40aa04ba55b8c55f97c79c0 from
libvirt-glib.
Original author: Marc-André Lureau <marcandre.lureau@redhat.com>
Related to: rhbz#1243228
(cherry picked from commit 0a464aae9a764c404ea76fe2212d45e5b2d87d2f)
-rw-r--r-- | src/virt-viewer-events.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/virt-viewer-events.c b/src/virt-viewer-events.c index f767c2e..daf128e 100644 --- a/src/virt-viewer-events.c +++ b/src/virt-viewer-events.c @@ -392,8 +392,8 @@ cleanup: return ret; } - -void virt_viewer_events_register(void) { +static gpointer event_register_once(gpointer data G_GNUC_UNUSED) +{ eventlock = g_mutex_new(); virEventRegisterImpl(virt_viewer_events_add_handle, virt_viewer_events_update_handle, @@ -401,6 +401,14 @@ void virt_viewer_events_register(void) { virt_viewer_events_add_timeout, virt_viewer_events_update_timeout, virt_viewer_events_remove_timeout); + + return NULL; +} + +void virt_viewer_events_register(void) { + static GOnce once = G_ONCE_INIT; + + g_once(&once, event_register_once, NULL); } /* |