diff -u xserver-xorg-video-intel-2.8.1/debian/rules xserver-xorg-video-intel-2.8.1/debian/rules --- xserver-xorg-video-intel-2.8.1/debian/rules +++ xserver-xorg-video-intel-2.8.1/debian/rules @@ -51,7 +51,7 @@ cd obj-$(DEB_BUILD_GNU_TYPE) && $(MAKE) >$@ -clean: +clean: xsfclean dh_testdir dh_testroot rm -f build-stamp diff -u xserver-xorg-video-intel-2.8.1/debian/changelog xserver-xorg-video-intel-2.8.1/debian/changelog --- xserver-xorg-video-intel-2.8.1/debian/changelog +++ xserver-xorg-video-intel-2.8.1/debian/changelog @@ -1,3 +1,12 @@ +xserver-xorg-video-intel (2:2.8.1-1ubuntu2albert1) karmic; urgency=low + + * Add patch 103_close-frontbuffer-in-closescreen.patch to drop the + frontbuffer in the KMS case so it can be properly re-initialized + after a xserver reset. + * Add xsfclean dependency on clean rule, so patches are cleanly removed. + + -- Albert Damen Tue, 06 Oct 2009 22:03:55 +0200 + xserver-xorg-video-intel (2:2.8.1-1ubuntu2) karmic; urgency=low * Add 102_dont_destroy_bufmgr_at_closescreen_time.patch: Don't destroy diff -u xserver-xorg-video-intel-2.8.1/debian/patches/series xserver-xorg-video-intel-2.8.1/debian/patches/series --- xserver-xorg-video-intel-2.8.1/debian/patches/series +++ xserver-xorg-video-intel-2.8.1/debian/patches/series @@ -4,0 +5 @@ +103_close-frontbuffer-in-closescreen.patch only in patch2: unchanged: --- xserver-xorg-video-intel-2.8.1.orig/debian/patches/103_close-frontbuffer-in-closescreen.patch +++ xserver-xorg-video-intel-2.8.1/debian/patches/103_close-frontbuffer-in-closescreen.patch @@ -0,0 +1,48 @@ +Index: xserver-xorg-video-intel-2.8.1/src/drmmode_display.c +=================================================================== +--- xserver-xorg-video-intel-2.8.1.orig/src/drmmode_display.c 2009-10-06 23:47:59.000000000 +0200 ++++ xserver-xorg-video-intel-2.8.1/src/drmmode_display.c 2009-10-06 23:48:00.000000000 +0200 +@@ -1132,3 +1132,18 @@ + + return drm_intel_get_pipe_from_crtc_id (bufmgr, drmmode_crtc->mode_crtc->crtc_id); + } ++ ++void drmmode_closefb(ScrnInfoPtr pScrn) ++{ ++ xf86CrtcConfigPtr xf86_config; ++ drmmode_crtc_private_ptr drmmode_crtc; ++ drmmode_ptr drmmode; ++ ++ xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); ++ ++ drmmode_crtc = xf86_config->crtc[0]->driver_private; ++ drmmode = drmmode_crtc->drmmode; ++ ++ drmModeRmFB(drmmode->fd, drmmode->fb_id); ++ drmmode->fb_id = 0; ++} +Index: xserver-xorg-video-intel-2.8.1/src/i830.h +=================================================================== +--- xserver-xorg-video-intel-2.8.1.orig/src/i830.h 2009-10-05 21:35:44.000000000 +0200 ++++ xserver-xorg-video-intel-2.8.1/src/i830.h 2009-10-06 23:48:00.000000000 +0200 +@@ -691,6 +691,7 @@ + void I830DRI2CloseScreen(ScreenPtr pScreen); + + extern Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp); ++extern void drmmode_closefb(ScrnInfoPtr pScrn); + extern int drmmode_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, xf86CrtcPtr crtc); + extern int drmmode_output_dpms_status(xf86OutputPtr output); + +Index: xserver-xorg-video-intel-2.8.1/src/i830_driver.c +=================================================================== +--- xserver-xorg-video-intel-2.8.1.orig/src/i830_driver.c 2009-10-06 23:48:00.000000000 +0200 ++++ xserver-xorg-video-intel-2.8.1/src/i830_driver.c 2009-10-06 23:48:00.000000000 +0200 +@@ -3123,6 +3123,8 @@ + } + 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; + }