summaryrefslogtreecommitdiff
path: root/x11
diff options
context:
space:
mode:
authorwiz <wiz>2016-12-07 21:59:54 +0000
committerwiz <wiz>2016-12-07 21:59:54 +0000
commit0869baa5922e1d7325a838000913d0239867bfd8 (patch)
treee4fae822240e7307d533c9b69bdbbf99842acd4f /x11
parent39868f0195d5c7fd9efd504a9df67ff00118a345 (diff)
downloadpkgsrc-0869baa5922e1d7325a838000913d0239867bfd8.tar.gz
Patches from David Shao fixing build with xorg-server-1.19.
Sent in PR 51687. Bump PKGREVISION.
Diffstat (limited to 'x11')
-rw-r--r--x11/xf86-video-intel/Makefile4
-rw-r--r--x11/xf86-video-intel/distinfo12
-rw-r--r--x11/xf86-video-intel/patches/patch-src_compat-api.h40
-rw-r--r--x11/xf86-video-intel/patches/patch-src_legacy_i810_i810__video.c88
-rw-r--r--x11/xf86-video-intel/patches/patch-src_sna_sna.h17
-rw-r--r--x11/xf86-video-intel/patches/patch-src_sna_sna__accel.c50
-rw-r--r--x11/xf86-video-intel/patches/patch-src_sna_sna__acpi.c38
-rw-r--r--x11/xf86-video-intel/patches/patch-src_sna_sna__driver.c77
-rw-r--r--x11/xf86-video-intel/patches/patch-src_uxa_intel.h17
-rw-r--r--x11/xf86-video-intel/patches/patch-src_uxa_intel__display.c55
-rw-r--r--x11/xf86-video-intel/patches/patch-src_uxa_intel__driver.c62
11 files changed, 454 insertions, 6 deletions
diff --git a/x11/xf86-video-intel/Makefile b/x11/xf86-video-intel/Makefile
index 9eb793bbe0c..2a93342c472 100644
--- a/x11/xf86-video-intel/Makefile
+++ b/x11/xf86-video-intel/Makefile
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.38 2016/02/26 11:27:19 jperkin Exp $
+# $NetBSD: Makefile,v 1.39 2016/12/07 21:59:54 wiz Exp $
DISTNAME= xf86-video-intel-2.99.917
-PKGREVISION= 4
+PKGREVISION= 5
CATEGORIES= x11
MASTER_SITES= ${MASTER_SITE_XORG:=driver/}
EXTRACT_SUFX= .tar.bz2
diff --git a/x11/xf86-video-intel/distinfo b/x11/xf86-video-intel/distinfo
index 7fbd00b9c9f..e370d219021 100644
--- a/x11/xf86-video-intel/distinfo
+++ b/x11/xf86-video-intel/distinfo
@@ -1,11 +1,19 @@
-$NetBSD: distinfo,v 1.27 2016/01/05 13:05:37 tnn Exp $
+$NetBSD: distinfo,v 1.28 2016/12/07 21:59:54 wiz Exp $
SHA1 (xf86-video-intel-2.99.917.tar.bz2) = 9af9ded7a29026c211e5eb50a547e3e33976301d
RMD160 (xf86-video-intel-2.99.917.tar.bz2) = dd443e9e87286bbc454f4231a7a5d7c9bb2488a1
SHA512 (xf86-video-intel-2.99.917.tar.bz2) = cbf4d46ad1ad5e5587c0f1f620ff534ef0645270517b60056b9f03e83d8216e2f456de46352a06c37c0c46963cc4ed20b71b815b20ec1bf680ff046e535f580f
Size (xf86-video-intel-2.99.917.tar.bz2) = 2259040 bytes
SHA1 (patch-src_backlight.c) = 39537a3233613c777f0475343f0be615bff3c3ca
+SHA1 (patch-src_compat-api.h) = 303cc02ad41aa8024631577b9ea0bb26cd5f23f4
SHA1 (patch-src_legacy_i810_i810__dri.c) = fb963b994d51c9db48457106048226214a2d986c
+SHA1 (patch-src_legacy_i810_i810__video.c) = 8788a9bf4e1efdb5292771c125af9a24c09d62da
+SHA1 (patch-src_sna_sna.h) = 13f0f7c9f8235f6100da90203a9ca4aa09fad977
+SHA1 (patch-src_sna_sna__accel.c) = 0510f3409b5a1e6c0b381147af33e2ac1d4ff590
+SHA1 (patch-src_sna_sna__acpi.c) = 7105609e38876fe8bb931d6980c023cabdf41736
SHA1 (patch-src_sna_sna__display.c) = b2e5b330b5b4154b4d0bbf4edd7af1cec2c68cd8
SHA1 (patch-src_sna_sna__dri2.c) = 4bcc7e5c502a340954073386dad88fd6cebcc7b1
-SHA1 (patch-src_uxa_intel__driver.c) = 15ec83bf05b377764d1721c7a79ae9c6b1e7a0e6
+SHA1 (patch-src_sna_sna__driver.c) = ced69376d7f1af697b1f51ccb46d958495138136
+SHA1 (patch-src_uxa_intel.h) = 201a28ce259c474ea9f83700ec04c105388ad8ed
+SHA1 (patch-src_uxa_intel__display.c) = b8936ecbad39f5a507ae32b4c46d5069f53ca727
+SHA1 (patch-src_uxa_intel__driver.c) = 1eeea5efb0f89eb19eb9b1f0afadb571962f2014
diff --git a/x11/xf86-video-intel/patches/patch-src_compat-api.h b/x11/xf86-video-intel/patches/patch-src_compat-api.h
new file mode 100644
index 00000000000..0ef711e4d37
--- /dev/null
+++ b/x11/xf86-video-intel/patches/patch-src_compat-api.h
@@ -0,0 +1,40 @@
+$NetBSD: patch-src_compat-api.h,v 1.1 2016/12/07 21:59:54 wiz Exp $
+
+Upstream patches for xorg-server-1.19.
+
+--- src/compat-api.h.orig 2014-11-18 21:50:39.000000000 +0000
++++ src/compat-api.h
+@@ -30,6 +30,7 @@
+
+ #include <xorg-server.h>
+ #include <xorgVersion.h>
++#include <xf86Module.h>
+
+ #include <picturestr.h>
+ #ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
+@@ -42,6 +43,10 @@
+ #define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
+ #endif
+
++#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) >= 22
++#define HAVE_NOTIFY_FD 1
++#endif
++
+ #ifndef XF86_SCRN_INTERFACE
+
+ #define SCRN_ARG_TYPE int
+@@ -223,4 +228,14 @@ static inline void FreePixmap(PixmapPtr
+ dstx, dsty)
+ #endif
+
++#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(22, 0)
++#define OsBlockSIGIO()
++#define OsReleaseSIGIO()
++#endif
++
++#if !HAVE_NOTIFY_FD
++#define SetNotifyFd(fd, cb, mode, data) AddGeneralSocket(fd);
++#define RemoveNotifyFd(fd) RemoveGeneralSocket(fd)
++#endif
++
+ #endif
diff --git a/x11/xf86-video-intel/patches/patch-src_legacy_i810_i810__video.c b/x11/xf86-video-intel/patches/patch-src_legacy_i810_i810__video.c
new file mode 100644
index 00000000000..1aeb09058f9
--- /dev/null
+++ b/x11/xf86-video-intel/patches/patch-src_legacy_i810_i810__video.c
@@ -0,0 +1,88 @@
+$NetBSD: patch-src_legacy_i810_i810__video.c,v 1.1 2016/12/07 21:59:54 wiz Exp $
+
+Upstream patches for xorg-server-1.19.
+
+--- src/legacy/i810/i810_video.c.orig 2014-08-29 09:33:11.000000000 +0000
++++ src/legacy/i810/i810_video.c
+@@ -77,7 +77,11 @@ static int I810PutImage( ScrnInfoPtr,
+ static int I810QueryImageAttributes(ScrnInfoPtr,
+ int, unsigned short *, unsigned short *, int *, int *);
+
++#if !HAVE_NOTIFY_FD
+ static void I810BlockHandler(BLOCKHANDLER_ARGS_DECL);
++#else
++static void I810BlockHandler(void *data, void *_timeout);
++#endif
+
+ #define MAKE_ATOM(a) MakeAtom(a, sizeof(a) - 1, TRUE)
+
+@@ -418,8 +422,14 @@ I810SetupImageVideo(ScreenPtr screen)
+
+ pI810->adaptor = adapt;
+
++#if !HAVE_NOTIFY_FD
+ pI810->BlockHandler = screen->BlockHandler;
+ screen->BlockHandler = I810BlockHandler;
++#else
++ RegisterBlockAndWakeupHandlers(I810BlockHandler,
++ (ServerWakeupHandlerProcPtr)NoopDDA,
++ pScrn);
++#endif
+
+ xvBrightness = MAKE_ATOM("XV_BRIGHTNESS");
+ xvContrast = MAKE_ATOM("XV_CONTRAST");
+@@ -1135,6 +1145,7 @@ I810QueryImageAttributes(
+ return size;
+ }
+
++#if !HAVE_NOTIFY_FD
+ static void
+ I810BlockHandler (BLOCKHANDLER_ARGS_DECL)
+ {
+@@ -1172,7 +1183,38 @@ I810BlockHandler (BLOCKHANDLER_ARGS_DECL
+ }
+ }
+ }
++#else
++static void
++I810BlockHandler(void *data, void *_timeout)
++{
++ ScrnInfoPtr pScrn = data;
++ I810Ptr pI810 = I810PTR(pScrn);
++ I810PortPrivPtr pPriv = GET_PORT_PRIVATE(pScrn);
++ I810OverlayRegPtr overlay = (I810OverlayRegPtr) (pI810->FbBase + pI810->OverlayStart);
+
++ if(pPriv->videoStatus & TIMER_MASK) {
++ UpdateCurrentTime();
++ if(pPriv->videoStatus & OFF_TIMER) {
++ if(pPriv->offTime < currentTime.milliseconds) {
++ /* Turn off the overlay */
++ overlay->OV0CMD &= 0xFFFFFFFE;
++ OVERLAY_UPDATE(pI810->OverlayPhysical);
++
++ pPriv->videoStatus = FREE_TIMER;
++ pPriv->freeTime = currentTime.milliseconds + FREE_DELAY;
++ }
++ } else { /* FREE_TIMER */
++ if(pPriv->freeTime < currentTime.milliseconds) {
++ if(pPriv->linear) {
++ xf86FreeOffscreenLinear(pPriv->linear);
++ pPriv->linear = NULL;
++ }
++ pPriv->videoStatus = 0;
++ }
++ }
++ }
++}
++#endif
+
+ /***************************************************************************
+ * Offscreen Images
+@@ -1373,7 +1415,6 @@ I810DisplaySurface(
+ UpdateCurrentTime();
+ pI810Priv->videoStatus = FREE_TIMER;
+ pI810Priv->freeTime = currentTime.milliseconds + FREE_DELAY;
+- pScrn->pScreen->BlockHandler = I810BlockHandler;
+ }
+
+ return Success;
diff --git a/x11/xf86-video-intel/patches/patch-src_sna_sna.h b/x11/xf86-video-intel/patches/patch-src_sna_sna.h
new file mode 100644
index 00000000000..cc92d91f2c4
--- /dev/null
+++ b/x11/xf86-video-intel/patches/patch-src_sna_sna.h
@@ -0,0 +1,17 @@
+$NetBSD: patch-src_sna_sna.h,v 1.1 2016/12/07 21:59:54 wiz Exp $
+
+Upstream patches for xorg-server-1.19.
+
+--- src/sna/sna.h.orig 2014-12-20 13:29:05.000000000 +0000
++++ src/sna/sna.h
+@@ -364,8 +364,10 @@ struct sna {
+ EntityInfoPtr pEnt;
+ const struct intel_device_info *info;
+
++#if !HAVE_NOTIFY_FD
+ ScreenBlockHandlerProcPtr BlockHandler;
+ ScreenWakeupHandlerProcPtr WakeupHandler;
++#endif
+ CloseScreenProcPtr CloseScreen;
+
+ PicturePtr clear;
diff --git a/x11/xf86-video-intel/patches/patch-src_sna_sna__accel.c b/x11/xf86-video-intel/patches/patch-src_sna_sna__accel.c
new file mode 100644
index 00000000000..9cc3ba3aff7
--- /dev/null
+++ b/x11/xf86-video-intel/patches/patch-src_sna_sna__accel.c
@@ -0,0 +1,50 @@
+$NetBSD: patch-src_sna_sna__accel.c,v 1.1 2016/12/07 21:59:54 wiz Exp $
+
+Upstream patches for xorg-server-1.19.
+
+--- src/sna/sna_accel.c.orig 2014-12-20 13:29:27.000000000 +0000
++++ src/sna/sna_accel.c
+@@ -115,6 +115,11 @@
+ #define RECTILINEAR 0x4
+ #define OVERWRITES 0x8
+
++#if XFONT2_CLIENT_FUNCS_VERSION >= 1
++#define AllocateFontPrivateIndex() xfont2_allocate_font_private_index()
++#define FontSetPrivate(font, idx, data) xfont2_font_set_private(font, idx, data)
++#endif
++
+ #if 0
+ static void __sna_fallback_flush(DrawablePtr d)
+ {
+@@ -17811,6 +17816,13 @@ static bool sna_option_accel_blt(struct
+ return strcasecmp(s, "blt") == 0;
+ }
+
++#if HAVE_NOTIFY_FD
++static void sna_accel_notify(int fd, int ready, void *data)
++{
++ sna_mode_wakeup(data);
++}
++#endif
++
+ bool sna_accel_init(ScreenPtr screen, struct sna *sna)
+ {
+ const char *backend;
+@@ -17822,7 +17834,7 @@ bool sna_accel_init(ScreenPtr screen, st
+ list_init(&sna->flush_pixmaps);
+ list_init(&sna->active_pixmaps);
+
+- AddGeneralSocket(sna->kgem.fd);
++ SetNotifyFd(sna->kgem.fd, sna_accel_notify, X_NOTIFY_READ, sna);
+
+ #ifdef DEBUG_MEMORY
+ sna->timer_expire[DEBUG_MEMORY_TIMER] = GetTimeInMillis()+ 10 * 1000;
+@@ -17998,7 +18010,7 @@ void sna_accel_close(struct sna *sna)
+ sna_pixmap_expire(sna);
+
+ DeleteCallback(&FlushCallback, sna_accel_flush_callback, sna);
+- RemoveGeneralSocket(sna->kgem.fd);
++ RemoveNotifyFd(sna->kgem.fd);
+
+ kgem_cleanup_cache(&sna->kgem);
+ }
diff --git a/x11/xf86-video-intel/patches/patch-src_sna_sna__acpi.c b/x11/xf86-video-intel/patches/patch-src_sna_sna__acpi.c
new file mode 100644
index 00000000000..7b9cb083f1b
--- /dev/null
+++ b/x11/xf86-video-intel/patches/patch-src_sna_sna__acpi.c
@@ -0,0 +1,38 @@
+$NetBSD: patch-src_sna_sna__acpi.c,v 1.1 2016/12/07 21:59:54 wiz Exp $
+
+Upstream patches for xorg-server-1.19.
+
+--- src/sna/sna_acpi.c.orig 2014-08-29 09:33:11.000000000 +0000
++++ src/sna/sna_acpi.c
+@@ -92,7 +92,7 @@ void _sna_acpi_wakeup(struct sna *sna)
+ DBG(("%s: error [%d], detaching from acpid\n", __FUNCTION__, n));
+
+ /* XXX reattach later? */
+- RemoveGeneralSocket(sna->acpi.fd);
++ RemoveNotifyFd(sna->acpi.fd);
+ sna_acpi_fini(sna);
+ return;
+ }
+@@ -136,6 +136,13 @@ void _sna_acpi_wakeup(struct sna *sna)
+ } while (n);
+ }
+
++#if HAVE_NOTIFY_FD
++static void sna_acpi_notify(int fd, int read, void *data)
++{
++ _sna_acpi_wakeup(data);
++}
++#endif
++
+ static int read_power_state(const char *path)
+ {
+ DIR *dir;
+@@ -200,7 +207,7 @@ void sna_acpi_init(struct sna *sna)
+
+ DBG(("%s: attaching to acpid\n", __FUNCTION__));
+
+- AddGeneralSocket(sna->acpi.fd);
++ SetNotifyFd(sna->acpi.fd, sna_acpi_notify, X_NOTIFY_READ, sna);
+ sna->acpi.remain = sizeof(sna->acpi.event) - 1;
+ sna->acpi.offset = 0;
+
diff --git a/x11/xf86-video-intel/patches/patch-src_sna_sna__driver.c b/x11/xf86-video-intel/patches/patch-src_sna_sna__driver.c
new file mode 100644
index 00000000000..900e2f88111
--- /dev/null
+++ b/x11/xf86-video-intel/patches/patch-src_sna_sna__driver.c
@@ -0,0 +1,77 @@
+$NetBSD: patch-src_sna_sna__driver.c,v 1.1 2016/12/07 21:59:54 wiz Exp $
+
+Upstream patches for xorg-server-1.19.
+
+--- src/sna/sna_driver.c.orig 2014-12-11 13:52:11.000000000 +0000
++++ src/sna/sna_driver.c
+@@ -732,6 +732,7 @@ static bool has_shadow(struct sna *sna)
+ return sna->mode.flip_active == 0;
+ }
+
++#if !HAVE_NOTIFY_FD
+ static void
+ sna_block_handler(BLOCKHANDLER_ARGS_DECL)
+ {
+@@ -778,6 +779,31 @@ sna_wakeup_handler(WAKEUPHANDLER_ARGS_DE
+ FD_CLR(sna->kgem.fd, (fd_set*)read_mask);
+ }
+ }
++#else
++static void
++sna_block_handler(void *data, void *_timeout)
++{
++ struct sna *sna = data;
++ int *timeout = _timeout;
++ struct timeval tv, *tvp;
++
++ DBG(("%s (timeout=%d)\n", __FUNCTION__, *timeout));
++ if (*timeout == 0)
++ return;
++
++ if (*timeout < 0) {
++ tvp = NULL;
++ } else {
++ tv.tv_sec = *timeout / 1000;
++ tv.tv_usec = (*timeout % 1000) * 1000;
++ tvp = &tv;
++ }
++
++ sna_accel_block_handler(sna, &tvp);
++ if (tvp)
++ *timeout = tvp->tv_sec * 1000 + tvp->tv_usec / 1000;
++}
++#endif
+
+ #if HAVE_UDEV
+ static void
+@@ -948,6 +974,12 @@ static Bool sna_early_close_screen(CLOSE
+
+ /* XXX Note that we will leak kernel resources if !vtSema */
+
++#if HAVE_NOTIFY_FD
++ RemoveBlockAndWakeupHandlers(sna_block_handler,
++ (ServerWakeupHandlerProcPtr)NoopDDA,
++ sna);
++#endif
++
+ sna_uevent_fini(sna);
+ sna_mode_close(sna);
+
+@@ -1166,11 +1198,17 @@ sna_screen_init(SCREEN_INIT_ARGS_DECL)
+ * later memory should be bound when allocating, e.g rotate_mem */
+ scrn->vtSema = TRUE;
+
++#if !HAVE_NOTIFY_FD
+ sna->BlockHandler = screen->BlockHandler;
+ screen->BlockHandler = sna_block_handler;
+
+ sna->WakeupHandler = screen->WakeupHandler;
+ screen->WakeupHandler = sna_wakeup_handler;
++#else
++ RegisterBlockAndWakeupHandlers(sna_block_handler,
++ (ServerWakeupHandlerProcPtr)NoopDDA,
++ sna);
++#endif
+
+ screen->SaveScreen = sna_save_screen;
+ screen->CreateScreenResources = sna_create_screen_resources;
diff --git a/x11/xf86-video-intel/patches/patch-src_uxa_intel.h b/x11/xf86-video-intel/patches/patch-src_uxa_intel.h
new file mode 100644
index 00000000000..ebaaf4b0e70
--- /dev/null
+++ b/x11/xf86-video-intel/patches/patch-src_uxa_intel.h
@@ -0,0 +1,17 @@
+$NetBSD: patch-src_uxa_intel.h,v 1.1 2016/12/07 21:59:54 wiz Exp $
+
+Upstream patches for xorg-server-1.19.
+
+--- src/uxa/intel.h.orig 2014-12-09 20:41:25.000000000 +0000
++++ src/uxa/intel.h
+@@ -196,7 +196,10 @@ typedef struct intel_screen_private {
+
+ int colorKey;
+ XF86VideoAdaptorPtr adaptor;
++
++#if !HAVE_NOTIFY_FD
+ ScreenBlockHandlerProcPtr BlockHandler;
++#endif
+ Bool overlayOn;
+
+ struct {
diff --git a/x11/xf86-video-intel/patches/patch-src_uxa_intel__display.c b/x11/xf86-video-intel/patches/patch-src_uxa_intel__display.c
new file mode 100644
index 00000000000..111eafa090c
--- /dev/null
+++ b/x11/xf86-video-intel/patches/patch-src_uxa_intel__display.c
@@ -0,0 +1,55 @@
+$NetBSD: patch-src_uxa_intel__display.c,v 1.1 2016/12/07 21:59:54 wiz Exp $
+
+Upstream patches for xorg-server-1.19.
+
+--- src/uxa/intel_display.c.orig 2014-12-09 20:43:16.000000000 +0000
++++ src/uxa/intel_display.c
+@@ -2072,6 +2072,7 @@ intel_pageflip_abort(ScrnInfoPtr scrn, x
+ /*
+ * Check for pending DRM events and process them.
+ */
++#if !HAVE_NOTIFY_FD
+ static void
+ drm_wakeup_handler(pointer data, int err, pointer p)
+ {
+@@ -2086,6 +2087,14 @@ drm_wakeup_handler(pointer data, int err
+ if (FD_ISSET(mode->fd, read_mask))
+ drmHandleEvent(mode->fd, &mode->event_context);
+ }
++#else
++static void
++drm_notify_fd(int fd, int ready, void *data)
++{
++ struct intel_mode *mode = data;
++ drmHandleEvent(mode->fd, &mode->event_context);
++}
++#endif
+
+ /*
+ * If there are any available, read drm_events
+@@ -2250,9 +2259,11 @@ intel_mode_init(struct intel_screen_priv
+ * registration within ScreenInit and not PreInit.
+ */
+ mode->flip_count = 0;
+- AddGeneralSocket(mode->fd);
++ SetNotifyFd(mode->fd, drm_notify_fd, X_NOTIFY_READ, mode);
++#if !HAVE_NOTIFY_FD
+ RegisterBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA,
+ drm_wakeup_handler, mode);
++#endif
+ }
+
+ void
+@@ -2276,9 +2287,11 @@ intel_mode_close(intel_screen_private *i
+
+ intel_drm_abort_scrn(intel->scrn);
+
++#if !HAVE_NOTIFY_FD
+ RemoveBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA,
+ drm_wakeup_handler, mode);
+- RemoveGeneralSocket(mode->fd);
++#endif
++ RemoveNotifyFd(mode->fd);
+ }
+
+ void
diff --git a/x11/xf86-video-intel/patches/patch-src_uxa_intel__driver.c b/x11/xf86-video-intel/patches/patch-src_uxa_intel__driver.c
index 4731c900a9c..597d1bf7a62 100644
--- a/x11/xf86-video-intel/patches/patch-src_uxa_intel__driver.c
+++ b/x11/xf86-video-intel/patches/patch-src_uxa_intel__driver.c
@@ -1,6 +1,6 @@
-$NetBSD: patch-src_uxa_intel__driver.c,v 1.1 2016/01/05 13:05:37 tnn Exp $
+$NetBSD: patch-src_uxa_intel__driver.c,v 1.2 2016/12/07 21:59:54 wiz Exp $
-fix build with xorg-server-1.18
+Upstream patches for xorg-server-1.19.
--- src/uxa/intel_driver.c.orig 2014-12-09 20:43:22.000000000 +0000
+++ src/uxa/intel_driver.c
@@ -16,3 +16,61 @@ fix build with xorg-server-1.18
RegionUninit(&pixregion);
intel_flush(intel);
+@@ -659,8 +663,9 @@ redisplay_dirty(ScreenPtr screen, Pixmap
+ }
+
+ static void
+-intel_dirty_update(ScreenPtr screen)
++intel_dirty_update(intel_screen_private *intel)
+ {
++ ScreenPtr screen = xf86ScrnToScreen(intel->scrn);
+ RegionPtr region;
+ PixmapDirtyUpdatePtr ent;
+
+@@ -677,6 +682,7 @@ intel_dirty_update(ScreenPtr screen)
+ }
+ #endif
+
++#if !HAVE_NOTIFY_FD
+ static void
+ I830BlockHandler(BLOCKHANDLER_ARGS_DECL)
+ {
+@@ -694,9 +700,22 @@ I830BlockHandler(BLOCKHANDLER_ARGS_DECL)
+ intel_uxa_block_handler(intel);
+ intel_video_block_handler(intel);
+ #ifdef INTEL_PIXMAP_SHARING
+- intel_dirty_update(screen);
++ intel_dirty_update(intel);
+ #endif
+ }
++#else
++static void
++I830BlockHandler(void *data, void *timeout)
++{
++ intel_screen_private *intel = data;
++
++ intel_uxa_block_handler(intel);
++ intel_video_block_handler(intel);
++#ifdef INTEL_PIXMAP_SHARING
++ intel_dirty_update(intel);
++#endif
++}
++#endif
+
+ static Bool
+ intel_init_initial_framebuffer(ScrnInfoPtr scrn)
+@@ -939,8 +958,14 @@ I830ScreenInit(SCREEN_INIT_ARGS_DECL)
+ "Hardware cursor initialization failed\n");
+ }
+
++#if !HAVE_NOTIFY_FD
+ intel->BlockHandler = screen->BlockHandler;
+ screen->BlockHandler = I830BlockHandler;
++#else
++ RegisterBlockAndWakeupHandlers(I830BlockHandler,
++ (ServerWakeupHandlerProcPtr)NoopDDA,
++ intel);
++#endif
+
+ #ifdef INTEL_PIXMAP_SHARING
+ screen->StartPixmapTracking = PixmapStartDirtyTracking;