[mutter] crtc: Move CRTC id field into instance private
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] crtc: Move CRTC id field into instance private
- Date: Wed, 10 Jun 2020 19:19:50 +0000 (UTC)
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]