[gnome-remote-desktop] context: Hook up the EGL thread
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-remote-desktop] context: Hook up the EGL thread
- Date: Wed, 8 Dec 2021 09:09:50 +0000 (UTC)
commit a01f0ef591252bfc973a616b69dba898930b7db6
Author: Jonas Ådahl <jadahl gmail com>
Date: Fri Nov 5 15:52:13 2021 +0100
context: Hook up the EGL thread
src/grd-context.c | 19 ++++++++++++++++++-
src/grd-context.h | 2 ++
src/grd-egl-thread.h | 2 +-
src/grd-types.h | 1 +
4 files changed, 22 insertions(+), 2 deletions(-)
---
diff --git a/src/grd-context.c b/src/grd-context.c
index 53bb52b..0d9bed1 100644
--- a/src/grd-context.c
+++ b/src/grd-context.c
@@ -24,6 +24,8 @@
#include "grd-context.h"
+#include "grd-egl-thread.h"
+
#include "grd-dbus-remote-desktop.h"
#include "grd-dbus-screen-cast.h"
@@ -40,6 +42,8 @@ struct _GrdContext
GrdDBusRemoteDesktop *remote_desktop_proxy;
GrdDBusScreenCast *screen_cast_proxy;
+ GrdEglThread *egl_thread;
+
GrdSettings *settings;
GList *sessions;
@@ -47,7 +51,7 @@ struct _GrdContext
GrdDebugFlags debug_flags;
};
-G_DEFINE_TYPE (GrdContext, grd_context, G_TYPE_OBJECT);
+G_DEFINE_TYPE (GrdContext, grd_context, G_TYPE_OBJECT)
GrdDBusRemoteDesktop *
grd_context_get_remote_desktop_proxy (GrdContext *context)
@@ -111,6 +115,12 @@ grd_context_get_settings (GrdContext *context)
return context->settings;
}
+GrdEglThread *
+grd_context_get_egl_thread (GrdContext *context)
+{
+ return context->egl_thread;
+}
+
GrdDebugFlags
grd_context_get_debug_flags (GrdContext *context)
{
@@ -139,6 +149,7 @@ grd_context_finalize (GObject *object)
g_clear_object (&context->remote_desktop_proxy);
g_clear_object (&context->screen_cast_proxy);
+ g_clear_pointer (&context->egl_thread, grd_egl_thread_free);
g_clear_object (&context->settings);
G_OBJECT_CLASS (grd_context_parent_class)->finalize (object);
@@ -147,11 +158,17 @@ grd_context_finalize (GObject *object)
static void
grd_context_init (GrdContext *context)
{
+ g_autoptr (GError) error = NULL;
+
context->main_context = g_main_context_default ();
init_debug_flags (context);
context->settings = g_object_new (GRD_TYPE_SETTINGS, NULL);
+
+ context->egl_thread = grd_egl_thread_new (&error);
+ if (!context->egl_thread)
+ g_debug ("Failed to create EGL thread: %s", error->message);
}
static void
diff --git a/src/grd-context.h b/src/grd-context.h
index d33a459..a7b9cb8 100644
--- a/src/grd-context.h
+++ b/src/grd-context.h
@@ -60,6 +60,8 @@ GList * grd_context_get_sessions (GrdContext *context);
GrdSettings * grd_context_get_settings (GrdContext *context);
+GrdEglThread * grd_context_get_egl_thread (GrdContext *context);
+
GrdDebugFlags grd_context_get_debug_flags (GrdContext *context);
#endif /* GRD_CONTEXT_H */
diff --git a/src/grd-egl-thread.h b/src/grd-egl-thread.h
index a382caf..af704b3 100644
--- a/src/grd-egl-thread.h
+++ b/src/grd-egl-thread.h
@@ -24,7 +24,7 @@
#include <glib.h>
#include <stdint.h>
-typedef struct _GrdEglThread GrdEglThread;
+#include "grd-types.h"
typedef void (* GrdEglThreadCallback) (gboolean success,
gpointer user_data);
diff --git a/src/grd-types.h b/src/grd-types.h
index c3bb763..f88efd0 100644
--- a/src/grd-types.h
+++ b/src/grd-types.h
@@ -27,6 +27,7 @@ typedef struct _GrdContext GrdContext;
typedef struct _GrdClipboard GrdClipboard;
typedef struct _GrdClipboardRdp GrdClipboardRdp;
typedef struct _GrdClipboardVnc GrdClipboardVnc;
+typedef struct _GrdEglThread GrdEglThread;
typedef struct _GrdRdpEventQueue GrdRdpEventQueue;
typedef struct _GrdRdpGfxFrameLog GrdRdpGfxFrameLog;
typedef struct _GrdRdpGfxSurface GrdRdpGfxSurface;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]