[mutter] monitor-manager-xrandr: Set the underscan border properties, too



commit c68e43a97f544b9d3a7845a3a7e1e21ebd638dec
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Mon Apr 27 17:23:56 2015 -0700

    monitor-manager-xrandr: Set the underscan border properties, too

 src/backends/x11/meta-monitor-manager-xrandr.c |   26 ++++++++++++++++++++++-
 1 files changed, 24 insertions(+), 2 deletions(-)
---
diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c
index 8eaffb1..7a8bb2d 100644
--- a/src/backends/x11/meta-monitor-manager-xrandr.c
+++ b/src/backends/x11/meta-monitor-manager-xrandr.c
@@ -919,15 +919,37 @@ output_set_underscanning_xrandr (MetaMonitorManagerXrandr *manager_xrandr,
 
   prop = XInternAtom (manager_xrandr->xdisplay, "underscan", False);
 
-  /* XXX: Also implement underscan border */
   value = underscanning ? "on" : "off";
   valueatom = XInternAtom (manager_xrandr->xdisplay, value, False);
-
   XRRChangeOutputProperty (manager_xrandr->xdisplay,
                            (XID)output->winsys_id,
                            prop,
                            XA_ATOM, 32, PropModeReplace,
                            (unsigned char*) &valueatom, 1);
+
+  /* Configure the border at the same time. Currently, we use a
+   * 5% of the width/height of the mode. In the future, we should
+   * make the border configurable. */
+  if (underscanning)
+    {
+      uint32_t border_value;
+
+      prop = XInternAtom (manager_xrandr->xdisplay, "underscan hborder", False);
+      border_value = output->crtc->current_mode->width * 0.05;
+      XRRChangeOutputProperty (manager_xrandr->xdisplay,
+                               (XID)output->winsys_id,
+                               prop,
+                               XA_INTEGER, 32, PropModeReplace,
+                               (unsigned char *) &border_value, 1);
+
+      prop = XInternAtom (manager_xrandr->xdisplay, "underscan vborder", False);
+      border_value = output->crtc->current_mode->height * 0.05;
+      XRRChangeOutputProperty (manager_xrandr->xdisplay,
+                               (XID)output->winsys_id,
+                               prop,
+                               XA_INTEGER, 32, PropModeReplace,
+                               (unsigned char *) &border_value, 1);
+    }
 }
 
 static void


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