aboutsummaryrefslogtreecommitdiff
path: root/ui/dbus.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui/dbus.c')
-rw-r--r--ui/dbus.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/ui/dbus.c b/ui/dbus.c
index 4f0bc29..41f1716 100644
--- a/ui/dbus.c
+++ b/ui/dbus.c
@@ -55,6 +55,27 @@ static const DisplayGLCtxOps dbus_gl_ops = {
.dpy_gl_ctx_make_current = qemu_egl_make_context_current,
};
+static NotifierList dbus_display_notifiers =
+ NOTIFIER_LIST_INITIALIZER(dbus_display_notifiers);
+
+void
+dbus_display_notifier_add(Notifier *notifier)
+{
+ notifier_list_add(&dbus_display_notifiers, notifier);
+}
+
+static void
+dbus_display_notifier_remove(Notifier *notifier)
+{
+ notifier_remove(notifier);
+}
+
+void
+dbus_display_notify(DBusDisplayEvent *event)
+{
+ notifier_list_notify(&dbus_display_notifiers, event);
+}
+
static void
dbus_display_init(Object *o)
{
@@ -73,6 +94,7 @@ dbus_display_init(Object *o)
g_dbus_object_manager_server_export(dd->server, vm);
dbus_clipboard_init(dd);
+ dbus_chardev_init(dd);
}
static void
@@ -80,6 +102,10 @@ dbus_display_finalize(Object *o)
{
DBusDisplay *dd = DBUS_DISPLAY(o);
+ if (dd->notifier.notify) {
+ dbus_display_notifier_remove(&dd->notifier);
+ }
+
qemu_clipboard_peer_unregister(&dd->clipboard_peer);
g_clear_object(&dd->clipboard);