Prefer eglGetPlatformDisplay() to eglGetDisplay()
This commit is contained in:
parent
6647fcde99
commit
69d350d259
126
0001-Use-eglGetPlatformDisplay.patch
Normal file
126
0001-Use-eglGetPlatformDisplay.patch
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
From c6835e469549189eed7cac13a9c6f0de574e436b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Adam Jackson <ajax@redhat.com>
|
||||||
|
Date: Tue, 4 Oct 2016 13:20:27 -0400
|
||||||
|
Subject: [PATCH] Use eglGetPlatformDisplay
|
||||||
|
|
||||||
|
Different libEGL will do different things for eglGetDisplay since it has
|
||||||
|
to guess what kind of display it's been handed. Better to just use the
|
||||||
|
API that makes it explicit.
|
||||||
|
|
||||||
|
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||||
|
---
|
||||||
|
cogl/cogl/winsys/cogl-winsys-egl-x11.c | 36 ++++++++++++++++++++++++++++--
|
||||||
|
src/backends/native/meta-renderer-native.c | 36 ++++++++++++++++++++++++++++--
|
||||||
|
2 files changed, 68 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/cogl/cogl/winsys/cogl-winsys-egl-x11.c b/cogl/cogl/winsys/cogl-winsys-egl-x11.c
|
||||||
|
index 454b41e..a7379a5 100644
|
||||||
|
--- a/cogl/cogl/winsys/cogl-winsys-egl-x11.c
|
||||||
|
+++ b/cogl/cogl/winsys/cogl-winsys-egl-x11.c
|
||||||
|
@@ -261,6 +261,39 @@ _cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
|
||||||
|
g_slice_free (CoglRendererEGL, egl_renderer);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static EGLDisplay
|
||||||
|
+_cogl_winsys_egl_get_display (void *native)
|
||||||
|
+{
|
||||||
|
+ EGLDisplay dpy = NULL;
|
||||||
|
+ const char *client_exts = eglQueryString (NULL, EGL_EXTENSIONS);
|
||||||
|
+
|
||||||
|
+ if (g_strstr_len (client_exts, -1, "EGL_KHR_platform_base"))
|
||||||
|
+ {
|
||||||
|
+ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
|
||||||
|
+ (void *) eglGetProcAddress ("eglGetPlatformDisplay");
|
||||||
|
+
|
||||||
|
+ if (get_platform_display)
|
||||||
|
+ dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL);
|
||||||
|
+
|
||||||
|
+ if (dpy)
|
||||||
|
+ return dpy;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (g_strstr_len (client_exts, -1, "EGL_EXT_platform_base"))
|
||||||
|
+ {
|
||||||
|
+ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
|
||||||
|
+ (void *) eglGetProcAddress ("eglGetPlatformDisplayEXT");
|
||||||
|
+
|
||||||
|
+ if (get_platform_display)
|
||||||
|
+ dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL);
|
||||||
|
+
|
||||||
|
+ if (dpy)
|
||||||
|
+ return dpy;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return eglGetDisplay ((EGLNativeDisplayType) native);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static CoglBool
|
||||||
|
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
|
||||||
|
CoglError **error)
|
||||||
|
@@ -277,8 +310,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
|
||||||
|
if (!_cogl_xlib_renderer_connect (renderer, error))
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
- egl_renderer->edpy =
|
||||||
|
- eglGetDisplay ((EGLNativeDisplayType) xlib_renderer->xdpy);
|
||||||
|
+ egl_renderer->edpy = _cogl_winsys_egl_get_display (xlib_renderer->xdpy);
|
||||||
|
|
||||||
|
if (!_cogl_winsys_egl_renderer_connect_common (renderer, error))
|
||||||
|
goto error;
|
||||||
|
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
|
||||||
|
index 2093e09..b0d11c0 100644
|
||||||
|
--- a/src/backends/native/meta-renderer-native.c
|
||||||
|
+++ b/src/backends/native/meta-renderer-native.c
|
||||||
|
@@ -222,6 +222,39 @@ meta_onscreen_native_queue_swap_notify (CoglOnscreen *onscreen)
|
||||||
|
onscreen_native->pending_swap_notify = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static EGLDisplay
|
||||||
|
+meta_egl_get_display (void *native)
|
||||||
|
+{
|
||||||
|
+ EGLDisplay dpy = NULL;
|
||||||
|
+ const char *client_exts = eglQueryString (NULL, EGL_EXTENSIONS);
|
||||||
|
+
|
||||||
|
+ if (g_strstr_len (client_exts, -1, "EGL_KHR_platform_base"))
|
||||||
|
+ {
|
||||||
|
+ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
|
||||||
|
+ (void *) eglGetProcAddress ("eglGetPlatformDisplay");
|
||||||
|
+
|
||||||
|
+ if (get_platform_display)
|
||||||
|
+ dpy = get_platform_display (EGL_PLATFORM_GBM_MESA, native, NULL);
|
||||||
|
+
|
||||||
|
+ if (dpy)
|
||||||
|
+ return dpy;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (g_strstr_len (client_exts, -1, "EGL_EXT_platform_base"))
|
||||||
|
+ {
|
||||||
|
+ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
|
||||||
|
+ (void *) eglGetProcAddress ("eglGetPlatformDisplayEXT");
|
||||||
|
+
|
||||||
|
+ if (get_platform_display)
|
||||||
|
+ dpy = get_platform_display (EGL_PLATFORM_GBM_MESA, native, NULL);
|
||||||
|
+
|
||||||
|
+ if (dpy)
|
||||||
|
+ return dpy;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return eglGetDisplay ((EGLNativeDisplayType) native);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static CoglBool
|
||||||
|
meta_renderer_native_connect (CoglRenderer *cogl_renderer,
|
||||||
|
CoglError **error)
|
||||||
|
@@ -246,8 +279,7 @@ meta_renderer_native_connect (CoglRenderer *cogl_renderer,
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
- egl_renderer->edpy =
|
||||||
|
- eglGetDisplay ((EGLNativeDisplayType) renderer_native->gbm);
|
||||||
|
+ egl_renderer->edpy = meta_egl_get_display (renderer_native->gbm);
|
||||||
|
if (egl_renderer->edpy == EGL_NO_DISPLAY)
|
||||||
|
{
|
||||||
|
_cogl_set_error (error, COGL_WINSYS_ERROR,
|
||||||
|
--
|
||||||
|
2.9.3
|
||||||
|
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
Name: mutter
|
Name: mutter
|
||||||
Version: 3.22.1
|
Version: 3.22.1
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: Window and compositing manager based on Clutter
|
Summary: Window and compositing manager based on Clutter
|
||||||
|
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
@ -13,6 +13,9 @@ License: GPLv2+
|
|||||||
URL: http://www.gnome.org
|
URL: http://www.gnome.org
|
||||||
Source0: http://download.gnome.org/sources/%{name}/3.22/%{name}-%{version}.tar.xz
|
Source0: http://download.gnome.org/sources/%{name}/3.22/%{name}-%{version}.tar.xz
|
||||||
|
|
||||||
|
# https://bugzilla.gnome.org/show_bug.cgi?id=772422
|
||||||
|
Patch0: 0001-Use-eglGetPlatformDisplay.patch
|
||||||
|
|
||||||
BuildRequires: chrpath
|
BuildRequires: chrpath
|
||||||
BuildRequires: pango-devel
|
BuildRequires: pango-devel
|
||||||
BuildRequires: startup-notification-devel
|
BuildRequires: startup-notification-devel
|
||||||
@ -103,6 +106,7 @@ the functionality of the installed %{name} package.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
%patch0 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
autoreconf -f -i
|
autoreconf -f -i
|
||||||
@ -177,6 +181,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
|
|||||||
%{_datadir}/mutter/tests
|
%{_datadir}/mutter/tests
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Oct 11 2016 Adam Jackson <ajax@redhat.com> - 3.22.1-2
|
||||||
|
- Prefer eglGetPlatformDisplay() to eglGetDisplay()
|
||||||
|
|
||||||
* Tue Oct 11 2016 Florian Müllner <fmuellner@redhat.com> - 3.22.1-1
|
* Tue Oct 11 2016 Florian Müllner <fmuellner@redhat.com> - 3.22.1-1
|
||||||
- Update to 3.22.1
|
- Update to 3.22.1
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user