summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-05-12 18:42:35 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-05-12 18:42:35 +0000
commit95f3f8f3c49391c94ba6aa115dd6d527e63243c2 (patch)
tree95b70ac569837450c87e225e5f6a3fe261f32875
parent78852b181a719932c0ef6306024d22e628bf29fa (diff)
parent6d33e9058c8948c261e9a56703bbbc97e7c0a351 (diff)
downloadgtk+-95f3f8f3c49391c94ba6aa115dd6d527e63243c2.tar.gz
Merge branch 'win32.egl.getter' into 'master'
Win32: Add EGLDisplay getter See merge request GNOME/gtk!3543
-rw-r--r--gdk/win32/gdkglcontext-win32.c32
-rw-r--r--gdk/win32/gdkwin32display.h3
2 files changed, 34 insertions, 1 deletions
diff --git a/gdk/win32/gdkglcontext-win32.c b/gdk/win32/gdkglcontext-win32.c
index 610711d3b8..e81ae5338a 100644
--- a/gdk/win32/gdkglcontext-win32.c
+++ b/gdk/win32/gdkglcontext-win32.c
@@ -424,7 +424,6 @@ static EGLDisplay
_gdk_win32_get_egl_display (GdkWin32Display *display)
{
EGLDisplay disp;
- gboolean success = FALSE;
if (epoxy_has_egl_extension (NULL, "EGL_EXT_platform_base"))
{
@@ -555,6 +554,37 @@ _gdk_win32_display_init_gl (GdkDisplay *display)
return TRUE;
}
+/**
+ * gdk_win32_display_get_egl_display:
+ * @display: (type GdkWin32Display): a Win32 display
+ *
+ * Retrieves the EGL display connection object for the given GDK display.
+ *
+ * Returns: (nullable): the EGL display
+ */
+gpointer
+gdk_win32_display_get_egl_display (GdkDisplay *display)
+{
+ GdkWin32Display *display_win32;
+
+ g_return_val_if_fail (GDK_IS_WIN32_DISPLAY (display), NULL);
+
+#ifdef GDK_WIN32_ENABLE_EGL
+ if (!_gdk_win32_display_init_gl (display))
+ return NULL;
+
+ display_win32 = GDK_WIN32_DISPLAY (display);
+
+ if (display_win32->have_wgl)
+ return NULL;
+
+ return display_win32->egl_disp;
+#else
+ /* no EGL support */
+ return NULL;
+#endif
+}
+
/* Setup the legacy context after creating it */
static gboolean
_ensure_legacy_gl_context (HDC hdc,
diff --git a/gdk/win32/gdkwin32display.h b/gdk/win32/gdkwin32display.h
index a91fe3e49d..e9e621eba5 100644
--- a/gdk/win32/gdkwin32display.h
+++ b/gdk/win32/gdkwin32display.h
@@ -104,6 +104,9 @@ void gdk_win32_display_remove_filter (GdkWin32Display
GDK_AVAILABLE_IN_ALL
GdkMonitor * gdk_win32_display_get_primary_monitor (GdkDisplay *display);
+GDK_AVAILABLE_IN_4_4
+gpointer gdk_win32_display_get_egl_display (GdkDisplay *display);
+
G_END_DECLS