[gnome-desktop] GnomeRR: Add support for the underscan property



commit ee25e90ddf3d1f90ab407a85f23502e49b4b1512
Author: Tomeu Vizoso <tomeu vizoso collabora com>
Date:   Wed Apr 16 10:41:10 2014 +0200

    GnomeRR: Add support for the underscan property
    
    To get and set whether overscan compensation is active in a given
    output.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=748560

 libgnome-desktop/gnome-rr-config.c      |   12 +++++++++---
 libgnome-desktop/gnome-rr-config.h      |    3 +++
 libgnome-desktop/gnome-rr-output-info.c |   15 +++++++++++++++
 libgnome-desktop/gnome-rr-private.h     |    1 +
 libgnome-desktop/gnome-rr.c             |    9 +++++++++
 libgnome-desktop/gnome-rr.h             |    1 +
 6 files changed, 38 insertions(+), 3 deletions(-)
---
diff --git a/libgnome-desktop/gnome-rr-config.c b/libgnome-desktop/gnome-rr-config.c
index f739ecd..f21eb36 100644
--- a/libgnome-desktop/gnome-rr-config.c
+++ b/libgnome-desktop/gnome-rr-config.c
@@ -217,7 +217,8 @@ gnome_rr_config_load_current (GnomeRRConfig *config, GError **error)
        }
 
         output->priv->primary = gnome_rr_output_get_is_primary (rr_output);
- 
+        output->priv->underscanning = gnome_rr_output_get_is_underscanning (rr_output);
+
        g_ptr_array_add (a, output);
     }
 
@@ -339,6 +340,9 @@ output_equal (GnomeRROutputInfo *output1, GnomeRROutputInfo *output2)
        
        if (output1->priv->rotation != output2->priv->rotation)
            return FALSE;
+
+       if (output1->priv->underscanning != output2->priv->underscanning)
+           return FALSE;
     }
 
     return TRUE;
@@ -1171,9 +1175,11 @@ crtc_assignment_apply (CrtcAssignment *assign, gboolean persistent, GError **err
        g_variant_builder_add (&output_builder, "(u a{sv})",
                               gnome_rr_output_get_id (gnome_rr_output),
                               g_variant_new_parsed ("{ 'primary': <%b>,"
-                                                    "  'presentation': <%b> }",
+                                                    "  'presentation': <%b>,"
+                                                    "  'underscanning': <%b> }",
                                                     output->priv->primary,
-                                                    FALSE));
+                                                    FALSE,
+                                                    output->priv->underscanning));
     }
 
     return _gnome_rr_screen_apply_configuration (assign->screen,
diff --git a/libgnome-desktop/gnome-rr-config.h b/libgnome-desktop/gnome-rr-config.h
index e13825c..bfd3e14 100644
--- a/libgnome-desktop/gnome-rr-config.h
+++ b/libgnome-desktop/gnome-rr-config.h
@@ -88,6 +88,9 @@ void     gnome_rr_output_info_set_primary (GnomeRROutputInfo *self, gboolean pri
 int gnome_rr_output_info_get_preferred_width  (GnomeRROutputInfo *self);
 int gnome_rr_output_info_get_preferred_height (GnomeRROutputInfo *self);
 
+gboolean gnome_rr_output_info_get_underscanning (GnomeRROutputInfo *self);
+void     gnome_rr_output_info_set_underscanning (GnomeRROutputInfo *self, gboolean underscanning);
+
 typedef struct _GnomeRRConfig GnomeRRConfig;
 typedef struct _GnomeRRConfigClass GnomeRRConfigClass;
 typedef struct _GnomeRRConfigPrivate GnomeRRConfigPrivate;
diff --git a/libgnome-desktop/gnome-rr-output-info.c b/libgnome-desktop/gnome-rr-output-info.c
index 10bc977..ff8ce78 100644
--- a/libgnome-desktop/gnome-rr-output-info.c
+++ b/libgnome-desktop/gnome-rr-output-info.c
@@ -251,3 +251,18 @@ int gnome_rr_output_info_get_preferred_height (GnomeRROutputInfo *self)
 
     return self->priv->pref_height;
 }
+
+gboolean gnome_rr_output_info_get_underscanning (GnomeRROutputInfo *self)
+{
+    g_return_val_if_fail (GNOME_IS_RR_OUTPUT_INFO (self), FALSE);
+
+    return self->priv->underscanning;
+}
+
+void gnome_rr_output_info_set_underscanning (GnomeRROutputInfo *self,
+                                             gboolean underscanning)
+{
+    g_return_if_fail (GNOME_IS_RR_OUTPUT_INFO (self));
+
+    self->priv->underscanning = underscanning;
+}
diff --git a/libgnome-desktop/gnome-rr-private.h b/libgnome-desktop/gnome-rr-private.h
index 5ad2b28..acf6497 100644
--- a/libgnome-desktop/gnome-rr-private.h
+++ b/libgnome-desktop/gnome-rr-private.h
@@ -73,6 +73,7 @@ struct _GnomeRROutputInfoPrivate
     int                        pref_height;
     char *             display_name;
     gboolean            primary;
+    gboolean            underscanning;
 };
 
 struct _GnomeRRConfigPrivate
diff --git a/libgnome-desktop/gnome-rr.c b/libgnome-desktop/gnome-rr.c
index f6364d0..099cd68 100644
--- a/libgnome-desktop/gnome-rr.c
+++ b/libgnome-desktop/gnome-rr.c
@@ -80,6 +80,7 @@ struct GnomeRROutput
 
     gboolean            is_primary;
     gboolean            is_presentation;
+    gboolean            is_underscanning;
 };
 
 struct GnomeRRCrtc
@@ -1265,6 +1266,7 @@ output_initialize (GnomeRROutput *output, GVariant *info)
     g_variant_lookup (properties, "min-backlight-step", "i", &output->min_backlight_step);
     g_variant_lookup (properties, "primary", "b", &output->is_primary);
     g_variant_lookup (properties, "presentation", "b", &output->is_presentation);
+    g_variant_lookup (properties, "underscanning", "b", &output->is_underscanning);
 
     if ((edid = g_variant_lookup_value (properties, "edid", G_VARIANT_TYPE ("ay"))))
       {
@@ -2031,3 +2033,10 @@ gnome_rr_crtc_get_gamma (GnomeRRCrtc     *crtc,
 
   return TRUE;
 }
+
+gboolean
+gnome_rr_output_get_is_underscanning (GnomeRROutput *output)
+{
+    g_assert(output != NULL);
+    return output->is_underscanning;
+}
diff --git a/libgnome-desktop/gnome-rr.h b/libgnome-desktop/gnome-rr.h
index 4fe1320..742edbb 100644
--- a/libgnome-desktop/gnome-rr.h
+++ b/libgnome-desktop/gnome-rr.h
@@ -171,6 +171,7 @@ GnomeRRMode *   gnome_rr_output_get_preferred_mode (GnomeRROutput         *outpu
 gboolean        gnome_rr_output_supports_mode      (GnomeRROutput         *output,
                                                    GnomeRRMode           *mode);
 gboolean        gnome_rr_output_get_is_primary     (GnomeRROutput         *output);
+gboolean        gnome_rr_output_get_is_underscanning (GnomeRROutput       *output);
 
 /* GnomeRRMode */
 guint32         gnome_rr_mode_get_id               (GnomeRRMode           *mode);


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