xf86-video-intel: src/sna/sna_display.c src/sna/sna_driver.c src/sna/sna.h
Chris Wilson
ickle at kemper.freedesktop.org
Thu Oct 1 02:03:17 PDT 2015
src/sna/sna.h | 2 +-
src/sna/sna_display.c | 6 +++---
src/sna/sna_driver.c | 6 +++---
3 files changed, 7 insertions(+), 7 deletions(-)
New commits:
commit 096ddef22d6c57198a424eef00845dc7302b0cfe
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Thu Oct 1 09:47:59 2015 +0100
sna: Indicate when we expect to call RRGetInfo during discovery
Continuing the udevless saga where we query for topology changes on
calls to RRGetInfo() and so where we cannot call RRGetInfo() ourselves
on discovering the changes (to facilitate hotplug). The next step is
explicitly prevent the recursive call.
References: https://bugs.freedesktop.org/show_bug.cgi?id=91929#c10
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna.h b/src/sna/sna.h
index 6c4d179..7592f7b 100644
--- a/src/sna/sna.h
+++ b/src/sna/sna.h
@@ -442,7 +442,7 @@ bool sna_mode_pre_init(ScrnInfoPtr scrn, struct sna *sna);
bool sna_mode_fake_init(struct sna *sna, int num_fake);
bool sna_mode_wants_tear_free(struct sna *sna);
void sna_mode_adjust_frame(struct sna *sna, int x, int y);
-extern void sna_mode_discover(struct sna *sna);
+extern void sna_mode_discover(struct sna *sna, bool tell);
extern void sna_mode_check(struct sna *sna);
extern bool sna_mode_disable(struct sna *sna);
extern void sna_mode_enable(struct sna *sna);
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 6db379d..a763d18 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -2641,7 +2641,7 @@ error:
sna_crtc->cursor_transform = saved_cursor_transform;
sna_crtc->hwcursor = saved_hwcursor;
sna_crtc->bo = saved_bo;
- sna_mode_discover(sna);
+ sna_mode_discover(sna, true);
return FALSE;
}
@@ -4829,7 +4829,7 @@ output_check_status(struct sna *sna, struct sna_output *output)
return output->status == status;
}
-void sna_mode_discover(struct sna *sna)
+void sna_mode_discover(struct sna *sna, bool tell)
{
ScreenPtr screen = xf86ScrnToScreen(sna->scrn);
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(sna->scrn);
@@ -4939,7 +4939,7 @@ void sna_mode_discover(struct sna *sna)
* Note this could recurse once from udevless RRGetInfo() probes,
* but only once.
*/
- if (changed)
+ if (changed && tell)
RRGetInfo(screen, TRUE);
}
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index 539093e..8cbabb0 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -780,7 +780,7 @@ sna_handle_uevents(int fd, void *closure)
__FUNCTION__, sna->scrn->vtSema));
if (sna->scrn->vtSema) {
- sna_mode_discover(sna);
+ sna_mode_discover(sna, true);
sna_mode_check(sna);
} else
sna->flags |= SNA_REPROBE;
@@ -893,7 +893,7 @@ sna_randr_getinfo(ScreenPtr screen, Rotation *rotations)
DBG(("%s()\n", __FUNCTION__));
if (!sna_uevent_poll(sna))
- sna_mode_discover(sna);
+ sna_mode_discover(sna, false);
return sna->mode.rrGetInfo(screen, rotations);
}
@@ -1222,7 +1222,7 @@ static Bool sna_enter_vt(VT_FUNC_ARGS_DECL)
if (sna->flags & SNA_REPROBE) {
DBG(("%s: reporting deferred hotplug event\n", __FUNCTION__));
- sna_mode_discover(sna);
+ sna_mode_discover(sna, true);
}
sna_set_desired_mode(sna);
More information about the xorg-commit
mailing list