[PATCH 06/12] compositor-drm: Abstract drm_output_set_mode()
Ander Conselvan de Oliveira
conselvan2 at gmail.com
Mon Mar 17 10:22:15 PDT 2014
That's a good clean up.
Cheers,
Ander
On 03/07/2014 10:27 AM, Xiong Zhang wrote:
> Signed-off-by: Xiong Zhang <xiong.y.zhang at intel.com>
> ---
> src/compositor-drm.c | 45 +++++++++++++++++++++++----------------------
> 1 file changed, 23 insertions(+), 22 deletions(-)
>
> diff --git a/src/compositor-drm.c b/src/compositor-drm.c
> index 78292a6..dd1c251 100644
> --- a/src/compositor-drm.c
> +++ b/src/compositor-drm.c
> @@ -593,6 +593,26 @@ drm_output_set_gamma(struct weston_output *output_base,
> }
>
> static int
> +drm_output_set_mode(struct drm_output *output, uint32_t fb_id)
> +{
> + struct drm_compositor *compositor =
> + (struct drm_compositor *)output->base.compositor;
> + struct drm_mode *mode;
> + int ret = 0;
> +
> + mode = container_of(output->base.current_mode,
> + struct drm_mode, base);
> + ret = drmModeSetCrtc(compositor->drm.fd, output->crtc_id,
> + fb_id, 0, 0,
> + &output->connector_id, 1,
> + &mode->mode_info);
> + if (ret)
> + weston_log("set mode failed: %m\n");
> +
> + return ret;
> +}
> +
> +static int
> drm_output_repaint(struct weston_output *output_base,
> pixman_region32_t *damage)
> {
> @@ -600,7 +620,6 @@ drm_output_repaint(struct weston_output *output_base,
> struct drm_compositor *compositor =
> (struct drm_compositor *) output->base.compositor;
> struct drm_sprite *s;
> - struct drm_mode *mode;
> int ret = 0;
>
> if (output->destroy_pending)
> @@ -611,17 +630,11 @@ drm_output_repaint(struct weston_output *output_base,
> if (!output->next)
> return -1;
>
> - mode = container_of(output->base.current_mode, struct drm_mode, base);
> if (!output->current ||
> output->current->stride != output->next->stride) {
> - ret = drmModeSetCrtc(compositor->drm.fd, output->crtc_id,
> - output->next->fb_id, 0, 0,
> - &output->connector_id, 1,
> - &mode->mode_info);
> - if (ret) {
> - weston_log("set mode failed: %m\n");
> + if (drm_output_set_mode(output, output->next->fb_id))
> goto err_pageflip;
> - }
> +
> output_base->set_dpms(output_base, WESTON_DPMS_ON);
> }
>
> @@ -2355,8 +2368,6 @@ static void
> drm_compositor_set_modes(struct drm_compositor *compositor)
> {
> struct drm_output *output;
> - struct drm_mode *drm_mode;
> - int ret;
>
> wl_list_for_each(output, &compositor->base.output_list, base.link) {
> if (!output->current) {
> @@ -2369,17 +2380,7 @@ drm_compositor_set_modes(struct drm_compositor *compositor)
> continue;
> }
>
> - drm_mode = (struct drm_mode *) output->base.current_mode;
> - ret = drmModeSetCrtc(compositor->drm.fd, output->crtc_id,
> - output->current->fb_id, 0, 0,
> - &output->connector_id, 1,
> - &drm_mode->mode_info);
> - if (ret < 0) {
> - weston_log(
> - "failed to set mode %dx%d for output at %d,%d: %m\n",
> - drm_mode->base.width, drm_mode->base.height,
> - output->base.x, output->base.y);
> - }
> + drm_output_set_mode(output, output->current->fb_id);
> }
> }
>
>
More information about the wayland-devel
mailing list