[mutter] renderer-view: Keep track of what CRTC it is associated with



commit 9ed463b48863e1adfd18bcafc0f3cdf3cef35357
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Wed Apr 1 11:13:22 2020 +0200

    renderer-view: Keep track of what CRTC it is associated with
    
    For the nested and native backend, it'll point to the CRTC it was
    created for. On the X11 CM backend, it'll be NULL, as there is only a
    single global stage view.
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1285

 src/backends/meta-renderer-view.c                  | 25 ++++++++++++++++++++++
 src/backends/meta-renderer-view.h                  |  2 ++
 src/backends/native/meta-renderer-native.c         |  1 +
 src/backends/x11/nested/meta-renderer-x11-nested.c |  1 +
 4 files changed, 29 insertions(+)
---
diff --git a/src/backends/meta-renderer-view.c b/src/backends/meta-renderer-view.c
index 785b29cd7b..d698baba64 100644
--- a/src/backends/meta-renderer-view.c
+++ b/src/backends/meta-renderer-view.c
@@ -32,6 +32,7 @@
 
 #include "backends/meta-renderer-view.h"
 
+#include "backends/meta-crtc.h"
 #include "backends/meta-renderer.h"
 #include "clutter/clutter-mutter.h"
 #include "compositor/region-utils.h"
@@ -41,6 +42,7 @@ enum
   PROP_0,
 
   PROP_TRANSFORM,
+  PROP_CRTC,
 
   PROP_LAST
 };
@@ -52,6 +54,8 @@ struct _MetaRendererView
   ClutterStageViewCogl parent;
 
   MetaMonitorTransform transform;
+
+  MetaCrtc *crtc;
 };
 
 G_DEFINE_TYPE (MetaRendererView, meta_renderer_view,
@@ -63,6 +67,12 @@ meta_renderer_view_get_transform (MetaRendererView *view)
   return view->transform;
 }
 
+MetaCrtc *
+meta_renderer_view_get_crtc (MetaRendererView *view)
+{
+  return view->crtc;
+}
+
 static void
 meta_renderer_view_get_offscreen_transformation_matrix (ClutterStageView *view,
                                                         CoglMatrix       *matrix)
@@ -161,6 +171,9 @@ meta_renderer_view_get_property (GObject    *object,
     case PROP_TRANSFORM:
       g_value_set_uint (value, view->transform);
       break;
+    case PROP_CRTC:
+      g_value_set_object (value, view->crtc);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -180,6 +193,9 @@ meta_renderer_view_set_property (GObject      *object,
     case PROP_TRANSFORM:
       meta_renderer_view_set_transform (view, g_value_get_uint (value));
       break;
+    case PROP_CRTC:
+      view->crtc = g_value_get_object (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -218,5 +234,14 @@ meta_renderer_view_class_init (MetaRendererViewClass *klass)
                        G_PARAM_CONSTRUCT_ONLY |
                        G_PARAM_STATIC_STRINGS);
 
+  obj_props[PROP_CRTC] =
+    g_param_spec_object ("crtc",
+                         "MetaCrtc",
+                         "MetaCrtc",
+                         META_TYPE_CRTC,
+                         G_PARAM_READWRITE |
+                         G_PARAM_CONSTRUCT_ONLY |
+                         G_PARAM_STATIC_STRINGS);
+
   g_object_class_install_properties (object_class, PROP_LAST, obj_props);
 }
diff --git a/src/backends/meta-renderer-view.h b/src/backends/meta-renderer-view.h
index f601de534f..0e19dc2f27 100644
--- a/src/backends/meta-renderer-view.h
+++ b/src/backends/meta-renderer-view.h
@@ -28,4 +28,6 @@ G_DECLARE_FINAL_TYPE (MetaRendererView, meta_renderer_view,
 
 MetaMonitorTransform meta_renderer_view_get_transform (MetaRendererView *view);
 
+MetaCrtc *meta_renderer_view_get_crtc (MetaRendererView *view);
+
 #endif /* META_RENDERER_VIEW_H */
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index 24756c891c..fad557a23b 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -3249,6 +3249,7 @@ meta_renderer_native_create_view (MetaRenderer       *renderer,
                        "name", meta_output_get_name (output),
                        "stage", meta_backend_get_stage (backend),
                        "layout", &view_layout,
+                       "crtc", crtc,
                        "scale", scale,
                        "framebuffer", onscreen,
                        "offscreen", offscreen,
diff --git a/src/backends/x11/nested/meta-renderer-x11-nested.c 
b/src/backends/x11/nested/meta-renderer-x11-nested.c
index cf3244d5a1..92c176ee4d 100644
--- a/src/backends/x11/nested/meta-renderer-x11-nested.c
+++ b/src/backends/x11/nested/meta-renderer-x11-nested.c
@@ -219,6 +219,7 @@ meta_renderer_x11_nested_create_view (MetaRenderer       *renderer,
                        "name", meta_output_get_name (output),
                        "stage", meta_backend_get_stage (backend),
                        "layout", &view_layout,
+                       "crtc", crtc,
                        "framebuffer", COGL_FRAMEBUFFER (fake_onscreen),
                        "offscreen", COGL_FRAMEBUFFER (offscreen),
                        "transform", view_transform,


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