[PATCH weston 04/68] compositor-drm: Delete drm_backend_set_modes

Armin Krezović krezovic.armin at gmail.com
Fri Dec 9 20:52:30 UTC 2016


On 09.12.2016 20:57, Daniel Stone wrote:
> Even if we do have a framebuffer matching the mode, we immediately
> schedule a repaint, meaning we either do work for no reason, or show
> stale content before we bring up the new content.
> 
> Delete this and just let repaint deal with it.
> 
> Differential Revision: https://phabricator.freedesktop.org/D1481
> 
> Signed-off-by: Daniel Stone <daniels at collabora.com>

Since drm_output_repaint() calls drmModeSetCrtc() when needed and
weston_compositor_damage_all() will schedule a repaint, this makes
sense.

Reviewed-by: Armin Krezović <krezovic.armin at gmail.com>

> ---
>  libweston/compositor-drm.c | 33 ---------------------------------
>  1 file changed, 33 deletions(-)
> 
> diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
> index 268117d..7d1c01b 100644
> --- a/libweston/compositor-drm.c
> +++ b/libweston/compositor-drm.c
> @@ -2824,38 +2824,6 @@ drm_destroy(struct weston_compositor *ec)
>  }
>  
>  static void
> -drm_backend_set_modes(struct drm_backend *backend)
> -{
> -	struct drm_output *output;
> -	struct drm_mode *drm_mode;
> -	int ret;
> -
> -	wl_list_for_each(output, &backend->compositor->output_list, base.link) {
> -		if (!output->current) {
> -			/* If something that would cause the output to
> -			 * switch mode happened while in another vt, we
> -			 * might not have a current drm_fb. In that case,
> -			 * schedule a repaint and let drm_output_repaint
> -			 * handle setting the mode. */
> -			weston_output_schedule_repaint(&output->base);
> -			continue;
> -		}
> -
> -		drm_mode = (struct drm_mode *) output->base.current_mode;
> -		ret = drmModeSetCrtc(backend->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);
> -		}
> -	}
> -}
> -
> -static void
>  session_notify(struct wl_listener *listener, void *data)
>  {
>  	struct weston_compositor *compositor = data;
> @@ -2866,7 +2834,6 @@ session_notify(struct wl_listener *listener, void *data)
>  	if (compositor->session_active) {
>  		weston_log("activating session\n");
>  		compositor->state = b->prev_state;
> -		drm_backend_set_modes(b);
>  		weston_compositor_damage_all(compositor);
>  		udev_input_enable(&b->input);
>  	} else {
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 870 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20161209/97dbafd0/attachment.sig>


More information about the wayland-devel mailing list