drm/state-propose: Flatten and clarify control flow
Try to make drm_output_state_propose a little more clear by reducing divergence between plane and renderer modes towards the end, removing a possibly-surprising conditional continue. Signed-off-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
@@ -917,6 +917,7 @@ drm_output_propose_state(struct weston_output *output_base,
|
|||||||
force_renderer = true;
|
force_renderer = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Now try to place it on a plane if we can. */
|
||||||
if (!force_renderer) {
|
if (!force_renderer) {
|
||||||
drm_debug(b, "\t\t\t[plane] started with zpos %"PRIu64"\n",
|
drm_debug(b, "\t\t\t[plane] started with zpos %"PRIu64"\n",
|
||||||
current_lowest_zpos);
|
current_lowest_zpos);
|
||||||
@@ -929,38 +930,23 @@ drm_output_propose_state(struct weston_output *output_base,
|
|||||||
current_lowest_zpos = ps->zpos;
|
current_lowest_zpos = ps->zpos;
|
||||||
drm_debug(b, "\t\t\t[plane] next zpos to use %"PRIu64"\n",
|
drm_debug(b, "\t\t\t[plane] next zpos to use %"PRIu64"\n",
|
||||||
current_lowest_zpos);
|
current_lowest_zpos);
|
||||||
|
} else if (!ps && !renderer_ok) {
|
||||||
if (!weston_view_is_opaque(ev, &clipped_view))
|
|
||||||
pixman_region32_intersect(&clipped_view,
|
|
||||||
&clipped_view,
|
|
||||||
&ev->transform.opaque);
|
|
||||||
/* the visible-and-opaque region of this view
|
|
||||||
* will occlude views underneath it */
|
|
||||||
pixman_region32_union(&occluded_region,
|
|
||||||
&occluded_region,
|
|
||||||
&clipped_view);
|
|
||||||
|
|
||||||
pixman_region32_fini(&clipped_view);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We have been assigned to the primary (renderer) plane:
|
|
||||||
* check if this is OK, and add ourselves to the renderer
|
|
||||||
* region if so. */
|
|
||||||
if (!renderer_ok) {
|
|
||||||
drm_debug(b, "\t\t[view] failing state generation: "
|
drm_debug(b, "\t\t[view] failing state generation: "
|
||||||
"placing view %p to renderer not allowed\n",
|
"placing view %p to renderer not allowed\n",
|
||||||
ev);
|
ev);
|
||||||
pixman_region32_fini(&clipped_view);
|
pixman_region32_fini(&clipped_view);
|
||||||
goto err_region;
|
goto err_region;
|
||||||
}
|
} else if (!ps) {
|
||||||
|
/* clipped_view contains the area that's going to be
|
||||||
/* clipped_view contains the area that's going to be visible
|
* visible on screen; add this to the renderer region */
|
||||||
* on screen; add this to the renderer region */
|
|
||||||
pixman_region32_union(&renderer_region,
|
pixman_region32_union(&renderer_region,
|
||||||
&renderer_region,
|
&renderer_region,
|
||||||
&clipped_view);
|
&clipped_view);
|
||||||
|
|
||||||
|
drm_debug(b, "\t\t\t\t[view] view %p will be placed "
|
||||||
|
"on the renderer\n", ev);
|
||||||
|
}
|
||||||
|
|
||||||
/* Opaque areas of our clipped view occlude areas behind it;
|
/* Opaque areas of our clipped view occlude areas behind it;
|
||||||
* however, anything not in the opaque region (which is the
|
* however, anything not in the opaque region (which is the
|
||||||
* entire clipped area if the whole view is known to be
|
* entire clipped area if the whole view is known to be
|
||||||
@@ -975,9 +961,6 @@ drm_output_propose_state(struct weston_output *output_base,
|
|||||||
&clipped_view);
|
&clipped_view);
|
||||||
|
|
||||||
pixman_region32_fini(&clipped_view);
|
pixman_region32_fini(&clipped_view);
|
||||||
|
|
||||||
drm_debug(b, "\t\t\t\t[view] view %p will be placed "
|
|
||||||
"on the renderer\n", ev);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pixman_region32_fini(&renderer_region);
|
pixman_region32_fini(&renderer_region);
|
||||||
|
|||||||
Reference in New Issue
Block a user