[gtk/wip/otte/for-master: 93/93] wayland: Better error on eglGetDisplay() failure




commit 95931a7e6c5c3e8cf9d410863c4d7b58e020af1b
Author: Benjamin Otte <otte redhat com>
Date:   Tue Aug 24 21:27:49 2021 +0200

    wayland: Better error on eglGetDisplay() failure
    
    Goals:
    
    1. Provide as much information as possible in the error message, so
       users can try to fix their system themselves.
    2. Try to formulate the error message in a way that explains that this
       is not something GTK can fix, but a lower layer problem.
    
    Related: #4193

 gdk/wayland/gdkglcontext-wayland.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)
---
diff --git a/gdk/wayland/gdkglcontext-wayland.c b/gdk/wayland/gdkglcontext-wayland.c
index 7e6dd07225..2cf7285fe5 100644
--- a/gdk/wayland/gdkglcontext-wayland.c
+++ b/gdk/wayland/gdkglcontext-wayland.c
@@ -32,6 +32,7 @@
 #include "gdkprivate-wayland.h"
 
 #include "gdkinternals.h"
+#include "gdk-private.h"
 #include "gdksurfaceprivate.h"
 #include "gdkprofilerprivate.h"
 
@@ -474,14 +475,28 @@ gdk_wayland_display_init_gl (GdkDisplay  *display,
   G_GNUC_UNUSED gint64 start_time = GDK_PROFILER_CURRENT_TIME;
   G_GNUC_UNUSED gint64 start_time2;
 
+  if (!epoxy_has_egl ())
+    {
+      gboolean sandboxed = gdk_running_in_sandbox ();
+
+      g_set_error_literal (error, GDK_GL_ERROR,
+                           GDK_GL_ERROR_NOT_AVAILABLE,
+                           sandboxed ? _("libEGL not available in this sandbox")
+                                     : _("libEGL not available"));
+      return NULL;
+    }
+
   start_time2 = GDK_PROFILER_CURRENT_TIME;
   dpy = get_egl_display (display_wayland);
   gdk_profiler_end_mark (start_time, "get_egl_display", NULL);
   if (dpy == NULL)
     {
+      gboolean sandboxed = gdk_running_in_sandbox ();
+
       g_set_error_literal (error, GDK_GL_ERROR,
                            GDK_GL_ERROR_NOT_AVAILABLE,
-                           _("Failed to create EGL display"));
+                           sandboxed ? _("Sandbox does not provide an OpenGL implementation")
+                                     : _("No OpenGL implementation available"));
       return NULL;
     }
 


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