summaryrefslogtreecommitdiff
path: root/x11-drivers/xf86-video-intel/files/patch-src_sna_sna__video.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11-drivers/xf86-video-intel/files/patch-src_sna_sna__video.c')
-rw-r--r--x11-drivers/xf86-video-intel/files/patch-src_sna_sna__video.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/x11-drivers/xf86-video-intel/files/patch-src_sna_sna__video.c b/x11-drivers/xf86-video-intel/files/patch-src_sna_sna__video.c
new file mode 100644
index 000000000000..9f75bf5f3e2f
--- /dev/null
+++ b/x11-drivers/xf86-video-intel/files/patch-src_sna_sna__video.c
@@ -0,0 +1,82 @@
+--- src/sna/sna_video.c.orig 2015-03-05 09:45:32 UTC
++++ src/sna/sna_video.c
+@@ -68,6 +68,7 @@
+ #else
+ static inline void sna_video_xvmc_setup(struct sna *sna, ScreenPtr ptr)
+ {
++ DBG(("%s: XvMC not compiled in\n"));
+ }
+ #endif
+
+@@ -620,6 +621,7 @@ sna_xv_fixup_formats(ScreenPtr screen, X
+ return count;
+ }
+
++#if XORG_XV_VERSION < 2
+ static int
+ sna_xv_query_adaptors(ScreenPtr screen,
+ XvAdaptorPtr *adaptors,
+@@ -636,20 +638,10 @@ static Bool
+ sna_xv_close_screen(CLOSE_SCREEN_ARGS_DECL)
+ {
+ struct sna *sna = to_sna_from_screen(screen);
+- int i;
+-
+- for (i = 0; i < sna->xv.num_adaptors; i++) {
+- free(sna->xv.adaptors[i].pPorts->devPriv.ptr);
+- free(sna->xv.adaptors[i].pPorts);
+- free(sna->xv.adaptors[i].pEncodings);
+- }
+- free(sna->xv.adaptors);
+-
+- sna->xv.adaptors = NULL;
+- sna->xv.num_adaptors = 0;
+-
++ sna_video_close(sna);
+ return TRUE;
+ }
++#endif
+
+ void sna_video_init(struct sna *sna, ScreenPtr screen)
+ {
+@@ -671,8 +663,10 @@ void sna_video_init(struct sna *sna, Scr
+ return;
+
+ xv = to_xv(screen);
++#if XORG_XV_VERSION < 2
+ xv->ddCloseScreen = sna_xv_close_screen;
+ xv->ddQueryAdaptors = sna_xv_query_adaptors;
++#endif
+
+ sna_video_textured_setup(sna, screen);
+ sna_video_sprite_setup(sna, screen);
+@@ -698,7 +692,28 @@ void sna_video_destroy_window(WindowPtr
+ XvPortPtr port;
+
+ port = sna_window_get_port(win);
+- if (port)
++ if (port) {
++#if XORG_XV_VERSION < 2
+ port->pAdaptor->ddStopVideo(NULL, port, &win->drawable);
++#else
++ port->pAdaptor->ddStopVideo(port, &win->drawable);
++#endif
++ }
+ assert(sna_window_get_port(win) == NULL);
+ }
++
++void sna_video_close(struct sna *sna)
++{
++ int i;
++
++ for (i = 0; i < sna->xv.num_adaptors; i++) {
++ free(sna->xv.adaptors[i].pPorts->devPriv.ptr);
++ free(sna->xv.adaptors[i].pPorts);
++ free(sna->xv.adaptors[i].pEncodings);
++ }
++ free(sna->xv.adaptors);
++
++ sna->xv.adaptors = NULL;
++ sna->xv.num_adaptors = 0;
++}
++