[mutter] onscreen/native: Send a symbolic flip on discard



commit f02f17808a764fff67b4b25c20532d4516d4cad1
Author: Ivan Molodetskikh <yalterz gmail com>
Date:   Thu Jan 28 11:39:12 2021 +0300

    onscreen/native: Send a symbolic flip on discard
    
    Now that symbolic flips were introduced, it makes more sense to use them
    instead of emitting a fake page flip.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1484>

 src/backends/native/meta-onscreen-native.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
---
diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c
index ff2b3a0545..d35fefb16c 100644
--- a/src/backends/native/meta-onscreen-native.c
+++ b/src/backends/native/meta-onscreen-native.c
@@ -337,11 +337,14 @@ page_flip_feedback_discarded (MetaKmsCrtc  *kms_crtc,
                               const GError *error)
 {
   MetaRendererView *view = user_data;
-  int64_t now_us;
+  CoglFramebuffer *framebuffer =
+    clutter_stage_view_get_onscreen (CLUTTER_STAGE_VIEW (view));
+  CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer);
+  CoglFrameInfo *frame_info;
 
   /*
    * Page flipping failed, but we want to fail gracefully, so to avoid freezing
-   * the frame clack, pretend we flipped.
+   * the frame clock, emit a symbolic flip.
    */
 
   if (error &&
@@ -350,13 +353,10 @@ page_flip_feedback_discarded (MetaKmsCrtc  *kms_crtc,
                         G_IO_ERROR_PERMISSION_DENIED))
     g_warning ("Page flip discarded: %s", error->message);
 
-  now_us = g_get_monotonic_time ();
+  frame_info = cogl_onscreen_peek_head_frame_info (onscreen);
+  frame_info->flags |= COGL_FRAME_INFO_FLAG_SYMBOLIC;
 
-  notify_view_crtc_presented (view,
-                              kms_crtc,
-                              now_us,
-                              COGL_FRAME_INFO_FLAG_NONE,
-                              0);
+  meta_onscreen_native_notify_frame_complete (onscreen);
 }
 
 static const MetaKmsPageFlipListenerVtable page_flip_listener_vtable = {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]