summaryrefslogtreecommitdiff
authorAlbert Damen <albrt@gmx.net>2009-10-07 19:55:42 (GMT)
committer Jesse Barnes <jbarnes@virtuousgeek.org>2009-10-13 17:51:24 (GMT)
commitfcc2ee48b866b81c79315ff10189b56fc201539d (patch) (side-by-side diff)
tree40ed44625729bdb46dd906242a51d014a1b34eec
parent8a77877f9c2c6a8a1308bc1a3be9e7ad88bc7f49 (diff)
downloadxf86-video-intel-fcc2ee48b866b81c79315ff10189b56fc201539d.zip
xf86-video-intel-fcc2ee48b866b81c79315ff10189b56fc201539d.tar.gz
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@gmx.net>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--src/drmmode_display.c15
-rw-r--r--src/i830.h1
-rw-r--r--src/i830_driver.c1
3 files changed, 17 insertions, 0 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index c2ef514..472bc74 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1429,3 +1429,18 @@ drmmode_crtc_id(xf86CrtcPtr crtc)
return 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 7a64f00..2d7fc5b 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -330,6 +330,7 @@ Bool I830DRI2ScreenInit(ScreenPtr pScreen);
void I830DRI2CloseScreen(ScreenPtr pScreen);
extern Bool drmmode_pre_init(ScrnInfoPtr scrn, int fd, int cpp);
+extern void drmmode_closefb(ScrnInfoPtr scrn);
extern int drmmode_get_pipe_from_crtc_id(drm_intel_bufmgr * bufmgr,
xf86CrtcPtr crtc);
extern int drmmode_output_dpms_status(xf86OutputPtr output);
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 47bc4df..8b5e946 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -1519,6 +1519,7 @@ static Bool I830CloseScreen(int scrnIndex, ScreenPtr screen)
}
if (intel->front_buffer) {
i830_set_pixmap_bo(screen->GetScreenPixmap(screen), NULL);
+ drmmode_closefb(scrn);
i830_free_memory(scrn, intel->front_buffer);
intel->front_buffer = NULL;
}