[gtk+] mir: correctly get screen mm sizes



commit 98a8c66970872c600a3122c53c4a7680276f069d
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Thu Nov 13 01:47:56 2014 +0100

    mir: correctly get screen mm sizes

 gdk/mir/gdkmirscreen.c |   33 +++++++++++++++++++++++++++++----
 1 files changed, 29 insertions(+), 4 deletions(-)
---
diff --git a/gdk/mir/gdkmirscreen.c b/gdk/mir/gdkmirscreen.c
index dedaa02..b182d94 100644
--- a/gdk/mir/gdkmirscreen.c
+++ b/gdk/mir/gdkmirscreen.c
@@ -95,6 +95,29 @@ get_screen_size (MirDisplayConfiguration *config, gint *width, gint *height)
 }
 
 static void
+get_screen_size_mm (MirDisplayConfiguration *config, gint *width, gint *height)
+{
+  uint32_t i;
+
+  *width = 0;
+  *height = 0;
+
+  if (!config)
+    return;
+
+  for (i = 0; i < config->num_outputs; i++)
+    {
+      MirDisplayOutput *o = &config->outputs[i];
+
+      if (!o->used)
+        continue;
+
+      *width += o->physical_width_mm;
+      *height += o->physical_height_mm;
+    }
+}
+
+static void
 update_display_config (GdkMirScreen *screen)
 {
   gdk_mir_display_get_mir_connection (GDK_DISPLAY (screen->display));
@@ -194,16 +217,18 @@ static gint
 gdk_mir_screen_get_width_mm (GdkScreen *screen)
 {
   g_printerr ("gdk_mir_screen_get_width_mm\n");
-  // FIXME: A combination of all screens?
-  return get_output (screen, 0)->physical_width_mm;
+  gint width, height;
+  get_screen_size_mm (GDK_MIR_SCREEN (screen)->display_config, &width, &height);
+  return width;
 }
 
 static gint
 gdk_mir_screen_get_height_mm (GdkScreen *screen)
 {
   g_printerr ("gdk_mir_screen_get_height_mm\n");
-  // FIXME: A combination of all screens?
-  return get_output (screen, 0)->physical_height_mm;
+  gint width, height;
+  get_screen_size_mm (GDK_MIR_SCREEN (screen)->display_config, &width, &height);
+  return height;
 }
 
 static gint


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