[mutter] crtc: Move all_transforms field into instance private
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] crtc: Move all_transforms field into instance private
- Date: Wed, 10 Jun 2020 19:20:36 +0000 (UTC)
commit c3fc6025b17eda210c5ad172dad229c929a34a67
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Wed Feb 26 10:14:52 2020 +0100
crtc: Move all_transforms field into instance private
Now set as a property during construction. Only actually set by the
Xrandr backend, as it's the only one currently not supporting all
transforms, which is the default.
While at it, move the 'ALL_TRANFORMS' macro to meta-monitor-tranforms.h.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1287
src/backends/meta-crtc.c | 30 ++++++++++++++++++++++++++
src/backends/meta-crtc.h | 4 ++--
src/backends/meta-monitor-manager-dummy.c | 4 ----
src/backends/meta-monitor-manager.c | 6 ++++--
src/backends/meta-monitor-transform.h | 1 +
src/backends/native/meta-crtc-kms.c | 1 -
src/backends/x11/meta-crtc-xrandr.c | 11 +++++-----
src/backends/x11/meta-monitor-manager-xrandr.c | 3 ++-
src/tests/headless-start-test.c | 2 --
src/tests/monitor-test-utils.c | 1 -
src/tests/monitor-test-utils.h | 2 --
11 files changed, 44 insertions(+), 21 deletions(-)
---
diff --git a/src/backends/meta-crtc.c b/src/backends/meta-crtc.c
index d06334fe6c..815823b145 100644
--- a/src/backends/meta-crtc.c
+++ b/src/backends/meta-crtc.c
@@ -29,6 +29,7 @@ enum
PROP_ID,
PROP_GPU,
+ PROP_ALL_TRANSFORMS,
N_PROPS
};
@@ -40,6 +41,8 @@ typedef struct _MetaCrtcPrivate
uint64_t id;
MetaGpu *gpu;
+
+ MetaMonitorTransform all_transforms;
} MetaCrtcPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (MetaCrtc, meta_crtc, G_TYPE_OBJECT)
@@ -62,6 +65,14 @@ meta_crtc_get_gpu (MetaCrtc *crtc)
return priv->gpu;
}
+MetaMonitorTransform
+meta_crtc_get_all_transforms (MetaCrtc *crtc)
+{
+ MetaCrtcPrivate *priv = meta_crtc_get_instance_private (crtc);
+
+ return priv->all_transforms;
+}
+
void
meta_crtc_set_config (MetaCrtc *crtc,
graphene_rect_t *layout,
@@ -103,6 +114,9 @@ meta_crtc_set_property (GObject *object,
case PROP_GPU:
priv->gpu = g_value_get_object (value);
break;
+ case PROP_ALL_TRANSFORMS:
+ priv->all_transforms = g_value_get_uint (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -125,6 +139,9 @@ meta_crtc_get_property (GObject *object,
case PROP_GPU:
g_value_set_object (value, priv->gpu);
break;
+ case PROP_ALL_TRANSFORMS:
+ g_value_set_uint (value, priv->all_transforms);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -146,6 +163,9 @@ meta_crtc_finalize (GObject *object)
static void
meta_crtc_init (MetaCrtc *crtc)
{
+ MetaCrtcPrivate *priv = meta_crtc_get_instance_private (crtc);
+
+ priv->all_transforms = META_MONITOR_ALL_TRANSFORMS;
}
static void
@@ -173,6 +193,16 @@ meta_crtc_class_init (MetaCrtcClass *klass)
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS);
+ obj_props[PROP_ALL_TRANSFORMS] =
+ g_param_spec_uint ("all-transforms",
+ "all-transforms",
+ "All transforms",
+ 0,
+ META_MONITOR_ALL_TRANSFORMS,
+ META_MONITOR_ALL_TRANSFORMS,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS);
g_object_class_install_properties (object_class, N_PROPS, obj_props);
}
diff --git a/src/backends/meta-crtc.h b/src/backends/meta-crtc.h
index 12c46951c2..e5737c446b 100644
--- a/src/backends/meta-crtc.h
+++ b/src/backends/meta-crtc.h
@@ -60,8 +60,6 @@ struct _MetaCrtc
{
GObject parent;
- unsigned int all_transforms;
-
MetaCrtcConfig *config;
gpointer driver_private;
@@ -97,6 +95,8 @@ uint64_t meta_crtc_get_id (MetaCrtc *crtc);
META_EXPORT_TEST
MetaGpu * meta_crtc_get_gpu (MetaCrtc *crtc);
+MetaMonitorTransform meta_crtc_get_all_transforms (MetaCrtc *crtc);
+
META_EXPORT_TEST
void meta_crtc_set_config (MetaCrtc *crtc,
graphene_rect_t *layout,
diff --git a/src/backends/meta-monitor-manager-dummy.c b/src/backends/meta-monitor-manager-dummy.c
index 6547f9dcdf..3c59f68604 100644
--- a/src/backends/meta-monitor-manager-dummy.c
+++ b/src/backends/meta-monitor-manager-dummy.c
@@ -36,8 +36,6 @@
#include "backends/meta-output.h"
#include "meta/util.h"
-#define ALL_TRANSFORMS ((1 << (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)) - 1)
-
#define MAX_MONITORS 5
#define MAX_OUTPUTS (MAX_MONITORS * 2)
#define MAX_CRTCS (MAX_MONITORS * 2)
@@ -203,7 +201,6 @@ append_monitor (MetaMonitorManager *manager,
"id", g_list_length (*crtcs) + 1,
"gpu", gpu,
NULL);
- crtc->all_transforms = ALL_TRANSFORMS;
*crtcs = g_list_append (*crtcs, crtc);
number = g_list_length (*outputs) + 1;
@@ -298,7 +295,6 @@ append_tiled_monitor (MetaMonitorManager *manager,
"id", g_list_length (*crtcs) + i + 1,
"gpu", gpu,
NULL);
- crtc->all_transforms = ALL_TRANSFORMS;
new_crtcs = g_list_append (new_crtcs, crtc);
}
*crtcs = g_list_concat (*crtcs, new_crtcs);
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index d76e4348b2..ebe763cb37 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -1021,8 +1021,10 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
g_variant_builder_init (&transforms, G_VARIANT_TYPE ("au"));
for (j = 0; j <= META_MONITOR_TRANSFORM_FLIPPED_270; j++)
- if (crtc->all_transforms & (1 << j))
- g_variant_builder_add (&transforms, "u", j);
+ {
+ if (meta_crtc_get_all_transforms (crtc) & (1 << j))
+ g_variant_builder_add (&transforms, "u", j);
+ }
crtc_config = crtc->config;
diff --git a/src/backends/meta-monitor-transform.h b/src/backends/meta-monitor-transform.h
index c49e29e816..6113f3a5aa 100644
--- a/src/backends/meta-monitor-transform.h
+++ b/src/backends/meta-monitor-transform.h
@@ -36,6 +36,7 @@ enum _MetaMonitorTransform
META_MONITOR_TRANSFORM_FLIPPED_270,
};
#define META_MONITOR_N_TRANSFORMS (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)
+#define META_MONITOR_ALL_TRANSFORMS ((1 << META_MONITOR_N_TRANSFORMS) - 1)
/* Returns true if transform causes width and height to be inverted
This is true for the odd transforms in the enum */
diff --git a/src/backends/native/meta-crtc-kms.c b/src/backends/native/meta-crtc-kms.c
index 372a4dac45..f8be557360 100644
--- a/src/backends/native/meta-crtc-kms.c
+++ b/src/backends/native/meta-crtc-kms.c
@@ -302,7 +302,6 @@ meta_create_kms_crtc (MetaGpuKms *gpu_kms,
"id", meta_kms_crtc_get_id (kms_crtc),
"gpu", gpu,
NULL);
- crtc->all_transforms = ALL_TRANSFORMS_MASK;
crtc_kms = g_new0 (MetaCrtcKms, 1);
crtc_kms->kms_crtc = kms_crtc;
diff --git a/src/backends/x11/meta-crtc-xrandr.c b/src/backends/x11/meta-crtc-xrandr.c
index 0b68a9003d..77621b9d54 100644
--- a/src/backends/x11/meta-crtc-xrandr.c
+++ b/src/backends/x11/meta-crtc-xrandr.c
@@ -46,8 +46,6 @@
#include "backends/x11/meta-gpu-xrandr.h"
#include "backends/x11/meta-monitor-manager-xrandr.h"
-#define ALL_TRANSFORMS ((1 << (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)) - 1)
-
typedef struct _MetaCrtcXrandr
{
MetaRectangle rect;
@@ -161,7 +159,7 @@ meta_monitor_transform_from_xrandr_all (Rotation rotation)
/* All rotations and one reflection -> all of them by composition */
if ((rotation & ALL_ROTATIONS) &&
((rotation & RR_Reflect_X) || (rotation & RR_Reflect_Y)))
- return ALL_TRANSFORMS;
+ return META_MONITOR_ALL_TRANSFORMS;
ret = 1 << META_MONITOR_TRANSFORM_NORMAL;
if (rotation & RR_Rotate_90)
@@ -242,15 +240,19 @@ meta_create_xrandr_crtc (MetaGpuXrandr *gpu_xrandr,
META_MONITOR_MANAGER_XRANDR (monitor_manager);
Display *xdisplay =
meta_monitor_manager_xrandr_get_xdisplay (monitor_manager_xrandr);
+ MetaMonitorTransform all_transforms;
MetaCrtc *crtc;
MetaCrtcXrandr *crtc_xrandr;
XRRPanning *panning;
unsigned int i;
GList *modes;
+ all_transforms =
+ meta_monitor_transform_from_xrandr_all (xrandr_crtc->rotations);
crtc = g_object_new (META_TYPE_CRTC,
"id", crtc_id,
"gpu", gpu,
+ "all-transforms", all_transforms,
NULL);
crtc_xrandr = g_new0 (MetaCrtcXrandr, 1);
@@ -280,9 +282,6 @@ meta_create_xrandr_crtc (MetaGpuXrandr *gpu_xrandr,
};
}
- crtc->all_transforms =
- meta_monitor_transform_from_xrandr_all (xrandr_crtc->rotations);
-
modes = meta_gpu_get_modes (gpu);
for (i = 0; i < (unsigned int) resources->nmode; i++)
{
diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c
index cccc07fe4d..b4873aa30e 100644
--- a/src/backends/x11/meta-monitor-manager-xrandr.c
+++ b/src/backends/x11/meta-monitor-manager-xrandr.c
@@ -857,7 +857,8 @@ meta_monitor_manager_xrandr_is_transform_handled (MetaMonitorManager *manager,
MetaCrtc *crtc,
MetaMonitorTransform transform)
{
- g_warn_if_fail ((crtc->all_transforms & transform) == transform);
+ g_warn_if_fail ((meta_crtc_get_all_transforms (crtc) & transform) ==
+ transform);
return TRUE;
}
diff --git a/src/tests/headless-start-test.c b/src/tests/headless-start-test.c
index 223ef1a498..388f387ea7 100644
--- a/src/tests/headless-start-test.c
+++ b/src/tests/headless-start-test.c
@@ -31,7 +31,6 @@
#include "tests/test-utils.h"
#include "wayland/meta-wayland.h"
-#define ALL_TRANSFORMS ((1 << (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)) - 1)
#define FRAME_WARNING "Frame has assigned frame counter but no frame drawn time"
static gboolean
@@ -143,7 +142,6 @@ meta_test_headless_monitor_connect (void)
"id", 1,
"gpu", gpu,
NULL);
- crtc->all_transforms = ALL_TRANSFORMS;
test_setup->crtcs = g_list_append (NULL, crtc);
modes = g_new0 (MetaCrtcMode *, 1);
diff --git a/src/tests/monitor-test-utils.c b/src/tests/monitor-test-utils.c
index 484ec1f19d..3253a04c0a 100644
--- a/src/tests/monitor-test-utils.c
+++ b/src/tests/monitor-test-utils.c
@@ -576,7 +576,6 @@ create_monitor_test_setup (MonitorTestCaseSetup *setup,
"id", i + 1,
"gpu", test_get_gpu (),
NULL);
- crtc->all_transforms = ALL_TRANSFORMS;
test_setup->crtcs = g_list_append (test_setup->crtcs, crtc);
}
diff --git a/src/tests/monitor-test-utils.h b/src/tests/monitor-test-utils.h
index db6be98f37..3ebf1ff796 100644
--- a/src/tests/monitor-test-utils.h
+++ b/src/tests/monitor-test-utils.h
@@ -26,8 +26,6 @@
#include "backends/meta-crtc.h"
#include "backends/meta-output.h"
-#define ALL_TRANSFORMS ((1 << (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)) - 1)
-
#define MAX_N_MODES 10
#define MAX_N_OUTPUTS 10
#define MAX_N_CRTCS 10
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]