[mutter] crtc: Move CRTC id field into instance private



commit a42eed023136878f2a14e004d3b49d6cb642562f
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Tue Feb 25 11:34:43 2020 +0100

    crtc: Move CRTC id field into instance private
    
    Set during construction, retrieved using helper.
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1287

 src/backends/meta-crtc.c                       | 25 +++++++++++++++++++++++++
 src/backends/meta-crtc.h                       |  4 +++-
 src/backends/meta-monitor-config-manager.c     | 14 ++++++++++----
 src/backends/meta-monitor-manager-dummy.c      |  4 ++--
 src/backends/meta-monitor-manager.c            |  4 ++--
 src/backends/native/meta-crtc-kms.c            |  8 +++++---
 src/backends/native/meta-monitor-manager-kms.c |  3 ++-
 src/backends/native/meta-output-kms.c          |  2 +-
 src/backends/native/meta-renderer-native.c     |  2 +-
 src/backends/x11/meta-crtc-xrandr.c            |  2 +-
 src/backends/x11/meta-monitor-manager-xrandr.c | 16 ++++++++++------
 src/backends/x11/meta-output-xrandr.c          |  4 ++--
 src/tests/headless-start-test.c                |  2 +-
 src/tests/monitor-test-utils.c                 |  2 +-
 14 files changed, 66 insertions(+), 26 deletions(-)
