gl-renderer: Move EGL display creation to egl-glue.c
authorScott Anderson <scott.anderson@collabora.com>
Fri, 20 Dec 2019 02:07:43 +0000 (15:07 +1300)
committerScott Anderson <scott.anderson@collabora.com>
Tue, 18 Feb 2020 05:11:26 +0000 (18:11 +1300)
It makes more sense for it to be there instead.

Signed-off-by: Scott Anderson <scott.anderson@collabora.com>
libweston/renderer-gl/egl-glue.c
libweston/renderer-gl/gl-renderer-internal.h
libweston/renderer-gl/gl-renderer.c

index 4c426aa..28be4ff 100644 (file)
@@ -455,6 +455,42 @@ gl_renderer_get_egl_config(struct gl_renderer *gr,
        return egl_config;
 }
 
+int
+gl_renderer_setup_egl_display(struct gl_renderer *gr,
+                             void *native_display)
+{
+       gr->egl_display = NULL;
+
+       /* extension_suffix is supported */
+       if (gr->has_platform_base)
+               gr->egl_display = gr->get_platform_display(gr->platform,
+                                                          native_display,
+                                                          NULL);
+
+       if (!gr->egl_display) {
+               weston_log("warning: either no EGL_EXT_platform_base "
+                          "support or specific platform support; "
+                          "falling back to eglGetDisplay.\n");
+               gr->egl_display = eglGetDisplay(native_display);
+       }
+
+       if (!gr->egl_display) {
+               weston_log("failed to create display\n");
+               return -1;
+       }
+
+       if (!eglInitialize(gr->egl_display, NULL, NULL)) {
+               weston_log("failed to initialize display\n");
+               goto fail;
+       }
+
+       return 0;
+
+fail:
+       gl_renderer_print_egl_error_state();
+       return -1;
+}
+
 static const char *
 platform_to_extension(EGLenum platform)
 {
index 9454fa0..6e1b095 100644 (file)
@@ -142,6 +142,9 @@ gl_renderer_get_egl_config(struct gl_renderer *gr,
                           unsigned drm_formats_count);
 
 int
+gl_renderer_setup_egl_display(struct gl_renderer *gr, void *native_display);
+
+int
 gl_renderer_setup_egl_client_extensions(struct gl_renderer *gr);
 
 int
index 29b6896..462f422 100644 (file)
@@ -3381,7 +3381,6 @@ gl_renderer_display_create(struct weston_compositor *ec,
                           unsigned drm_formats_count)
 {
        struct gl_renderer *gr;
-       EGLint major, minor;
 
        gr = zalloc(sizeof *gr);
        if (gr == NULL)
@@ -3401,30 +3400,9 @@ gl_renderer_display_create(struct weston_compositor *ec,
        gr->base.surface_get_content_size =
                gl_renderer_surface_get_content_size;
        gr->base.surface_copy_content = gl_renderer_surface_copy_content;
-       gr->egl_display = NULL;
 
-       /* extension_suffix is supported */
-       if (gr->has_platform_base)
-               gr->egl_display = gr->get_platform_display(platform,
-                                                          native_display,
-                                                          NULL);
-
-       if (!gr->egl_display) {
-               weston_log("warning: either no EGL_EXT_platform_base "
-                          "support or specific platform support; "
-                          "falling back to eglGetDisplay.\n");
-               gr->egl_display = eglGetDisplay(native_display);
-       }
-
-       if (!gr->egl_display) {
-               weston_log("failed to create display\n");
+       if (gl_renderer_setup_egl_display(gr, native_display) < 0)
                goto fail;
-       }
-
-       if (!eglInitialize(gr->egl_display, &major, &minor)) {
-               weston_log("failed to initialize display\n");
-               goto fail_with_error;
-       }
 
        log_egl_info(gr->egl_display);