[mutter] renderer/native: fix missing GPU copy egl ext error



commit 6932b3cbb3fff463e30d65638535aa08dee022b8
Author: Pekka Paalanen <pekka paalanen collabora com>
Date:   Mon Jan 28 13:02:07 2019 +0200

    renderer/native: fix missing GPU copy egl ext error
    
    If the extension is missing, the GPU copy path would not work. The code sets
    the error, but forgets to return a failure. Fix this.
    
    While adding the necessary return FALSE, also destroy the EGL context we just
    created. Code refactoring shares the destroying code.
    
    Found by reading code.
    
    https://gitlab.gnome.org/GNOME/mutter/merge_requests/416

 src/backends/native/meta-renderer-native.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)
---
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index 3b293f202..5813a41b8 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -3391,17 +3391,10 @@ init_secondary_gpu_data_gpu (MetaRendererNativeGpuData *renderer_gpu_data,
       g_str_has_prefix (renderer_str, "softpipe") ||
       g_str_has_prefix (renderer_str, "swrast"))
     {
-      meta_egl_make_current (egl,
-                             egl_display,
-                             EGL_NO_SURFACE,
-                             EGL_NO_SURFACE,
-                             EGL_NO_CONTEXT,
-                             NULL);
-      meta_egl_destroy_context (egl, egl_display, egl_context, NULL);
       g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
                    "Do not want to use software renderer (%s), falling back to CPU copy path",
                    renderer_str);
-      return FALSE;
+      goto out_fail_with_context;
     }
 
   if (!meta_gles3_has_extensions (renderer_native->gles3,
@@ -3418,6 +3411,8 @@ init_secondary_gpu_data_gpu (MetaRendererNativeGpuData *renderer_gpu_data,
                    missing_gl_extensions_str);
       g_free (missing_gl_extensions_str);
       g_free (missing_gl_extensions);
+
+      goto out_fail_with_context;
     }
 
   renderer_gpu_data->secondary.is_hardware_rendering = TRUE;
@@ -3426,6 +3421,17 @@ init_secondary_gpu_data_gpu (MetaRendererNativeGpuData *renderer_gpu_data,
   renderer_gpu_data->secondary.copy_mode = META_SHARED_FRAMEBUFFER_COPY_MODE_GPU;
 
   return TRUE;
+
+out_fail_with_context:
+  meta_egl_make_current (egl,
+                         egl_display,
+                         EGL_NO_SURFACE,
+                         EGL_NO_SURFACE,
+                         EGL_NO_CONTEXT,
+                         NULL);
+  meta_egl_destroy_context (egl, egl_display, egl_context, NULL);
+
+  return FALSE;
 }
 
 static void


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