summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2014-06-06 12:00:35 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2014-06-11 11:05:27 +0100
commitee7d2e0a8ef882c1d4e0e77a0148b54dcfbf4236 (patch)
tree7d142f3933f9fc4e8ecc4bb60a4686a57c62cd2a
parent782c920b01d5144125f2fe954e29fd7b07a1913e (diff)
sna: MST topologies may change on any hotplug event
As the kernel does not send out an explicit DISCOVER event, we have to reinspect every connector after every hotplug event to detect topology changes. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/sna.h1
-rw-r--r--src/sna/sna_driver.c19
2 files changed, 2 insertions, 18 deletions
diff --git a/src/sna/sna.h b/src/sna/sna.h
index a44235b9..dfdfc65f 100644
--- a/src/sna/sna.h
+++ b/src/sna/sna.h
@@ -253,7 +253,6 @@ struct sna {
#define SNA_REMOVE_OUTPUTS 0x400
#define SNA_HAS_FLIP 0x10000
#define SNA_HAS_ASYNC_FLIP 0x20000
-#define SNA_REDISCOVER 0x40000000
#define SNA_REPROBE 0x80000000
unsigned cpu_features;
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index 00759367..4df93eb4 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -759,21 +759,12 @@ sna_handle_uevents(int fd, void *closure)
return;
}
- str = udev_device_get_property_value(dev, "DISCOVER");
- if (str && atoi(str) == 1) {
- DBG(("%s: discover event (vtSema?=%d)\n",
- __FUNCTION__, sna->scrn->vtSema));
- if (sna->scrn->vtSema)
- sna_mode_discover(sna);
- else
- sna->flags |= SNA_REDISCOVER;
- }
-
str = udev_device_get_property_value(dev, "HOTPLUG");
if (str && atoi(str) == 1) {
DBG(("%s: hotplug event (vtSema?=%d)\n",
__FUNCTION__, sna->scrn->vtSema));
if (sna->scrn->vtSema) {
+ sna_mode_discover(sna);
sna_mode_check(sna);
RRGetInfo(xf86ScrnToScreen(scrn), TRUE);
} else
@@ -1178,16 +1169,10 @@ static Bool sna_enter_vt(VT_FUNC_ARGS_DECL)
if (intel_get_master(scrn))
return FALSE;
- if (sna->flags & SNA_REDISCOVER) {
- DBG(("%s: reporting deferred discover event\n",
- __FUNCTION__));
- sna_mode_discover(sna);
- sna->flags &= ~SNA_REDISCOVER;
- }
-
if (sna->flags & SNA_REPROBE) {
DBG(("%s: reporting deferred hotplug event\n",
__FUNCTION__));
+ sna_mode_discover(sna);
RRGetInfo(xf86ScrnToScreen(scrn), TRUE);
sna->flags &= ~SNA_REPROBE;
}