xf86-video-intel: Branch '2.9' - src/drmmode_display.c src/i830_driver.c src/i830.h

Carl Worth cworth at kemper.freedesktop.org
Tue Oct 13 11:16:21 PDT 2009


 src/drmmode_display.c |   15 +++++++++++++++
 src/i830.h            |    1 +
 src/i830_driver.c     |    2 ++
 3 files changed, 18 insertions(+)

New commits:
commit 22b85d0198508a13273ab58fd5fa3a127880a0be
Author: Albert Damen <albrt at gmx.net>
Date:   Wed Oct 7 21:55:42 2009 +0200

    Drop frontbuffer from crtc in I830CloseScreen
    
    By dropping the frontbuffer from the crtc, the new frontbuffer
    can be properly added to the crtc when the xserver is reset.
    
    Signed-off-by: Albert Damen <albrt at gmx.net>
    (cherry picked from commit fcc2ee48b866b81c79315ff10189b56fc201539d)
    
    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=24383

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 7845fc5..8ab8a4b 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1420,3 +1420,18 @@ drmmode_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, xf86CrtcPtr crtc)
 
 	return drm_intel_get_pipe_from_crtc_id (bufmgr, drmmode_crtc->mode_crtc->crtc_id);
 }
+
+void drmmode_closefb(ScrnInfoPtr scrn)
+{
+	xf86CrtcConfigPtr xf86_config;
+	drmmode_crtc_private_ptr drmmode_crtc;
+	drmmode_ptr drmmode;
+
+	xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
+
+	drmmode_crtc = xf86_config->crtc[0]->driver_private;
+	drmmode = drmmode_crtc->drmmode;
+
+	drmModeRmFB(drmmode->fd, drmmode->fb_id);
+	drmmode->fb_id = 0;
+}
diff --git a/src/i830.h b/src/i830.h
index 009641a..9d9335b 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -692,6 +692,7 @@ void I830DRI2CloseScreen(ScreenPtr pScreen);
 
 extern Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp);
 extern int drmmode_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, xf86CrtcPtr crtc);
+extern void drmmode_closefb(ScrnInfoPtr scrn);
 extern int drmmode_output_dpms_status(xf86OutputPtr output);
 void
 drmmode_crtc_set_cursor_bo(xf86CrtcPtr crtc, dri_bo *cursor);
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 316a1fa..b2b1cb1 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -3079,6 +3079,8 @@ I830CloseScreen(int scrnIndex, ScreenPtr pScreen)
    }
    if (pI830->front_buffer) {
 	i830_set_pixmap_bo(pScreen->GetScreenPixmap(pScreen), NULL);
+	if (pI830->use_drm_mode)
+	    drmmode_closefb(pScrn);
 	i830_free_memory(pScrn, pI830->front_buffer);
 	pI830->front_buffer = NULL;
    }


More information about the xorg-commit mailing list