qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 24/27] ui: add GraphicHwOps.register_dbus_listener()


From: marcandre . lureau
Subject: [PATCH 24/27] ui: add GraphicHwOps.register_dbus_listener()
Date: Fri, 12 Mar 2021 14:01:05 +0400

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 include/ui/console.h |  2 ++
 ui/console.c         | 11 +++++++++++
 ui/dbus-console.c    |  5 ++++-
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/include/ui/console.h b/include/ui/console.h
index 31141955d9..0ad0d3ad66 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -429,6 +429,7 @@ typedef struct GraphicHwOps {
     void (*update_interval)(void *opaque, uint64_t interval);
     int (*ui_info)(void *opaque, uint32_t head, QemuUIInfo *info);
     void (*gl_block)(void *opaque, bool block);
+    bool (*register_dbus_listener)(void *opaque, QemuConsole *console, int fd);
 } GraphicHwOps;
 
 QemuConsole *graphic_console_init(DeviceState *dev, uint32_t head,
@@ -444,6 +445,7 @@ void graphic_hw_update_done(QemuConsole *con);
 void graphic_hw_invalidate(QemuConsole *con);
 void graphic_hw_text_update(QemuConsole *con, console_ch_t *chardata);
 void graphic_hw_gl_block(QemuConsole *con, bool block);
+bool graphic_hw_register_dbus_listener(QemuConsole *con, int fd);
 
 void qemu_console_early_init(void);
 
diff --git a/ui/console.c b/ui/console.c
index 3c3be032ad..8c2a29a5d8 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -320,6 +320,17 @@ void graphic_hw_gl_block(QemuConsole *con, bool block)
     }
 }
 
+bool graphic_hw_register_dbus_listener(QemuConsole *con, int fd)
+{
+    assert(con != NULL);
+
+    if (con->hw_ops->register_dbus_listener) {
+        return con->hw_ops->register_dbus_listener(con->hw, con, fd);
+    }
+
+    return false;
+}
+
 int qemu_console_get_window_id(QemuConsole *con)
 {
     return con->window_id;
diff --git a/ui/dbus-console.c b/ui/dbus-console.c
index 3487a8f5cb..eaae914199 100644
--- a/ui/dbus-console.c
+++ b/ui/dbus-console.c
@@ -242,10 +242,13 @@ dbus_console_register_listener(DBusDisplayConsole *self,
         close(fd);
         return DBUS_METHOD_INVOCATION_HANDLED;
     }
-    socket_conn = g_socket_connection_factory_create_connection(socket);
     /* return now: easier for the other end, as it may handle priv dbus 
synchronously */
     dbus_display_display1_console_complete_register_listener(self->iface, 
invocation, NULL);
 
+    if (graphic_hw_register_dbus_listener(self->con, fd)) {
+        return DBUS_METHOD_INVOCATION_HANDLED;
+    }
+    socket_conn = g_socket_connection_factory_create_connection(socket);
     listener_conn = g_dbus_connection_new_sync(G_IO_STREAM(socket_conn),
                                                guid,
                                                
G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER,
-- 
2.29.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]