From 91d72040e588c500e8017c6ad824a96ed4180996 Mon Sep 17 00:00:00 2001
From: emersion <contact@emersion.fr>
Date: Thu, 7 Dec 2017 13:59:19 +0100
Subject: Configure outputs with make, model, serial in rootston

Added fallbacks in DRM backend in case EDID extension data for model and serial is missing.

Updates #403
---
 rootston/config.c | 15 ++++++++++-----
 rootston/output.c |  2 +-
 2 files changed, 11 insertions(+), 6 deletions(-)

(limited to 'rootston')

diff --git a/rootston/config.c b/rootston/config.c
index 466ad16a..59adf13c 100644
--- a/rootston/config.c
+++ b/rootston/config.c
@@ -120,7 +120,7 @@ void add_binding_config(struct wl_list *bindings, const char* combination,
 
 	xkb_keysym_t keysyms[ROOTS_KEYBOARD_PRESSED_KEYSYMS_CAP];
 	char *symnames = strdup(combination);
-	char* symname = strtok(symnames, "+");
+	char *symname = strtok(symnames, "+");
 	while (symname) {
 		uint32_t modifier = parse_modifier(symname);
 		if (modifier != 0) {
@@ -466,10 +466,15 @@ void roots_config_destroy(struct roots_config *config) {
 
 struct roots_output_config *roots_config_get_output(struct roots_config *config,
 		struct wlr_output *output) {
-	struct roots_output_config *o_config;
-	wl_list_for_each(o_config, &config->outputs, link) {
-		if (strcmp(o_config->name, output->name) == 0) {
-			return o_config;
+	char name[83];
+	snprintf(name, sizeof(name), "%s %s %s", output->make, output->model,
+		output->serial);
+
+	struct roots_output_config *oc;
+	wl_list_for_each(oc, &config->outputs, link) {
+		if (strcmp(oc->name, output->name) == 0 ||
+				strcmp(oc->name, name) == 0) {
+			return oc;
 		}
 	}
 
diff --git a/rootston/output.c b/rootston/output.c
index d0f4a378..aace1991 100644
--- a/rootston/output.c
+++ b/rootston/output.c
@@ -291,7 +291,7 @@ void output_add_notify(struct wl_listener *listener, void *data) {
 	struct roots_config *config = desktop->config;
 
 	wlr_log(L_DEBUG, "Output '%s' added", wlr_output->name);
-	wlr_log(L_DEBUG, "%s %s %s %"PRId32"mm x %"PRId32"mm", wlr_output->make,
+	wlr_log(L_DEBUG, "'%s %s %s' %"PRId32"mm x %"PRId32"mm", wlr_output->make,
 		wlr_output->model, wlr_output->serial, wlr_output->phys_width,
 		wlr_output->phys_height);
 	if (wl_list_length(&wlr_output->modes) > 0) {
-- 
cgit v1.2.3