summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu.vizoso@collabora.com>2014-04-16 10:41:10 +0200
committerJasper St. Pierre <jstpierre@mecheye.net>2015-04-27 16:32:31 -0700
commitee25e90ddf3d1f90ab407a85f23502e49b4b1512 (patch)
treeadbaf7fb15f232c3e2287230d8d40c6947ffd5fd
parent7d9afa2b4a5be72f4fe88f8e21530b07472741c5 (diff)
downloadgnome-desktop-ee25e90ddf3d1f90ab407a85f23502e49b4b1512.tar.gz
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
-rw-r--r--libgnome-desktop/gnome-rr-config.c12
-rw-r--r--libgnome-desktop/gnome-rr-config.h3
-rw-r--r--libgnome-desktop/gnome-rr-output-info.c15
-rw-r--r--libgnome-desktop/gnome-rr-private.h1
-rw-r--r--libgnome-desktop/gnome-rr.c9
-rw-r--r--libgnome-desktop/gnome-rr.h1
6 files changed, 38 insertions, 3 deletions
diff --git a/libgnome-desktop/gnome-rr-config.c b/libgnome-desktop/gnome-rr-config.c
index f739ecd8..f21eb367 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 e13825cc..bfd3e14c 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 10bc9775..ff8ce780 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 5ad2b28e..acf64979 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 f6364d0b..099cd685 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 4fe13204..742edbbb 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);