From f2901dd34d371113cb9ebe70ef91f700f45f7729 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 30 Nov 2016 18:53:22 +0000 Subject: [PATCH] sna: Always ask the client to reprobe after userspace This doesn't guarrantee that the client does, but the kernel insists. Signed-off-by: Chris Wilson --- src/sna/sna_display.c | 7 ++++++- src/sna/sna_driver.c | 6 ++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c index 1b89cfdd..1d31d008 100644 --- a/src/sna/sna_display.c +++ b/src/sna/sna_display.c @@ -5369,6 +5369,7 @@ void sna_mode_discover(struct sna *sna, bool tell) { ScreenPtr screen = xf86ScrnToScreen(sna->scrn); xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(sna->scrn); + bool force = sna->flags & SNA_REPROBE; struct drm_mode_card_res res; uint32_t connectors[32], now; unsigned changed = 0; @@ -5402,7 +5403,11 @@ void sna_mode_discover(struct sna *sna, bool tell) if (serial == 0) serial = ++sna->mode.serial; - now = GetTimeInMillis(); + if (force) { + changed = 4; + now = 0; + } else + now = GetTimeInMillis(); for (i = 0; i < res.count_connectors; i++) { DBG(("%s: connector[%d] = %d\n", __FUNCTION__, i, connectors[i])); for (j = 0; j < sna->mode.num_real_output; j++) { diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c index 5170439b..1b4015de 100644 --- a/src/sna/sna_driver.c +++ b/src/sna/sna_driver.c @@ -806,10 +806,12 @@ sna_handle_uevents(int fd, void *closure) str = udev_device_get_property_value(dev, "HOTPLUG"); if (str && atoi(str) == 1) { str = udev_device_get_property_value(dev, "CONNECTOR"); - if (str) + if (str) { hotplug |= sna_mode_find_hotplug_connector(sna, atoi(str)); - else + } else { + sna->flags |= SNA_REPROBE; hotplug = true; + } } }