On 09/11/2012 05:48 PM, Abhijit Potnis wrote:
     > Repaint is supposed to be as-needed only, not periodical, but clearly
     > some trigger is missing. Maybe a new surface is not assigned an
    output
     > until redraw, and redraw does not happen until there is damage, and
     > damage is not applied, if the window is not mapped? Or something like
     > that, chicken-and-egg problem with assigning an output. A wild
    guess...
     >


Ya, I too feel so. I see that the final weston_output_finish_frame()
call after
  a client is killed arrives with output->repaint_needed set to 0, and hence
  weston_output_repaint is not called.

If there is nothing else updating the screen you would see this happen when the first frame without the killed surface is shown on the screen. So this is expect, although it seems you're getting this one frame too early.

How does the window unmap-ing
process occur ? Is this expected ?

Unmapping a surface involves damaging the area below the surface so it gets repainted on the next frame, removing the surface from the surface list, resetting keyboard and pointer focus if appropriate and scheduling a repaint. All this is done in weston_surface_unmap().

It seems the problem you are seeing is caused by a failure to schedule a repaint. Looking at weston_surface_schedule_repaint(), the only possible explanation for the failure would be the surface having a bad output_mask. So I would advise you to first verify if the output_mask is valid (i.e., the bits for the outputs the surface is in are set, should be 1 if you have just one output) and if that is invalid, try to figure out why you end up with a bad value. You probably want to look at weston_surface_assign_output() for that.

Cheers,
Ander
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to