compositor-drm: Extract EGL destroy to helper
No functional change.
Differential Revision: https://phabricator.freedesktop.org/D1484
Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Armin Krezović <krezovic.armin@gmail.com>
diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
index 88e65bc..b7e1db4 100644
--- a/libweston/compositor-drm.c
+++ b/libweston/compositor-drm.c
@@ -1322,9 +1322,6 @@
pixman_region32_fini(&overlap);
}
-static void
-drm_output_fini_pixman(struct drm_output *output);
-
/**
* Find the closest-matching mode for a given target
*
@@ -1363,8 +1360,12 @@
static int
drm_output_init_egl(struct drm_output *output, struct drm_backend *b);
+static void
+drm_output_fini_egl(struct drm_output *output);
static int
drm_output_init_pixman(struct drm_output *output, struct drm_backend *b);
+static void
+drm_output_fini_pixman(struct drm_output *output);
static int
drm_output_switch_mode(struct weston_output *output_base, struct weston_mode *mode)
@@ -1414,9 +1415,7 @@
return -1;
}
} else {
- gl_renderer->output_destroy(&output->base);
- gbm_surface_destroy(output->gbm_surface);
-
+ drm_output_fini_egl(output);
if (drm_output_init_egl(output, b) < 0) {
weston_log("failed to init output egl state with "
"new mode");
@@ -1853,6 +1852,13 @@
return 0;
}
+static void
+drm_output_fini_egl(struct drm_output *output)
+{
+ gl_renderer->output_destroy(&output->base);
+ gbm_surface_destroy(output->gbm_surface);
+}
+
static int
drm_output_init_pixman(struct drm_output *output, struct drm_backend *b)
{
@@ -2423,12 +2429,10 @@
struct drm_output *output = to_drm_output(base);
struct drm_backend *b = to_drm_backend(base->compositor);
- if (b->use_pixman) {
+ if (b->use_pixman)
drm_output_fini_pixman(output);
- } else {
- gl_renderer->output_destroy(&output->base);
- gbm_surface_destroy(output->gbm_surface);
- }
+ else
+ drm_output_fini_egl(output);
weston_plane_release(&output->fb_plane);
weston_plane_release(&output->cursor_plane);