From 00c663a3bc76d567ad7edd6d6ef3f7f725b5df3a Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 17 Apr 2012 11:50:40 +0100 Subject: [PATCH] modesetting: add set/drop master around VT switch --- hw/xfree86/drivers/modesetting/driver.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c index 516bf615c..827438a2f 100644 --- a/hw/xfree86/drivers/modesetting/driver.c +++ b/hw/xfree86/drivers/modesetting/driver.c @@ -756,10 +756,12 @@ static void LeaveVT(int scrnIndex, int flags) { ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; - + modesettingPtr ms = modesettingPTR(pScrn); xf86_hide_cursors(pScrn); pScrn->vtSema = FALSE; + + drmDropMaster(ms->fd); } /* @@ -773,6 +775,11 @@ EnterVT(int scrnIndex, int flags) pScrn->vtSema = TRUE; + if (drmSetMaster(ms->fd)) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "drmSetMaster failed: %s\n", + strerror(errno)); + } + if (!drmmode_set_desired_modes(pScrn, &ms->drmmode)) return FALSE; @@ -815,8 +822,6 @@ CloseScreen(int scrnIndex, ScreenPtr pScreen) pScreen->CreateScreenResources = ms->createScreenResources; pScreen->BlockHandler = ms->BlockHandler; - drmDropMaster(ms->fd); - pScrn->vtSema = FALSE; pScreen->CloseScreen = ms->CloseScreen; return (*pScreen->CloseScreen) (scrnIndex, pScreen);