[gnome-flashback] crtc: move CRTC id field into instance private
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-flashback] crtc: move CRTC id field into instance private
- Date: Sat, 11 Jul 2020 18:42:04 +0000 (UTC)
commit 73d3bc5c4f073191a8acd7bccb52769e9a2f3f12
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Tue Jul 7 15:49:48 2020 +0300
crtc: move CRTC id field into instance private
Based on mutter commit:
https://gitlab.gnome.org/GNOME/mutter/-/commit/a42eed023136878f2a14
backends/gf-crtc-private.h | 16 +++++++++-------
backends/gf-crtc-xrandr.c | 2 +-
backends/gf-crtc.c | 34 +++++++++++++++++++++++++++++++++-
backends/gf-monitor-config-manager.c | 17 +++++++++++++----
backends/gf-monitor-manager-xrandr.c | 12 ++++++------
backends/gf-monitor-manager.c | 4 ++--
backends/gf-output-xrandr.c | 4 ++--
7 files changed, 66 insertions(+), 23 deletions(-)
---
diff --git a/backends/gf-crtc-private.h b/backends/gf-crtc-private.h
index 3db120b..d0df0b2 100644
--- a/backends/gf-crtc-private.h
+++ b/backends/gf-crtc-private.h
@@ -26,6 +26,7 @@
#define GF_CRTC_PRIVATE_H
#include <glib-object.h>
+#include <stdint.h>
#include "gf-gpu-private.h"
#include "gf-monitor-manager-enums-private.h"
@@ -46,7 +47,6 @@ struct _GfCrtc
{
GObject parent;
- glong crtc_id;
guint all_transforms;
GfCrtcConfig *config;
@@ -90,14 +90,16 @@ 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)
-GfGpu *gf_crtc_get_gpu (GfCrtc *crtc);
+uint64_t gf_crtc_get_id (GfCrtc *self);
-void gf_crtc_set_config (GfCrtc *crtc,
- GfRectangle *layout,
- GfCrtcMode *mode,
- GfMonitorTransform transform);
+GfGpu *gf_crtc_get_gpu (GfCrtc *self);
-void gf_crtc_unset_config (GfCrtc *crtc);
+void gf_crtc_set_config (GfCrtc *self,
+ GfRectangle *layout,
+ GfCrtcMode *mode,
+ GfMonitorTransform transform);
+
+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 49473a0..fefb014 100644
--- a/backends/gf-crtc-xrandr.c
+++ b/backends/gf-crtc-xrandr.c
@@ -136,6 +136,7 @@ gf_create_xrandr_crtc (GfGpuXrandr *gpu_xrandr,
gpu = GF_GPU (gpu_xrandr);
crtc = g_object_new (GF_TYPE_CRTC,
+ "id", crtc_id,
"gpu", gpu,
NULL);
@@ -151,7 +152,6 @@ gf_create_xrandr_crtc (GfGpuXrandr *gpu_xrandr,
crtc->driver_private = crtc_xrandr;
crtc->driver_notify = (GDestroyNotify) gf_crtc_destroy_notify;
- crtc->crtc_id = crtc_id;
crtc->is_dirty = FALSE;
crtc->all_transforms = gf_monitor_transform_from_xrandr_all (xrandr_crtc->rotations);
diff --git a/backends/gf-crtc.c b/backends/gf-crtc.c
index aaea8fc..0e9a1e1 100644
--- a/backends/gf-crtc.c
+++ b/backends/gf-crtc.c
@@ -23,13 +23,16 @@
typedef struct
{
- GfGpu *gpu;
+ uint64_t id;
+
+ GfGpu *gpu;
} GfCrtcPrivate;
enum
{
PROP_0,
+ PROP_ID,
PROP_GPU,
LAST_PROP
@@ -68,6 +71,10 @@ gf_crtc_get_property (GObject *object,
switch (property_id)
{
+ case PROP_ID:
+ g_value_set_uint64 (value, priv->id);
+ break;
+
case PROP_GPU:
g_value_set_object (value, priv->gpu);
break;
@@ -92,6 +99,10 @@ gf_crtc_set_property (GObject *object,
switch (property_id)
{
+ case PROP_ID:
+ priv->id = g_value_get_uint64 (value);
+ break;
+
case PROP_GPU:
priv->gpu = g_value_get_object (value);
break;
@@ -113,6 +124,17 @@ gf_crtc_class_init (GfCrtcClass *crtc_class)
object_class->get_property = gf_crtc_get_property;
object_class->set_property = gf_crtc_set_property;
+ crtc_properties[PROP_ID] =
+ g_param_spec_uint64 ("id",
+ "id",
+ "id",
+ 0,
+ UINT64_MAX,
+ 0,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS);
+
crtc_properties[PROP_GPU] =
g_param_spec_object ("gpu",
"GfGpu",
@@ -131,6 +153,16 @@ gf_crtc_init (GfCrtc *crtc)
{
}
+uint64_t
+gf_crtc_get_id (GfCrtc *self)
+{
+ GfCrtcPrivate *priv;
+
+ priv = gf_crtc_get_instance_private (self);
+
+ return priv->id;
+}
+
GfGpu *
gf_crtc_get_gpu (GfCrtc *crtc)
{
diff --git a/backends/gf-monitor-config-manager.c b/backends/gf-monitor-config-manager.c
index 695ea9b..078db9d 100644
--- a/backends/gf-monitor-config-manager.c
+++ b/backends/gf-monitor-config-manager.c
@@ -588,8 +588,11 @@ is_crtc_reserved (GfCrtc *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 == gf_crtc_get_id (crtc))
return TRUE;
}
@@ -980,7 +983,7 @@ gf_monitor_config_manager_assign (GfMonitorManager *manager,
crtc_infos = g_ptr_array_new_with_free_func ((GDestroyNotify) gf_crtc_info_free);
output_infos = g_ptr_array_new_with_free_func ((GDestroyNotify) gf_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)
{
@@ -1003,7 +1006,13 @@ gf_monitor_config_manager_assign (GfMonitorManager *manager,
crtc = gf_output_get_assigned_crtc (output);
if (crtc)
- g_array_append_val (reserved_crtcs, crtc->crtc_id);
+ {
+ uint64_t crtc_id;
+
+ crtc_id = gf_crtc_get_id (crtc);
+
+ g_array_append_val (reserved_crtcs, crtc_id);
+ }
}
}
}
diff --git a/backends/gf-monitor-manager-xrandr.c b/backends/gf-monitor-manager-xrandr.c
index a8076da..83fd72c 100644
--- a/backends/gf-monitor-manager-xrandr.c
+++ b/backends/gf-monitor-manager-xrandr.c
@@ -428,7 +428,7 @@ apply_crtc_assignments (GfMonitorManager *manager,
xrandr_set_crtc_config (xrandr,
crtc,
save_timestamp,
- (xcb_randr_crtc_t) crtc->crtc_id,
+ (xcb_randr_crtc_t) gf_crtc_get_id (crtc),
XCB_CURRENT_TIME,
0, 0, XCB_NONE,
XCB_RANDR_ROTATION_ROTATE_0,
@@ -455,7 +455,7 @@ apply_crtc_assignments (GfMonitorManager *manager,
xrandr_set_crtc_config (xrandr,
crtc,
save_timestamp,
- (xcb_randr_crtc_t) crtc->crtc_id,
+ (xcb_randr_crtc_t) gf_crtc_get_id (crtc),
XCB_CURRENT_TIME,
0, 0, XCB_NONE,
XCB_RANDR_ROTATION_ROTATE_0,
@@ -509,7 +509,7 @@ apply_crtc_assignments (GfMonitorManager *manager,
if (!xrandr_set_crtc_config (xrandr,
crtc,
save_timestamp,
- (xcb_randr_crtc_t) crtc->crtc_id,
+ (xcb_randr_crtc_t) gf_crtc_get_id (crtc),
XCB_CURRENT_TIME,
crtc_info->layout.x,
crtc_info->layout.y,
@@ -518,7 +518,7 @@ apply_crtc_assignments (GfMonitorManager *manager,
output_ids, n_output_ids))
{
g_warning ("Configuring CRTC %d with mode %d (%d x %d @ %f) at position %d, %d and transform
%u failed\n",
- (guint) (crtc->crtc_id), (guint) (mode->mode_id),
+ (guint) gf_crtc_get_id (crtc), (guint) (mode->mode_id),
mode->width, mode->height, (gdouble) mode->refresh_rate,
crtc_info->layout.x, crtc_info->layout.y,
crtc_info->transform);
@@ -916,7 +916,7 @@ gf_monitor_manager_xrandr_get_crtc_gamma (GfMonitorManager *manager,
XRRCrtcGamma *gamma;
xrandr = GF_MONITOR_MANAGER_XRANDR (manager);
- gamma = XRRGetCrtcGamma (xrandr->xdisplay, (XID) crtc->crtc_id);
+ gamma = XRRGetCrtcGamma (xrandr->xdisplay, (XID) gf_crtc_get_id (crtc));
*size = gamma->size;
*red = g_memdup (gamma->red, sizeof (gushort) * gamma->size);
@@ -944,7 +944,7 @@ gf_monitor_manager_xrandr_set_crtc_gamma (GfMonitorManager *manager,
memcpy (gamma->green, green, sizeof (gushort) * size);
memcpy (gamma->blue, blue, sizeof (gushort) * size);
- XRRSetCrtcGamma (xrandr->xdisplay, (XID) crtc->crtc_id, gamma);
+ XRRSetCrtcGamma (xrandr->xdisplay, (XID) gf_crtc_get_id (crtc), gamma);
XRRFreeGamma (gamma);
}
diff --git a/backends/gf-monitor-manager.c b/backends/gf-monitor-manager.c
index c82a602..f6f69e9 100644
--- a/backends/gf-monitor-manager.c
+++ b/backends/gf-monitor-manager.c
@@ -1111,7 +1111,7 @@ gf_monitor_manager_handle_get_resources (GfDBusDisplayConfig *skeleton,
g_variant_builder_add (&crtc_builder, "(uxiiiiiuaua{sv})",
i, /* ID */
- (int64_t) crtc->crtc_id,
+ (int64_t) gf_crtc_get_id (crtc),
crtc_config->layout.x,
crtc_config->layout.y,
crtc_config->layout.width,
@@ -1125,7 +1125,7 @@ gf_monitor_manager_handle_get_resources (GfDBusDisplayConfig *skeleton,
{
g_variant_builder_add (&crtc_builder, "(uxiiiiiuaua{sv})",
i, /* ID */
- (int64_t) crtc->crtc_id,
+ (int64_t) gf_crtc_get_id (crtc),
0,
0,
0,
diff --git a/backends/gf-output-xrandr.c b/backends/gf-output-xrandr.c
index 46b0928..80fe048 100644
--- a/backends/gf-output-xrandr.c
+++ b/backends/gf-output-xrandr.c
@@ -531,7 +531,7 @@ output_get_crtcs (GfOutput *output,
{
GfCrtc *crtc = l->data;
- if ((XID) crtc->crtc_id == xrandr_output->crtcs[j])
+ if ((XID) gf_crtc_get_id (crtc) == xrandr_output->crtcs[j])
{
output->possible_crtcs[n_actual_crtcs] = crtc;
n_actual_crtcs += 1;
@@ -546,7 +546,7 @@ output_get_crtcs (GfOutput *output,
{
GfCrtc *crtc = l->data;
- if ((XID) crtc->crtc_id == xrandr_output->crtc)
+ if ((XID) gf_crtc_get_id (crtc) == xrandr_output->crtc)
{
gf_output_assign_crtc (output, crtc);
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]