[mutter] Monitor: restore correct display name handling
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] Monitor: restore correct display name handling
- Date: Sat, 17 Aug 2013 22:54:51 +0000 (UTC)
commit 3bb5086173a537fa4c66b2adadcd9c9a1dbe4807
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 c3ef12a..b0fd70c 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 c52740b..d81ff15 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]