Introduce a helper function to reset the current state of a drm_plane.
Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
if (!b->shutting_down &&
output->scanout_plane->state_cur->fb &&
output->scanout_plane->state_cur->fb->type == BUFFER_GBM_SURFACE) {
- drm_plane_state_free(output->scanout_plane->state_cur, true);
- output->scanout_plane->state_cur =
- drm_plane_state_alloc(NULL, output->scanout_plane);
- output->scanout_plane->state_cur->complete = true;
+ drm_plane_reset_state(output->scanout_plane);
}
gl_renderer->output_destroy(&output->base);
bool
drm_plane_state_coords_for_view(struct drm_plane_state *state,
struct weston_view *ev, uint64_t zpos);
+void
+drm_plane_reset_state(struct drm_plane *plane);
void
drm_assign_planes(struct weston_output *output_base, void *repaint_data);
if (!b->shutting_down &&
output->scanout_plane->state_cur->fb &&
output->scanout_plane->state_cur->fb->type == BUFFER_PIXMAN_DUMB) {
- drm_plane_state_free(output->scanout_plane->state_cur, true);
- output->scanout_plane->state_cur =
- drm_plane_state_alloc(NULL, output->scanout_plane);
- output->scanout_plane->state_cur->complete = true;
+ drm_plane_reset_state(output->scanout_plane);
}
pixman_renderer_output_destroy(&output->base);
return true;
}
+/**
+ * Reset the current state of a DRM plane
+ *
+ * The current state will be freed and replaced by a pristine state.
+ *
+ * @param plane The plane to reset the current state of
+ */
+void
+drm_plane_reset_state(struct drm_plane *plane)
+{
+ drm_plane_state_free(plane->state_cur, true);
+ plane->state_cur = drm_plane_state_alloc(NULL, plane);
+ plane->state_cur->complete = true;
+}
+
/**
* Return a plane state from a drm_output_state.
*/