After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 774923 - Native backend multi monitor fixes
Native backend multi monitor fixes
Status: RESOLVED FIXED
Product: mutter
Classification: Core
Component: wayland
unspecified
Other All
: Normal normal
: ---
Assigned To: mutter-maint
mutter-maint
Depends on:
Blocks:
 
 
Reported: 2016-11-23 14:59 UTC by Jonas Ådahl
Modified: 2016-11-23 17:59 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
MetaRendererNative: Let the closure handle queuing flip notification (1.09 KB, patch)
2016-11-23 14:59 UTC, Jonas Ådahl
committed Details | Review
MetaRendererNative: Wait for the last flip callback before flipping (1.98 KB, patch)
2016-11-23 14:59 UTC, Jonas Ådahl
committed Details | Review
MetaRendererNative: Don't requeue flush-swap-notify (1.26 KB, patch)
2016-11-23 15:00 UTC, Jonas Ådahl
committed Details | Review

Description Jonas Ådahl 2016-11-23 14:59:33 UTC
These patches fixes regressions introduced by the EGLDevice branch merge. I can
now again connect my monitor and VT switch back and forth without ever (so far)
getting stuck. The reason for getting stuck was that ClutterStageCogl never got
its update counter back to 0 (i.e. it didn't receive frame callbacks from the
flips correctly).
Comment 1 Jonas Ådahl 2016-11-23 14:59:45 UTC
Created attachment 340606 [details] [review]
MetaRendererNative: Let the closure handle queuing flip notification

The queuing that was removed in this commit would be done in the clean
up function of the closure anyway.
Comment 2 Jonas Ådahl 2016-11-23 14:59:58 UTC
Created attachment 340607 [details] [review]
MetaRendererNative: Wait for the last flip callback before flipping

We might still end up in swap-buffer without the previous flip callback
having been invoked. This can happen if there are two monitors, and we
manage to draw before having all monitor flip callbacks invoked.
Comment 3 Jonas Ådahl 2016-11-23 15:00:05 UTC
Created attachment 340608 [details] [review]
MetaRendererNative: Don't requeue flush-swap-notify

When flush-swap-notify is already queued, we might end up trying to
requeue it, for example when handling flip callbacks inside
swap-buffers. Actually queuing it there is harmless, since old frames
will be discarded anyway.
Comment 4 Rui Matos 2016-11-23 17:07:52 UTC
Review of attachment 340606 [details] [review]:

right
Comment 5 Rui Matos 2016-11-23 17:08:09 UTC
Review of attachment 340607 [details] [review]:

yep, this is the problem I was seeing. lgtm
Comment 6 Rui Matos 2016-11-23 17:11:23 UTC
Review of attachment 340608 [details] [review]:

looks good, we could leak onscreens in this case
Comment 7 Rui Matos 2016-11-23 17:59:45 UTC
Pushing, to be sure these make it into 3.23.2

Attachment 340606 [details] pushed as 77384ff - MetaRendererNative: Let the closure handle queuing flip notification
Attachment 340607 [details] pushed as 227187f - MetaRendererNative: Wait for the last flip callback before flipping
Attachment 340608 [details] pushed as d9a9844 - MetaRendererNative: Don't requeue flush-swap-notify