diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-05-12 18:42:35 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-05-12 18:42:35 +0000 |
commit | 95f3f8f3c49391c94ba6aa115dd6d527e63243c2 (patch) | |
tree | 95b70ac569837450c87e225e5f6a3fe261f32875 | |
parent | 78852b181a719932c0ef6306024d22e628bf29fa (diff) | |
parent | 6d33e9058c8948c261e9a56703bbbc97e7c0a351 (diff) | |
download | gtk+-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.c | 32 | ||||
-rw-r--r-- | gdk/win32/gdkwin32display.h | 3 |
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 |