Repaint Issue

Ander Conselvan de Oliveira conselvan2 at gmail.com
Tue Sep 11 04:36:19 PDT 2012


On 09/11/2012 01:14 PM, Abhijit Potnis wrote:
> Hello,
>
> Last few days I have been debugging a repaint issue in Weston. No repaint is
> triggered until an input event occurs or a Wayland client like
> simple-shm triggers
> one.
>
> Digging down, I see that struct weston_output.repaint is pointing to my
> output repaint
> function implementation.

Are you writing your own weston backend?

When I run weston and follow thru the logs, the
> repaint in
> my back-end implementation gets called when my
> 1. mouse moves/or an input event is sensed.
> 2. when a new client is launched.
> 3. when a client like simple-shm forces a repaint in a loop
>
> The intermittent screen repaints are timed long apart. So the screen
> doesn't get
> repainted until any one of the above event happens, which force a repaint.
>
> http://www.youtube.com/watch?v=VGZoFZ9MQX8&feature=youtu.be
>
> Here is a video of the behaviour. I launch simple-shm and then kill it
> (time 0:05), the
> screen isn't updated until I move my mouse (time 0:11). When I move the
> mouse the
> screen is updated and the residual simple-shm disappears from the
> screen, which is
> actually a repaint.
>
> Does any body else happen to see such behaviour ?
> Is there a way in wayland where in the frequency with which
> "weston_output_repaint
> for idle_repaint" is called, be increased ?

The idea is that the compositor only redraws when necessary. In your 
particular case, a redraw should be scheduled when destroying 
simple-shm's surface. The call path is something like

    destroy_surface()
    weston_surface_unmap()
    weston_surface_schedule_repaint()

This latter function relies on surface->output_mask to schedule the 
repaint only for the outputs the surface is/was in. Can you check if you 
have a valid output_mask?

Cheers,
Ander


More information about the wayland-devel mailing list