[mutter/wip/display-no-wayland: 31/33] Monitor: restore correct display name handling
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/display-no-wayland: 31/33] Monitor: restore correct display name handling
- Date: Sat, 17 Aug 2013 15:15:40 +0000 (UTC)
commit 39aecd2ddefe0c46ad79e50adf27dcb687b06df9
Author: Giovanni Campagna <gcampagn redhat com>
Date: Fri Aug 16 17:32:50 2013 +0200
Monitor: restore correct display name handling
Now that we have the right values from the EDID, we can load
the PNP database and find the proper vendor name, to show in
the control center UI.
https://bugzilla.gnome.org/show_bug.cgi?id=705670
configure.ac | 1 +
src/core/monitor-private.h | 3 +++
src/core/monitor.c | 31 ++++++++++++++++++++++++++++---
3 files changed, 32 insertions(+), 3 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 49d6e9d..583c0ef 100644
--- a/configure.ac
+++ b/configure.ac
@@ -76,6 +76,7 @@ MUTTER_PC_MODULES="
$CLUTTER_PACKAGE >= 1.14.3
cogl-1.0 >= 1.13.3
upower-glib > 0.9.11
+ gnome-desktop-3.0
"
GLIB_GSETTINGS
diff --git a/src/core/monitor-private.h b/src/core/monitor-private.h
index 970bd32..3a830ab 100644
--- a/src/core/monitor-private.h
+++ b/src/core/monitor-private.h
@@ -38,6 +38,7 @@
#define META_MONITOR_PRIVATE_H
#include <cogl/cogl.h>
+#include <libgnome-desktop/gnome-pnp-ids.h>
#include "display-private.h"
#include <meta/screen.h>
@@ -250,6 +251,8 @@ struct _MetaMonitorManager
int persistent_timeout_id;
MetaMonitorConfig *config;
+
+ GnomePnpIds *pnp_ids;
};
struct _MetaMonitorManagerClass
diff --git a/src/core/monitor.c b/src/core/monitor.c
index 1fbcd9c..a625d4e 100644
--- a/src/core/monitor.c
+++ b/src/core/monitor.c
@@ -703,16 +703,41 @@ diagonal_to_str (double d)
}
static char *
-make_display_name (MetaOutput *output)
+make_display_name (MetaMonitorManager *manager,
+ MetaOutput *output)
{
+ if (g_str_has_prefix (output->name, "LVDS") ||
+ g_str_has_prefix (output->name, "eDP"))
+ return g_strdup (_("Built-in display"));
+
if (output->width_mm != -1 && output->height_mm != -1)
{
double d = sqrt (output->width_mm * output->width_mm +
output->height_mm * output->height_mm);
char *inches = diagonal_to_str (d / 25.4);
+ char *vendor_name;
char *ret;
- ret = g_strdup_printf ("%s %s", output->vendor, inches);
+ if (g_strcmp0 (output->vendor, "unknown") != 0)
+ {
+ if (!manager->pnp_ids)
+ manager->pnp_ids = gnome_pnp_ids_new ();
+
+ vendor_name = gnome_pnp_ids_get_pnp_id (manager->pnp_ids,
+ output->vendor);
+
+ ret = g_strdup_printf ("%s %s", vendor_name, inches);
+
+ g_free (vendor_name);
+ }
+ else
+ {
+ /* TRANSLATORS: this is a monitor name (in case we don't know
+ the vendor), it's Unknown followed by a size in inches,
+ like 'Unknown 15"'
+ */
+ ret = g_strdup_printf (_("Unknown %s"), inches);
+ }
g_free (inches);
return ret;
@@ -789,7 +814,7 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
g_variant_builder_add (&properties, "{sv}", "serial",
g_variant_new_string (output->serial));
g_variant_builder_add (&properties, "{sv}", "display-name",
- g_variant_new_take_string (make_display_name (output)));
+ g_variant_new_take_string (make_display_name (manager, output)));
g_variant_builder_add (&properties, "{sv}", "backlight",
g_variant_new_int32 (output->backlight));
g_variant_builder_add (&properties, "{sv}", "primary",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]