---
diff --git a/src/backends/meta-crtc.c b/src/backends/meta-crtc.c
index bef6577749..d06334fe6c 100644
--- a/src/backends/meta-crtc.c
+++ b/src/backends/meta-crtc.c
@@ -27,6 +27,7 @@ enum
 {
   PROP_0,
 
+  PROP_ID,
   PROP_GPU,
 
   N_PROPS
@@ -36,6 +37,8 @@ static GParamSpec *obj_props[N_PROPS];
 
 typedef struct _MetaCrtcPrivate
 {
+  uint64_t id;
+
   MetaGpu *gpu;
 } MetaCrtcPrivate;
 
@@ -43,6 +46,14 @@ G_DEFINE_TYPE_WITH_PRIVATE (MetaCrtc, meta_crtc, G_TYPE_OBJECT)
 
 G_DEFINE_TYPE (MetaCrtcMode, meta_crtc_mode, G_TYPE_OBJECT)
 
+uint64_t
+meta_crtc_get_id (MetaCrtc *crtc)
+{
+  MetaCrtcPrivate *priv = meta_crtc_get_instance_private (crtc);
+
+  return priv->id;
+}
+
 MetaGpu *
 meta_crtc_get_gpu (MetaCrtc *crtc)
 {
@@ -86,6 +97,9 @@ meta_crtc_set_property (GObject      *object,
 
   switch (prop_id)
     {
+    case PROP_ID:
+      priv->id = g_value_get_uint64 (value);
+      break;
     case PROP_GPU:
       priv->gpu = g_value_get_object (value);
       break;
@@ -105,6 +119,9 @@ meta_crtc_get_property (GObject    *object,
 
   switch (prop_id)
     {
+    case PROP_ID:
+      g_value_set_uint64 (value, priv->id);
+      break;
     case PROP_GPU:
       g_value_set_object (value, priv->gpu);
       break;
@@ -140,6 +157,14 @@ meta_crtc_class_init (MetaCrtcClass *klass)
   object_class->get_property = meta_crtc_get_property;
   object_class->finalize = meta_crtc_finalize;
 
+  obj_props[PROP_ID] =
+    g_param_spec_uint64 ("id",
+                         "id",
+                         "CRTC id",
+                         0, UINT64_MAX, 0,
+                         G_PARAM_READWRITE |
+                         G_PARAM_CONSTRUCT_ONLY |
+                         G_PARAM_STATIC_STRINGS);
   obj_props[PROP_GPU] =
     g_param_spec_object ("gpu",
                          "gpu",
diff --git a/src/backends/meta-crtc.h b/src/backends/meta-crtc.h
index abc75be423..0853a6537d 100644
--- a/src/backends/meta-crtc.h
+++ b/src/backends/meta-crtc.h
@@ -60,7 +60,6 @@ struct _MetaCrtc
 {
   GObject parent;
 
-  glong crtc_id;
   unsigned int all_transforms;
 
   MetaCrtcConfig *config;
@@ -95,6 +94,9 @@ META_EXPORT_TEST G_DECLARE_FINAL_TYPE (MetaCrtc, meta_crtc, META, CRTC, GObject)
 #define META_TYPE_CRTC_MODE (meta_crtc_mode_get_type ())
 META_EXPORT_TEST G_DECLARE_FINAL_TYPE (MetaCrtcMode, meta_crtc_mode, META, CRTC_MODE, GObject)
 
+META_EXPORT_TEST
+uint64_t meta_crtc_get_id (MetaCrtc *crtc);
+
 META_EXPORT_TEST
 MetaGpu * meta_crtc_get_gpu (MetaCrtc *crtc);
 
diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c
index 6a7c807bf6..1075731374 100644
--- a/src/backends/meta-monitor-config-manager.c
+++ b/src/backends/meta-monitor-config-manager.c
@@ -84,8 +84,10 @@ is_crtc_reserved (MetaCrtc *crtc,
 
   for (i = 0; i < reserved_crtcs->len; i++)
     {
-       glong id = g_array_index (reserved_crtcs, glong, i);
-       if (id == crtc->crtc_id)
+       uint64_t id;
+
+       id = g_array_index (reserved_crtcs, uint64_t, i);
+       if (id == meta_crtc_get_id (crtc))
          return TRUE;
     }
 
@@ -381,7 +383,7 @@ meta_monitor_config_manager_assign (MetaMonitorManager *manager,
     g_ptr_array_new_with_free_func ((GDestroyNotify) meta_crtc_info_free);
   output_infos =
     g_ptr_array_new_with_free_func ((GDestroyNotify) meta_output_info_free);
-  reserved_crtcs = g_array_new (FALSE, FALSE, sizeof (glong));
+  reserved_crtcs = g_array_new (FALSE, FALSE, sizeof (uint64_t));
 
   for (l = config->logical_monitor_configs; l; l = l->next)
     {
@@ -404,7 +406,11 @@ meta_monitor_config_manager_assign (MetaMonitorManager *manager,
 
               crtc = meta_output_get_assigned_crtc (output);
               if (crtc)
-                g_array_append_val (reserved_crtcs, crtc->crtc_id);
+                {
+                  uint64_t crtc_id = meta_crtc_get_id (crtc);
+
+                  g_array_append_val (reserved_crtcs, crtc_id);
+                }
             }
         }
     }
diff --git a/src/backends/meta-monitor-manager-dummy.c b/src/backends/meta-monitor-manager-dummy.c
index bdf106f4cc..ee6c193ea8 100644
--- a/src/backends/meta-monitor-manager-dummy.c
+++ b/src/backends/meta-monitor-manager-dummy.c
@@ -199,9 +199,9 @@ append_monitor (MetaMonitorManager *manager,
   *modes = g_list_concat (*modes, new_modes);
 
   crtc = g_object_new (META_TYPE_CRTC,
+                       "id", g_list_length (*crtcs) + 1,
                        "gpu", gpu,
                        NULL);
-  crtc->crtc_id = g_list_length (*crtcs) + 1;
   crtc->all_transforms = ALL_TRANSFORMS;
   *crtcs = g_list_append (*crtcs, crtc);
 
@@ -293,9 +293,9 @@ append_tiled_monitor (MetaMonitorManager *manager,
       MetaCrtc *crtc;
 
       crtc = g_object_new (META_TYPE_CRTC,
+                           "id", g_list_length (*crtcs) + i + 1,
                            "gpu", gpu,
                            NULL);
-      crtc->crtc_id = g_list_length (*crtcs) + i + 1;
       crtc->all_transforms = ALL_TRANSFORMS;
       new_crtcs = g_list_append (new_crtcs, crtc);
     }
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index 3505573b81..18d5216890 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -1030,7 +1030,7 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
           current_mode_index = g_list_index (combined_modes, crtc_config->mode);
           g_variant_builder_add (&crtc_builder, "(uxiiiiiuaua{sv})",
                                  i, /* ID */
-                                 (int64_t) crtc->crtc_id,
+                                 (int64_t) meta_crtc_get_id (crtc),
                                  (int) roundf (crtc_config->layout.origin.x),
                                  (int) roundf (crtc_config->layout.origin.y),
                                  (int) roundf (crtc_config->layout.size.width),
@@ -1044,7 +1044,7 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
         {
           g_variant_builder_add (&crtc_builder, "(uxiiiiiuaua{sv})",
                                  i, /* ID */
-                                 (int64_t) crtc->crtc_id,
+                                 (int64_t) meta_crtc_get_id (crtc),
                                  0,
                                  0,
                                  0,
diff --git a/src/backends/native/meta-crtc-kms.c b/src/backends/native/meta-crtc-kms.c
index a7e8392330..cb343bebbf 100644
--- a/src/backends/native/meta-crtc-kms.c
+++ b/src/backends/native/meta-crtc-kms.c
@@ -179,13 +179,15 @@ meta_crtc_kms_set_mode (MetaCrtc      *crtc,
     {
       mode = crtc_config->mode->driver_private;
 
-      g_debug ("Setting CRTC (%ld) mode to %s", crtc->crtc_id, mode->name);
+      g_debug ("Setting CRTC (%ld) mode to %s",
+               meta_crtc_get_id (crtc), mode->name);
     }
   else
     {
       mode = NULL;
 
-      g_debug ("Unsetting CRTC (%ld) mode", crtc->crtc_id);
+      g_debug ("Unsetting CRTC (%ld) mode",
+               meta_crtc_get_id (crtc));
     }
 
   meta_kms_update_mode_set (kms_update,
@@ -297,9 +299,9 @@ meta_create_kms_crtc (MetaGpuKms  *gpu_kms,
   primary_plane = meta_kms_device_get_primary_plane_for (kms_device,
                                                          kms_crtc);
   crtc = g_object_new (META_TYPE_CRTC,
+                       "id", meta_kms_crtc_get_id (kms_crtc),
                        "gpu", gpu,
                        NULL);
-  crtc->crtc_id = meta_kms_crtc_get_id (kms_crtc);
   crtc->is_dirty = FALSE;
   crtc->all_transforms = ALL_TRANSFORMS_MASK;
 
diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
index 6dcba6442e..2607bc0e42 100644
--- a/src/backends/native/meta-monitor-manager-kms.c
+++ b/src/backends/native/meta-monitor-manager-kms.c
@@ -435,7 +435,8 @@ meta_monitor_manager_kms_set_crtc_gamma (MetaMonitorManager *manager,
   g_autoptr (MetaKmsFeedback) kms_feedback = NULL;
 
   gamma_ramp_string = generate_gamma_ramp_string (size, red, green, blue);
-  g_debug ("Setting CRTC (%ld) gamma to %s", crtc->crtc_id, gamma_ramp_string);
+  g_debug ("Setting CRTC (%ld) gamma to %s",
+           meta_crtc_get_id (crtc), gamma_ramp_string);
 
   kms_update = meta_kms_ensure_pending_update (kms);
 
diff --git a/src/backends/native/meta-output-kms.c b/src/backends/native/meta-output-kms.c
index b4097946f6..a119cf3490 100644
--- a/src/backends/native/meta-output-kms.c
+++ b/src/backends/native/meta-output-kms.c
@@ -361,7 +361,7 @@ meta_create_kms_output (MetaGpuKms        *gpu_kms,
         {
           MetaCrtc *crtc = l->data;
 
-          if (crtc->crtc_id == connector_state->current_crtc_id)
+          if (meta_crtc_get_id (crtc) == connector_state->current_crtc_id)
             {
               meta_output_assign_crtc (output, crtc);
               break;
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index 360bdc0bc4..8ba6fb495e 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -2500,7 +2500,7 @@ meta_renderer_native_create_surface_egl_device (CoglOnscreen  *onscreen,
     return FALSE;
 
   output_attribs[0] = EGL_DRM_CRTC_EXT;
-  output_attribs[1] = onscreen_native->crtc->crtc_id;
+  output_attribs[1] = meta_crtc_get_id (onscreen_native->crtc);
   output_attribs[2] = EGL_NONE;
 
   if (!meta_egl_get_output_layers (egl, egl_display,
diff --git a/src/backends/x11/meta-crtc-xrandr.c b/src/backends/x11/meta-crtc-xrandr.c
index d1d2bbf6da..fa24b95c8d 100644
--- a/src/backends/x11/meta-crtc-xrandr.c
+++ b/src/backends/x11/meta-crtc-xrandr.c
@@ -249,6 +249,7 @@ meta_create_xrandr_crtc (MetaGpuXrandr      *gpu_xrandr,
   GList *modes;
 
   crtc = g_object_new (META_TYPE_CRTC,
+                       "id", crtc_id,
                        "gpu", gpu,
                        NULL);
 
@@ -258,7 +259,6 @@ meta_create_xrandr_crtc (MetaGpuXrandr      *gpu_xrandr,
 
   crtc->driver_private = crtc_xrandr;
   crtc->driver_notify = (GDestroyNotify) meta_crtc_destroy_notify;
-  crtc->crtc_id = crtc_id;
 
   panning = XRRGetPanning (xdisplay, resources, crtc_id);
   if (panning && panning->width > 0 && panning->height > 0)
diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c
index 5c161896f3..af6638f38c 100644
--- a/src/backends/x11/meta-monitor-manager-xrandr.c
+++ b/src/backends/x11/meta-monitor-manager-xrandr.c
@@ -417,7 +417,7 @@ apply_crtc_assignments (MetaMonitorManager *manager,
           xrandr_set_crtc_config (manager_xrandr,
                                   crtc,
                                   save_timestamp,
-                                  (xcb_randr_crtc_t) crtc->crtc_id,
+                                  (xcb_randr_crtc_t) meta_crtc_get_id (crtc),
                                   XCB_CURRENT_TIME,
                                   0, 0, XCB_NONE,
                                   XCB_RANDR_ROTATION_ROTATE_0,
@@ -444,7 +444,7 @@ apply_crtc_assignments (MetaMonitorManager *manager,
       xrandr_set_crtc_config (manager_xrandr,
                               crtc,
                               save_timestamp,
-                              (xcb_randr_crtc_t) crtc->crtc_id,
+                              (xcb_randr_crtc_t) meta_crtc_get_id (crtc),
                               XCB_CURRENT_TIME,
                               0, 0, XCB_NONE,
                               XCB_RANDR_ROTATION_ROTATE_0,
@@ -498,7 +498,7 @@ apply_crtc_assignments (MetaMonitorManager *manager,
           if (!xrandr_set_crtc_config (manager_xrandr,
                                        crtc,
                                        save_timestamp,
-                                       (xcb_randr_crtc_t) crtc->crtc_id,
+                                       (xcb_randr_crtc_t) meta_crtc_get_id (crtc),
                                        XCB_CURRENT_TIME,
                                        (int) roundf (crtc_info->layout.origin.x),
                                        (int) roundf (crtc_info->layout.origin.y),
@@ -507,7 +507,8 @@ apply_crtc_assignments (MetaMonitorManager *manager,
                                        output_ids, n_output_ids))
             {
               meta_warning ("Configuring CRTC %d with mode %d (%d x %d @ %f) at position %d, %d and 
transform %u failed\n",
-                            (unsigned)(crtc->crtc_id), (unsigned)(mode->mode_id),
+                            (unsigned) meta_crtc_get_id (crtc),
+                            (unsigned) mode->mode_id,
                             mode->width, mode->height, (float)mode->refresh_rate,
                             (int) roundf (crtc_info->layout.origin.x),
                             (int) roundf (crtc_info->layout.origin.y),
@@ -658,7 +659,8 @@ meta_monitor_manager_xrandr_get_crtc_gamma (MetaMonitorManager  *manager,
   MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager);
   XRRCrtcGamma *gamma;
 
-  gamma = XRRGetCrtcGamma (manager_xrandr->xdisplay, (XID)crtc->crtc_id);
+  gamma = XRRGetCrtcGamma (manager_xrandr->xdisplay,
+                           (XID) meta_crtc_get_id (crtc));
 
   *size = gamma->size;
   *red = g_memdup (gamma->red, sizeof (unsigned short) * gamma->size);
@@ -684,7 +686,9 @@ meta_monitor_manager_xrandr_set_crtc_gamma (MetaMonitorManager *manager,
   memcpy (gamma->green, green, sizeof (unsigned short) * size);
   memcpy (gamma->blue, blue, sizeof (unsigned short) * size);
 
-  XRRSetCrtcGamma (manager_xrandr->xdisplay, (XID)crtc->crtc_id, gamma);
+  XRRSetCrtcGamma (manager_xrandr->xdisplay,
+                   (XID) meta_crtc_get_id (crtc),
+                   gamma);
 
   XRRFreeGamma (gamma);
 }
diff --git a/src/backends/x11/meta-output-xrandr.c b/src/backends/x11/meta-output-xrandr.c
index 78370bf1fc..3c94babf4c 100644
--- a/src/backends/x11/meta-output-xrandr.c
+++ b/src/backends/x11/meta-output-xrandr.c
@@ -737,7 +737,7 @@ output_get_crtcs (MetaOutput    *output,
         {
           MetaCrtc *crtc = l->data;
 
-          if ((XID) crtc->crtc_id == xrandr_output->crtcs[i])
+          if ((XID) meta_crtc_get_id (crtc) == xrandr_output->crtcs[i])
             {
               output->possible_crtcs[n_actual_crtcs] = crtc;
               n_actual_crtcs += 1;
@@ -752,7 +752,7 @@ output_get_crtcs (MetaOutput    *output,
     {
       MetaCrtc *crtc = l->data;
 
-      if ((XID) crtc->crtc_id == xrandr_output->crtc)
+      if ((XID) meta_crtc_get_id (crtc) == xrandr_output->crtc)
         {
           meta_output_assign_crtc (output, crtc);
           break;
diff --git a/src/tests/headless-start-test.c b/src/tests/headless-start-test.c
index d6d4f96b13..2bb558479b 100644
--- a/src/tests/headless-start-test.c
+++ b/src/tests/headless-start-test.c
@@ -139,9 +139,9 @@ meta_test_headless_monitor_connect (void)
 
   gpu = META_GPU (meta_backend_get_gpus (meta_get_backend ())->data);
   crtc = g_object_new (META_TYPE_CRTC,
+                       "id", 1,
                        "gpu", gpu,
                        NULL);
-  crtc->crtc_id = 1;
   crtc->all_transforms = ALL_TRANSFORMS;
   test_setup->crtcs = g_list_append (NULL, crtc);
 
diff --git a/src/tests/monitor-test-utils.c b/src/tests/monitor-test-utils.c
index f1b5665891..cc1642898e 100644
--- a/src/tests/monitor-test-utils.c
+++ b/src/tests/monitor-test-utils.c
@@ -573,9 +573,9 @@ create_monitor_test_setup (MonitorTestCaseSetup *setup,
       MetaCrtc *crtc;
 
       crtc = g_object_new (META_TYPE_CRTC,
+                           "id", i + 1,
                            "gpu", test_get_gpu (),
                            NULL);
-      crtc->crtc_id = i + 1;
       crtc->all_transforms = ALL_TRANSFORMS;
 
       test_setup->crtcs = g_list_append (test_setup->crtcs, crtc);


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