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>
This commit is contained in:
Daniel Stone 2016-11-04 17:24:06 +00:00
parent a3ae4767ad
commit 3e661f7b6c
1 changed files with 15 additions and 11 deletions

View File

@ -1322,9 +1322,6 @@ drm_assign_planes(struct weston_output *output_base)
pixman_region32_fini(&overlap); pixman_region32_fini(&overlap);
} }
static void
drm_output_fini_pixman(struct drm_output *output);
/** /**
* Find the closest-matching mode for a given target * Find the closest-matching mode for a given target
* *
@ -1363,8 +1360,12 @@ choose_mode (struct drm_output *output, struct weston_mode *target_mode)
static int static int
drm_output_init_egl(struct drm_output *output, struct drm_backend *b); drm_output_init_egl(struct drm_output *output, struct drm_backend *b);
static void
drm_output_fini_egl(struct drm_output *output);
static int static int
drm_output_init_pixman(struct drm_output *output, struct drm_backend *b); drm_output_init_pixman(struct drm_output *output, struct drm_backend *b);
static void
drm_output_fini_pixman(struct drm_output *output);
static int static int
drm_output_switch_mode(struct weston_output *output_base, struct weston_mode *mode) drm_output_switch_mode(struct weston_output *output_base, struct weston_mode *mode)
@ -1414,9 +1415,7 @@ drm_output_switch_mode(struct weston_output *output_base, struct weston_mode *mo
return -1; return -1;
} }
} else { } else {
gl_renderer->output_destroy(&output->base); drm_output_fini_egl(output);
gbm_surface_destroy(output->gbm_surface);
if (drm_output_init_egl(output, b) < 0) { if (drm_output_init_egl(output, b) < 0) {
weston_log("failed to init output egl state with " weston_log("failed to init output egl state with "
"new mode"); "new mode");
@ -1853,6 +1852,13 @@ drm_output_init_egl(struct drm_output *output, struct drm_backend *b)
return 0; 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 static int
drm_output_init_pixman(struct drm_output *output, struct drm_backend *b) drm_output_init_pixman(struct drm_output *output, struct drm_backend *b)
{ {
@ -2423,12 +2429,10 @@ drm_output_deinit(struct weston_output *base)
struct drm_output *output = to_drm_output(base); struct drm_output *output = to_drm_output(base);
struct drm_backend *b = to_drm_backend(base->compositor); struct drm_backend *b = to_drm_backend(base->compositor);
if (b->use_pixman) { if (b->use_pixman)
drm_output_fini_pixman(output); drm_output_fini_pixman(output);
} else { else
gl_renderer->output_destroy(&output->base); drm_output_fini_egl(output);
gbm_surface_destroy(output->gbm_surface);
}
weston_plane_release(&output->fb_plane); weston_plane_release(&output->fb_plane);
weston_plane_release(&output->cursor_plane); weston_plane_release(&output->cursor_plane);