[gnome-flashback] crtc: move all_transforms field into instance private
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-flashback] crtc: move all_transforms field into instance private
- Date: Sat, 11 Jul 2020 18:42:39 +0000 (UTC)
commit 3f00d85b09b7917006ab34afc88c38a567fa7de2
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Fri Jul 10 12:05:44 2020 +0300
crtc: move all_transforms field into instance private
Based on mutter commit:
https://gitlab.gnome.org/GNOME/mutter/-/commit/c3fc6025b17eda210c5a
backends/gf-crtc-private.h | 18 +++++++--------
backends/gf-crtc-xrandr.c | 9 ++++----
backends/gf-crtc.c | 43 +++++++++++++++++++++++++++++++++---
backends/gf-monitor-manager-xrandr.c | 2 +-
backends/gf-monitor-manager.c | 6 +++--
backends/gf-monitor-transform.h | 3 +++
6 files changed, 62 insertions(+), 19 deletions(-)
---
diff --git a/backends/gf-crtc-private.h b/backends/gf-crtc-private.h
index 78fafcc..b3ec5e1 100644
--- a/backends/gf-crtc-private.h
+++ b/backends/gf-crtc-private.h
@@ -47,8 +47,6 @@ struct _GfCrtc
{
GObject parent;
- guint all_transforms;
-
GfCrtcConfig *config;
gpointer driver_private;
@@ -87,16 +85,18 @@ G_DECLARE_FINAL_TYPE (GfCrtc, gf_crtc, GF, CRTC, GObject)
#define GF_TYPE_CRTC_MODE (gf_crtc_mode_get_type ())
G_DECLARE_FINAL_TYPE (GfCrtcMode, gf_crtc_mode, GF, CRTC_MODE, GObject)
-uint64_t gf_crtc_get_id (GfCrtc *self);
+uint64_t gf_crtc_get_id (GfCrtc *self);
+
+GfGpu *gf_crtc_get_gpu (GfCrtc *self);
-GfGpu *gf_crtc_get_gpu (GfCrtc *self);
+GfMonitorTransform gf_crtc_get_all_transforms (GfCrtc *self);
-void gf_crtc_set_config (GfCrtc *self,
- GfRectangle *layout,
- GfCrtcMode *mode,
- GfMonitorTransform transform);
+void gf_crtc_set_config (GfCrtc *self,
+ GfRectangle *layout,
+ GfCrtcMode *mode,
+ GfMonitorTransform transform);
-void gf_crtc_unset_config (GfCrtc *self);
+void gf_crtc_unset_config (GfCrtc *self);
G_END_DECLS
diff --git a/backends/gf-crtc-xrandr.c b/backends/gf-crtc-xrandr.c
index 697331b..4c48279 100644
--- a/backends/gf-crtc-xrandr.c
+++ b/backends/gf-crtc-xrandr.c
@@ -32,7 +32,6 @@
#include "gf-output-private.h"
#define ALL_ROTATIONS (RR_Rotate_0 | RR_Rotate_90 | RR_Rotate_180 | RR_Rotate_270)
-#define ALL_TRANSFORMS ((1 << (GF_MONITOR_TRANSFORM_FLIPPED_270 + 1)) - 1)
typedef struct
{
@@ -99,7 +98,7 @@ gf_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 GF_MONITOR_ALL_TRANSFORMS;
ret = 1 << GF_MONITOR_TRANSFORM_NORMAL;
if (rotation & RR_Rotate_90)
@@ -128,6 +127,7 @@ gf_create_xrandr_crtc (GfGpuXrandr *gpu_xrandr,
{
GfGpu *gpu;
+ GfMonitorTransform all_transforms;
GfCrtc *crtc;
GfCrtcXrandr *crtc_xrandr;
unsigned int i;
@@ -135,9 +135,12 @@ gf_create_xrandr_crtc (GfGpuXrandr *gpu_xrandr,
gpu = GF_GPU (gpu_xrandr);
+ all_transforms = gf_monitor_transform_from_xrandr_all (xrandr_crtc->rotations);
+
crtc = g_object_new (GF_TYPE_CRTC,
"id", crtc_id,
"gpu", gpu,
+ "all-transforms", all_transforms,
NULL);
crtc_xrandr = g_new0 (GfCrtcXrandr, 1);
@@ -152,8 +155,6 @@ gf_create_xrandr_crtc (GfGpuXrandr *gpu_xrandr,
crtc->driver_private = crtc_xrandr;
crtc->driver_notify = (GDestroyNotify) gf_crtc_destroy_notify;
- crtc->all_transforms = gf_monitor_transform_from_xrandr_all (xrandr_crtc->rotations);
-
modes = gf_gpu_get_modes (gpu);
for (i = 0; i < (guint) resources->nmode; i++)
{
diff --git a/backends/gf-crtc.c b/backends/gf-crtc.c
index 0e9a1e1..8dc4830 100644
--- a/backends/gf-crtc.c
+++ b/backends/gf-crtc.c
@@ -23,9 +23,11 @@
typedef struct
{
- uint64_t id;
+ uint64_t id;
- GfGpu *gpu;
+ GfGpu *gpu;
+
+ GfMonitorTransform all_transforms;
} GfCrtcPrivate;
enum
@@ -34,6 +36,7 @@ enum
PROP_ID,
PROP_GPU,
+ PROP_ALL_TRANSFORMS,
LAST_PROP
};
@@ -79,6 +82,10 @@ gf_crtc_get_property (GObject *object,
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, property_id, pspec);
break;
@@ -107,6 +114,10 @@ gf_crtc_set_property (GObject *object,
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, property_id, pspec);
break;
@@ -144,13 +155,29 @@ gf_crtc_class_init (GfCrtcClass *crtc_class)
G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS);
+ crtc_properties[PROP_ALL_TRANSFORMS] =
+ g_param_spec_uint ("all-transforms",
+ "all-transforms",
+ "All transforms",
+ 0,
+ GF_MONITOR_ALL_TRANSFORMS,
+ GF_MONITOR_ALL_TRANSFORMS,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS);
+
g_object_class_install_properties (object_class, LAST_PROP,
crtc_properties);
}
static void
-gf_crtc_init (GfCrtc *crtc)
+gf_crtc_init (GfCrtc *self)
{
+ GfCrtcPrivate *priv;
+
+ priv = gf_crtc_get_instance_private (self);
+
+ priv->all_transforms = GF_MONITOR_ALL_TRANSFORMS;
}
uint64_t
@@ -173,6 +200,16 @@ gf_crtc_get_gpu (GfCrtc *crtc)
return priv->gpu;
}
+GfMonitorTransform
+gf_crtc_get_all_transforms (GfCrtc *self)
+{
+ GfCrtcPrivate *priv;
+
+ priv = gf_crtc_get_instance_private (self);
+
+ return priv->all_transforms;
+}
+
void
gf_crtc_set_config (GfCrtc *crtc,
GfRectangle *layout,
diff --git a/backends/gf-monitor-manager-xrandr.c b/backends/gf-monitor-manager-xrandr.c
index 13d971d..588487f 100644
--- a/backends/gf-monitor-manager-xrandr.c
+++ b/backends/gf-monitor-manager-xrandr.c
@@ -1030,7 +1030,7 @@ gf_monitor_manager_xrandr_is_transform_handled (GfMonitorManager *manager,
GfCrtc *crtc,
GfMonitorTransform transform)
{
- g_warn_if_fail ((crtc->all_transforms & transform) == transform);
+ g_warn_if_fail ((gf_crtc_get_all_transforms (crtc) & transform) == transform);
return TRUE;
}
diff --git a/backends/gf-monitor-manager.c b/backends/gf-monitor-manager.c
index 8aa1f54..1e8734e 100644
--- a/backends/gf-monitor-manager.c
+++ b/backends/gf-monitor-manager.c
@@ -1106,8 +1106,10 @@ gf_monitor_manager_handle_get_resources (GfDBusDisplayConfig *skeleton,
g_variant_builder_init (&transforms, G_VARIANT_TYPE ("au"));
for (j = 0; j <= GF_MONITOR_TRANSFORM_FLIPPED_270; j++)
- if (crtc->all_transforms & (1 << j))
- g_variant_builder_add (&transforms, "u", j);
+ {
+ if (gf_crtc_get_all_transforms (crtc) & (1 << j))
+ g_variant_builder_add (&transforms, "u", j);
+ }
crtc_config = crtc->config;
diff --git a/backends/gf-monitor-transform.h b/backends/gf-monitor-transform.h
index eabc83d..bc6aca9 100644
--- a/backends/gf-monitor-transform.h
+++ b/backends/gf-monitor-transform.h
@@ -35,6 +35,9 @@ typedef enum
GF_MONITOR_TRANSFORM_FLIPPED_270,
} GfMonitorTransform;
+#define GF_MONITOR_N_TRANSFORMS (GF_MONITOR_TRANSFORM_FLIPPED_270 + 1)
+#define GF_MONITOR_ALL_TRANSFORMS ((1 << GF_MONITOR_N_TRANSFORMS) - 1)
+
static inline gboolean
gf_monitor_transform_is_rotated (GfMonitorTransform transform)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]