[PATCH 2/2] compositor: finish frame if redraw fails

David Herrmann dh.herrmann at gmail.com
Wed Oct 23 14:55:24 CEST 2013


On Tue, Oct 22, 2013 at 9:45 PM, Kristian Høgsberg <hoegsberg at gmail.com> wrote:
> On Tue, Oct 22, 2013 at 05:11:26PM +0200, David Herrmann wrote:
>> If we are about to finish a frame, but a redraw is pending and we let the
>> compositor redraw, we need to check for errors. If the redraw fails and
>> the backend cannot schedule a page-flip, we need to finish the frame,
>> anyway.
>> All backends except DRM use a timer to schedule frames. Hence, they cannot
>> fail. But for DRM, we need to be able to handle drmModePageFlip() failures
>> in case access got revoked.
>> This fixes a bug where logind+drm caused keyboard input to be missed as we
>> didn't reenable it after a failed page-flip during deactivation.
> Yes, that's better, applied both of these patches.  Aside from being
> unable to turn off sprites and hw cursor, the async deactivate also
> means that we can lose drm master at any time, in particular between
> starting repaint and pageflip.  So we need to handle this better and I
> think these two patches covers it.
> There's one last thing that doesn't quite work yet - when I switch to
> weston, it doesn't immediately (re)set the current framebuffers.  I
> have to trigger a repaint by moving the mouse or such.  I'm not sure
> why that doesn't work, we still have the call to
> drm_compositor_set_modes() and that should run with drm master set and
> restore the last mode and buffer.

It works for me. Does the log show anything?
Thanks for testing!


More information about the wayland-devel mailing list