summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac18
-rw-r--r--src/apm_video.c4
2 files changed, 22 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 780b0a5..1d8ea0c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -72,6 +72,24 @@ PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0])
DRIVER_NAME=apm
AC_SUBST([DRIVER_NAME])
+# since we cannot use the result from XORG_DRIVER_CHECK_EXT directly.
+AC_CHECK_DECL([XV], [have_xv=yes], [have_xv=false], [#include "xorg/xorg-server.h"])
+if test "x$have_xv" = xyes; then
+ SAVED_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $XORG_CFLAGS"
+
+ AC_CHECK_MEMBER([ScrnInfoRec.ModeSet],
+ [SCRNINFO_HAS_MODESET=yes], [SCRNINFO_HAS_MODESET=no],
+ [#include "xf86str.h"])
+ if test "x$SCRNINFO_HAS_MODESET" = xyes; then
+ AC_DEFINE(XV_NEW_REPUT, 1,
+ [XvReputImage takes more all coordinates])
+ fi
+
+ CFLAGS="$SAVED_CFLAGS"
+fi
+AM_CONDITIONAL(XV_NEW_REPUT, test x$XV_NEW_REPUT = xyes)
+
AC_CONFIG_FILES([
Makefile
src/Makefile
diff --git a/src/apm_video.c b/src/apm_video.c
index c87ffd0..4b8f132 100644
--- a/src/apm_video.c
+++ b/src/apm_video.c
@@ -26,8 +26,10 @@ static void ApmQueryBestSize(ScrnInfoPtr, Bool, short, short, short,
static int ApmQueryImageAttributes(ScrnInfoPtr, int,
unsigned short *, unsigned short *,
int *, int *);
+#ifndef XV_NEW_REPUT
static int A(ReputImage)(ScrnInfoPtr, short, short, RegionPtr, pointer,
DrawablePtr);
+#endif
static int A(PutImage)(ScrnInfoPtr, short, short, short, short, short,
short, short, short, int, unsigned char*,
short, short, Bool, RegionPtr, pointer,
@@ -333,7 +335,9 @@ A(SetupImageVideo)(ScreenPtr pScreen)
adapt->GetPortAttribute = ApmGetPortAttribute;
adapt->QueryBestSize = ApmQueryBestSize;
adapt->PutImage = A(PutImage);
+#ifndef XV_NEW_REPUT
adapt->ReputImage = A(ReputImage);
+#endif
adapt->QueryImageAttributes = ApmQueryImageAttributes;
pPriv->brightness = 0;