[gnome-flashback] output: move winsys_id into instance private and rename to id



commit 2636d52c6071283182fe68478c9ced7dce8a7b9b
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Tue Jul 7 22:27:31 2020 +0300

    output: move winsys_id into instance private and rename to id
    
    Based on mutter commit:
    https://gitlab.gnome.org/GNOME/mutter/-/commit/e063947a16a1c0a4f603

 backends/gf-gpu-xrandr.c             |  2 +-
 backends/gf-logical-monitor.c        |  4 +--
 backends/gf-monitor-manager-xrandr.c |  4 +--
 backends/gf-monitor-manager.c        |  2 +-
 backends/gf-monitor-normal.c         |  2 +-
 backends/gf-monitor-tiled.c          |  2 +-
 backends/gf-output-private.h         |  5 ++--
 backends/gf-output-xrandr.c          | 50 +++++++++++++++++++++---------------
 backends/gf-output.c                 | 36 ++++++++++++++++++++++++--
 9 files changed, 74 insertions(+), 33 deletions(-)
---
diff --git a/backends/gf-gpu-xrandr.c b/backends/gf-gpu-xrandr.c
index 3909e42..17df07d 100644
--- a/backends/gf-gpu-xrandr.c
+++ b/backends/gf-gpu-xrandr.c
@@ -215,7 +215,7 @@ gf_gpu_xrandr_read_current (GfGpu   *gpu,
             {
               GfOutput *possible_clone = k->data;
 
-              if (clone == (XID) possible_clone->winsys_id)
+              if (clone == (XID) gf_output_get_id (possible_clone))
                 {
                   output->possible_clones[j] = possible_clone;
                   break;
diff --git a/backends/gf-logical-monitor.c b/backends/gf-logical-monitor.c
index 1c637be..3ed1f73 100644
--- a/backends/gf-logical-monitor.c
+++ b/backends/gf-logical-monitor.c
@@ -146,7 +146,7 @@ gf_logical_monitor_new (GfMonitorManager       *monitor_manager,
   main_output = gf_monitor_get_main_output (first_monitor);
 
   logical_monitor->number = monitor_number;
-  logical_monitor->winsys_id = main_output->winsys_id;
+  logical_monitor->winsys_id = gf_output_get_id (main_output);
   logical_monitor->scale = logical_monitor_config->scale;
   logical_monitor->transform = logical_monitor_config->transform;
   logical_monitor->in_fullscreen = -1;
@@ -179,7 +179,7 @@ gf_logical_monitor_new_derived (GfMonitorManager *monitor_manager,
   main_output = gf_monitor_get_main_output (monitor);
 
   logical_monitor->number = monitor_number;
-  logical_monitor->winsys_id = main_output->winsys_id;
+  logical_monitor->winsys_id = gf_output_get_id (main_output);
   logical_monitor->scale = scale;
   logical_monitor->transform = transform;
   logical_monitor->in_fullscreen = -1;
diff --git a/backends/gf-monitor-manager-xrandr.c b/backends/gf-monitor-manager-xrandr.c
index e139a84..33e5a68 100644
--- a/backends/gf-monitor-manager-xrandr.c
+++ b/backends/gf-monitor-manager-xrandr.c
@@ -500,7 +500,7 @@ apply_crtc_assignments (GfMonitorManager  *manager,
               to_configure_outputs = g_list_remove (to_configure_outputs, output);
               gf_output_assign_crtc (output, crtc);
 
-              output_ids[j] = output->winsys_id;
+              output_ids[j] = gf_output_get_id (output);
             }
 
           rotation = gf_monitor_transform_to_xrandr (crtc_info->transform);
@@ -992,7 +992,7 @@ gf_monitor_manager_xrandr_tiled_monitor_added (GfMonitorManager *manager,
     {
       GfOutput *output = l->data;
 
-      monitor_info->outputs[i] = output->winsys_id;
+      monitor_info->outputs[i] = gf_output_get_id (output);
     }
 
   XRRSetMonitor (xrandr->xdisplay, xrandr->xroot, monitor_info);
diff --git a/backends/gf-monitor-manager.c b/backends/gf-monitor-manager.c
index f6f69e9..f6fe32f 100644
--- a/backends/gf-monitor-manager.c
+++ b/backends/gf-monitor-manager.c
@@ -1236,7 +1236,7 @@ gf_monitor_manager_handle_get_resources (GfDBusDisplayConfig   *skeleton,
 
       g_variant_builder_add (&output_builder, "(uxiausauaua{sv})",
                              i, /* ID */
-                             (gint64) output->winsys_id,
+                             gf_output_get_id (output),
                              crtc_index,
                              &crtcs,
                              output->name,
diff --git a/backends/gf-monitor-normal.c b/backends/gf-monitor-normal.c
index ae9cea5..f808b1b 100644
--- a/backends/gf-monitor-normal.c
+++ b/backends/gf-monitor-normal.c
@@ -176,7 +176,7 @@ gf_monitor_normal_new (GfGpu    *gpu,
   monitor = GF_MONITOR (normal);
 
   gf_monitor_append_output (monitor, output);
-  gf_monitor_set_winsys_id (monitor, output->winsys_id);
+  gf_monitor_set_winsys_id (monitor, gf_output_get_id (output));
   gf_monitor_generate_spec (monitor);
   generate_modes (normal);
 
diff --git a/backends/gf-monitor-tiled.c b/backends/gf-monitor-tiled.c
index 704a829..12b527a 100644
--- a/backends/gf-monitor-tiled.c
+++ b/backends/gf-monitor-tiled.c
@@ -734,7 +734,7 @@ gf_monitor_tiled_new (GfGpu            *gpu,
   tiled->monitor_manager = monitor_manager;
 
   tiled->tile_group_id = output->tile_info.group_id;
-  gf_monitor_set_winsys_id (monitor, output->winsys_id);
+  gf_monitor_set_winsys_id (monitor, gf_output_get_id (output));
 
   tiled->origin_output = output;
   add_tiled_monitor_outputs (gpu, tiled);
diff --git a/backends/gf-output-private.h b/backends/gf-output-private.h
index 6565843..32200c5 100644
--- a/backends/gf-output-private.h
+++ b/backends/gf-output-private.h
@@ -26,6 +26,7 @@
 #define GF_OUTPUT_PRIVATE_H
 
 #include <glib-object.h>
+#include <stdint.h>
 
 #include "gf-gpu-private.h"
 #include "gf-monitor-manager-enums-private.h"
@@ -57,8 +58,6 @@ struct _GfOutput
 {
   GObject              parent;
 
-  /* The low-level ID of this output, used to apply back configuration */
-  glong                winsys_id;
   gchar               *name;
   gchar               *vendor;
   gchar               *product;
@@ -105,6 +104,8 @@ struct _GfOutput
 #define GF_TYPE_OUTPUT (gf_output_get_type ())
 G_DECLARE_FINAL_TYPE (GfOutput, gf_output, GF, OUTPUT, GObject)
 
+uint64_t            gf_output_get_id                    (GfOutput           *self);
+
 GfGpu              *gf_output_get_gpu                   (GfOutput           *output);
 
 void                gf_output_assign_crtc               (GfOutput           *output,
diff --git a/backends/gf-output-xrandr.c b/backends/gf-output-xrandr.c
index 80fe048..99bc598 100644
--- a/backends/gf-output-xrandr.c
+++ b/backends/gf-output-xrandr.c
@@ -63,7 +63,7 @@ output_set_presentation_xrandr (GfOutput *output,
   value= presentation;
 
   xcb_randr_change_output_property (XGetXCBConnection (xdisplay),
-                                    (XID) output->winsys_id,
+                                    (XID) gf_output_get_id (output),
                                     atom, XCB_ATOM_CARDINAL, 32,
                                     XCB_PROP_MODE_REPLACE,
                                     1, &value);
@@ -84,7 +84,7 @@ output_set_underscanning_xrandr (GfOutput *output,
   valueatom = XInternAtom (xdisplay, value, False);
 
   xcb_randr_change_output_property (XGetXCBConnection (xdisplay),
-                                    (XID) output->winsys_id,
+                                    (XID) gf_output_get_id (output),
                                     prop, XCB_ATOM_ATOM, 32,
                                     XCB_PROP_MODE_REPLACE,
                                     1, &valueatom);
@@ -106,7 +106,7 @@ output_set_underscanning_xrandr (GfOutput *output,
       border_value = crtc_config->mode->width * 0.05;
 
       xcb_randr_change_output_property (XGetXCBConnection (xdisplay),
-                                        (XID) output->winsys_id,
+                                        (XID) gf_output_get_id (output),
                                         prop, XCB_ATOM_INTEGER, 32,
                                         XCB_PROP_MODE_REPLACE,
                                         1, &border_value);
@@ -115,7 +115,7 @@ output_set_underscanning_xrandr (GfOutput *output,
       border_value = crtc_config->mode->height * 0.05;
 
       xcb_randr_change_output_property (XGetXCBConnection (xdisplay),
-                                        (XID) output->winsys_id,
+                                        (XID) gf_output_get_id (output),
                                         prop, XCB_ATOM_INTEGER, 32,
                                         XCB_PROP_MODE_REPLACE,
                                         1, &border_value);
@@ -170,7 +170,7 @@ output_get_property_exists (GfOutput    *output,
 
   xdisplay = xdisplay_from_output (output);
   atom = XInternAtom (xdisplay, propname, False);
-  XRRGetOutputProperty (xdisplay, (XID) output->winsys_id, atom,
+  XRRGetOutputProperty (xdisplay, (XID) gf_output_get_id (output), atom,
                         0, G_MAXLONG, False, False, AnyPropertyType,
                         &actual_type, &actual_format,
                         &nitems, &bytes_after, &buffer);
@@ -203,7 +203,7 @@ output_get_integer_property (GfOutput    *output,
 
   xdisplay = xdisplay_from_output (output);
   atom = XInternAtom (xdisplay, propname, False);
-  XRRGetOutputProperty (xdisplay, (XID) output->winsys_id, atom,
+  XRRGetOutputProperty (xdisplay, (XID) gf_output_get_id (output), atom,
                         0, G_MAXLONG, False, False, XA_INTEGER,
                         &actual_type, &actual_format,
                         &nitems, &bytes_after, &buffer);
@@ -289,7 +289,7 @@ output_get_connector_type_from_prop (GfOutput *output)
 
   xdisplay = xdisplay_from_output (output);
   atom = XInternAtom (xdisplay, "ConnectorType", False);
-  XRRGetOutputProperty (xdisplay, (XID) output->winsys_id, atom,
+  XRRGetOutputProperty (xdisplay, (XID) gf_output_get_id (output), atom,
                         0, G_MAXLONG, False, False, XA_ATOM,
                         &actual_type, &actual_format,
                         &nitems, &bytes_after, &buffer);
@@ -401,7 +401,7 @@ output_get_panel_orientation_transform (GfOutput *output)
   str = NULL;
 
   atom = XInternAtom (xdisplay, "panel orientation", False);
-  XRRGetOutputProperty (xdisplay, (XID) output->winsys_id, atom,
+  XRRGetOutputProperty (xdisplay, (XID) gf_output_get_id (output), atom,
                         0, G_MAXLONG, False, False, XA_ATOM,
                         &actual_type, &actual_format,
                         &nitems, &bytes_after, &buffer);
@@ -453,7 +453,7 @@ output_get_tile_info (GfOutput *output)
 
   xdisplay = gf_monitor_manager_xrandr_get_xdisplay (monitor_manager_xrandr);
   tile_atom = XInternAtom (xdisplay, "TILE", FALSE);
-  XRRGetOutputProperty (xdisplay, output->winsys_id,
+  XRRGetOutputProperty (xdisplay, gf_output_get_id (output),
                         tile_atom, 0, 100, False,
                         False, AnyPropertyType,
                         &actual_type, &actual_format,
@@ -567,7 +567,7 @@ output_get_boolean_property (GfOutput    *output,
 
   xdisplay = xdisplay_from_output (output);
   atom = XInternAtom (xdisplay, propname, False);
-  XRRGetOutputProperty (xdisplay, (XID) output->winsys_id, atom,
+  XRRGetOutputProperty (xdisplay, (XID) gf_output_get_id (output), atom,
                         0, G_MAXLONG, False, False, XA_CARDINAL,
                         &actual_type, &actual_format,
                         &nitems, &bytes_after, &buffer);
@@ -605,7 +605,7 @@ output_get_underscanning_xrandr (GfOutput *output)
 
   xdisplay = xdisplay_from_output (output);
   atom = XInternAtom (xdisplay, "underscan", False);
-  XRRGetOutputProperty (xdisplay, (XID) output->winsys_id, atom,
+  XRRGetOutputProperty (xdisplay, (XID) gf_output_get_id (output), atom,
                         0, G_MAXLONG, False, False, XA_ATOM,
                         &actual_type, &actual_format,
                         &nitems, &bytes_after, &buffer);
@@ -641,7 +641,7 @@ output_get_supports_underscanning_xrandr (GfOutput *output)
 
   xdisplay = xdisplay_from_output (output);
   atom = XInternAtom (xdisplay, "underscan", False);
-  XRRGetOutputProperty (xdisplay, (XID) output->winsys_id, atom,
+  XRRGetOutputProperty (xdisplay, (XID) gf_output_get_id (output), atom,
                         0, G_MAXLONG, False, False, XA_ATOM,
                         &actual_type, &actual_format,
                         &nitems, &bytes_after, &buffer);
@@ -655,7 +655,7 @@ output_get_supports_underscanning_xrandr (GfOutput *output)
     }
 
   property_info = XRRQueryOutputProperty (xdisplay,
-                                          (XID) output->winsys_id,
+                                          (XID) gf_output_get_id (output),
                                           atom);
   values = (Atom *) property_info->values;
 
@@ -696,7 +696,7 @@ output_get_backlight_xrandr (GfOutput *output)
 
   xdisplay = xdisplay_from_output (output);
   atom = XInternAtom (xdisplay, "Backlight", False);
-  XRRGetOutputProperty (xdisplay, (XID) output->winsys_id, atom,
+  XRRGetOutputProperty (xdisplay, (XID) gf_output_get_id (output), atom,
                         0, G_MAXLONG, False, False, XA_INTEGER,
                         &actual_type, &actual_format,
                         &nitems, &bytes_after, &buffer);
@@ -724,6 +724,7 @@ output_get_backlight_limits_xrandr (GfOutput *output)
   Display *xdisplay;
   Atom atom;
   xcb_connection_t *xcb_conn;
+  xcb_randr_output_t output_id;
   xcb_randr_query_output_property_cookie_t cookie;
   xcb_randr_query_output_property_reply_t *reply;
   int32_t *values;
@@ -732,8 +733,9 @@ output_get_backlight_limits_xrandr (GfOutput *output)
   atom = XInternAtom (xdisplay, "Backlight", False);
 
   xcb_conn = XGetXCBConnection (xdisplay);
+  output_id = gf_output_get_id (output);
   cookie = xcb_randr_query_output_property (xcb_conn,
-                                            (xcb_randr_output_t) output->winsys_id,
+                                            output_id,
                                             (xcb_atom_t) atom);
 
   reply = xcb_randr_query_output_property_reply (xcb_conn, cookie, NULL);
@@ -768,10 +770,10 @@ gf_create_xrandr_output (GfGpuXrandr   *gpu_xrandr,
   unsigned int i;
 
   output = g_object_new (GF_TYPE_OUTPUT,
+                         "id", output_id,
                          "gpu", GF_GPU (gpu_xrandr),
                          NULL);
 
-  output->winsys_id = output_id;
   output->name = g_strdup (xrandr_output->name);
 
   edid = gf_output_xrandr_read_edid (output);
@@ -811,7 +813,7 @@ gf_create_xrandr_output (GfGpuXrandr   *gpu_xrandr,
       output->possible_clones[i] = GINT_TO_POINTER (xrandr_output->clones[i]);
     }
 
-  output->is_primary = ((XID) output->winsys_id == primary_output);
+  output->is_primary = ((XID) gf_output_get_id (output) == primary_output);
   output->is_presentation = output_get_presentation_xrandr (output);
   output->is_underscanning = output_get_underscanning_xrandr (output);
   output->supports_underscanning = output_get_supports_underscanning_xrandr (output);
@@ -842,12 +844,18 @@ gf_output_xrandr_read_edid (GfOutput *output)
 
   xdisplay = xdisplay_from_output (output);
   edid_atom = XInternAtom (xdisplay, "EDID", FALSE);
-  result = get_edid_property (xdisplay, output->winsys_id, edid_atom, &len);
+  result = get_edid_property (xdisplay,
+                              gf_output_get_id (output),
+                              edid_atom,
+                              &len);
 
   if (!result)
     {
       edid_atom = XInternAtom (xdisplay, "EDID_DATA", FALSE);
-      result = get_edid_property (xdisplay, output->winsys_id, edid_atom, &len);
+      result = get_edid_property (xdisplay,
+                                  gf_output_get_id (output),
+                                  edid_atom,
+                                  &len);
     }
 
   if (result)
@@ -871,7 +879,7 @@ gf_output_xrandr_apply_mode (GfOutput *output)
   if (output->is_primary)
     {
       XRRSetOutputPrimary (xdisplay, DefaultRootWindow (xdisplay),
-                           (XID) output->winsys_id);
+                           (XID) gf_output_get_id (output));
     }
 
   output_set_presentation_xrandr (output, output->is_presentation);
@@ -893,7 +901,7 @@ gf_output_xrandr_change_backlight (GfOutput *output,
   atom = XInternAtom (xdisplay, "Backlight", False);
 
   xcb_randr_change_output_property (XGetXCBConnection (xdisplay),
-                                    (XID)output->winsys_id,
+                                    (XID) gf_output_get_id (output),
                                     atom, XCB_ATOM_INTEGER, 32,
                                     XCB_PROP_MODE_REPLACE,
                                     1, &hw_value);
diff --git a/backends/gf-output.c b/backends/gf-output.c
index 65759a0..39cf570 100644
--- a/backends/gf-output.c
+++ b/backends/gf-output.c
@@ -32,16 +32,19 @@
 
 typedef struct
 {
-  GfGpu  *gpu;
+  uint64_t  id;
+
+  GfGpu    *gpu;
 
   /* The CRTC driving this output, NULL if the output is not enabled */
-  GfCrtc *crtc;
+  GfCrtc   *crtc;
 } GfOutputPrivate;
 
 enum
 {
   PROP_0,
 
+  PROP_ID,
   PROP_GPU,
 
   LAST_PROP
@@ -100,6 +103,10 @@ gf_output_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;
@@ -124,6 +131,10 @@ gf_output_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;
@@ -146,6 +157,17 @@ gf_output_class_init (GfOutputClass *output_class)
   object_class->get_property = gf_output_get_property;
   object_class->set_property = gf_output_set_property;
 
+  output_properties[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);
+
   output_properties[PROP_GPU] =
     g_param_spec_object ("gpu",
                          "GfGpu",
@@ -164,6 +186,16 @@ gf_output_init (GfOutput *output)
 {
 }
 
+uint64_t
+gf_output_get_id (GfOutput *self)
+{
+  GfOutputPrivate *priv;
+
+  priv = gf_output_get_instance_private (self);
+
+  return priv->id;
+}
+
 GfGpu *
 gf_output_get_gpu (GfOutput *output)
 {


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