Hello community,

here is the log from the commit of package xf86-video-savage for 
openSUSE:Factory checked in at 2012-09-15 17:30:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xf86-video-savage (Old)
 and      /work/SRC/openSUSE:Factory/.xf86-video-savage.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xf86-video-savage", Maintainer is ""

Changes:
--------
--- /work/SRC/openSUSE:Factory/xf86-video-savage/xf86-video-savage.changes      
2012-06-01 22:33:06.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.xf86-video-savage.new/xf86-video-savage.changes 
2012-09-15 17:30:51.000000000 +0200
@@ -1,0 +2,12 @@
+Sun Sep  2 21:13:07 UTC 2012 - [email protected]
+
+- Update to version 2.3.6:
+  + Make build with no xaa server.
+- Changes since version 2.3.5:
+  + i2c drop xf86Screens usage.
+  + Port to new compat API
+  + Refactor BIOS modes retrieval to call VBEGetVBEInfo only once.
+    Otherwise, calling it twice would trigger a VBE bug when using
+    xserver 1.12.
+
+-------------------------------------------------------------------

Old:
----
  xf86-video-savage-2.3.4.tar.bz2

New:
----
  xf86-video-savage-2.3.6.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xf86-video-savage.spec ++++++
--- /var/tmp/diff_new_pack.RtFJbK/_old  2012-09-15 17:30:51.000000000 +0200
+++ /var/tmp/diff_new_pack.RtFJbK/_new  2012-09-15 17:30:51.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           xf86-video-savage
-Version:        2.3.4
+Version:        2.3.6
 Release:        0
 Summary:        S3 Savage video driver for the Xorg X server
 License:        MIT

++++++ xf86-video-savage-2.3.4.tar.bz2 -> xf86-video-savage-2.3.6.tar.bz2 ++++++
++++ 26872 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/ChangeLog new/xf86-video-savage-2.3.6/ChangeLog
--- old/xf86-video-savage-2.3.4/ChangeLog       2012-03-24 03:46:48.000000000 
+0100
+++ new/xf86-video-savage-2.3.6/ChangeLog       2012-07-17 08:27:47.000000000 
+0200
@@ -1,3 +1,56 @@
+commit cb27a7a072c6e087a2e272d84c1d569dc717da8b
+Author: Dave Airlie <[email protected]>
+Date:   Tue Jul 17 16:05:09 2012 +1000
+
+    xf86-video-savage: bump to version 2.3.6
+    
+    Signed-off-by: Dave Airlie <[email protected]>
+
+commit d7edd7c545473d5ed80c9a46c1405042267a7293
+Author: Dave Airlie <[email protected]>
+Date:   Mon Jul 16 03:39:32 2012 +0100
+
+    savage: make build with no xaa server.
+    
+    This fixes savage build against the no XAA server.
+    
+    Signed-off-by: Dave Airlie <[email protected]>
+
+commit 508e0742b7d1ac1e4ff6b648d19bfa062c535d61
+Author: Dave Airlie <[email protected]>
+Date:   Mon Jul 2 12:29:41 2012 +0100
+
+    savage: bump to 2.3.5
+    
+    Signed-off-by: Dave Airlie <[email protected]>
+
+commit 430b956b49b6c883189074ce13bc234545b714e0
+Author: Dave Airlie <[email protected]>
+Date:   Wed Jun 6 11:24:31 2012 +0100
+
+    savage: i2c drop xf86Screens usage.
+    
+    Signed-off-by: Dave Airlie <[email protected]>
+
+commit a2714fb09e1e0badbb3e98e24d4b1ed92003bdb9
+Author: Dave Airlie <[email protected]>
+Date:   Wed Jun 6 11:22:29 2012 +0100
+
+    savage: port to new compat API
+    
+    Signed-off-by: Dave Airlie <[email protected]>
+
+commit de22eab9a21df80fe965dc37d21ba3ac2b9f5fd0
+Author: Tormod Volden <[email protected]>
+Date:   Wed Feb 15 22:20:37 2012 +0100
+
+    Refactor BIOS modes retrieval to call VBEGetVBEInfo only once
+    
+    Otherwise, calling it twice would trigger a VBE bug when using
+    xserver 1.12.
+    
+    Signed-off-by: Tormod Volden <[email protected]>
+
 commit 63dd44674a28263c5d8d6aec8b72e95f94d3fe6c
 Author: Alan Coopersmith <[email protected]>
 Date:   Fri Mar 23 19:46:12 2012 -0700
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/config.h.in new/xf86-video-savage-2.3.6/config.h.in
--- old/xf86-video-savage-2.3.4/config.h.in     2012-03-24 03:46:27.000000000 
+0100
+++ new/xf86-video-savage-2.3.6/config.h.in     2012-07-17 08:27:47.000000000 
+0200
@@ -32,6 +32,9 @@
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
+/* Define to 1 if you have the <xaa.h> header file. */
+#undef HAVE_XAA_H
+
 /* xextproto 7.1 available */
 #undef HAVE_XEXTPROTO_71
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/configure.ac 
new/xf86-video-savage-2.3.6/configure.ac
--- old/xf86-video-savage-2.3.4/configure.ac    2012-03-24 03:46:19.000000000 
+0100
+++ new/xf86-video-savage-2.3.6/configure.ac    2012-07-17 08:00:16.000000000 
+0200
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-savage],
-        [2.3.4],
+        [2.3.6],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-savage])
 AC_CONFIG_SRCDIR([Makefile.am])
@@ -103,6 +103,24 @@
         AC_DEFINE(SAVAGEDRI_DEVEL,1,[Enable developmental DRI driver support])
 fi
 
+AC_ARG_ENABLE(xaa,
+              AS_HELP_STRING([--enable-xaa],
+                             [Enable legacy X Acceleration Architecture (XAA) 
[default=auto]]),
+              [XAA="$enableval"],
+              [XAA=auto])
+if test "x$XAA" != xno; then
+        save_CFLAGS=$CFLAGS
+        save_CPPFLAGS=$CPPFLAGS
+        CFLAGS=$XORG_CFLAGS
+        CPPFLAGS="$XORG_CFLAGS"
+        AC_CHECK_HEADERS([xaa.h], XAA=yes, XAA=no)
+        CFLAGS=$save_CFLAGS
+        CPPFLAGS=$save_CPPFLAGS
+fi
+AC_MSG_CHECKING([whether to include XAA support])
+AM_CONDITIONAL(XAA, test "x$XAA" = xyes)
+AC_MSG_RESULT([$XAA])
+
 save_CFLAGS="$CFLAGS"
 CFLAGS="$XORG_CFLAGS"
 AC_CHECK_DECL(XSERVER_LIBPCIACCESS,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/missing new/xf86-video-savage-2.3.6/missing
--- old/xf86-video-savage-2.3.4/missing 2012-03-24 03:46:27.000000000 +0100
+++ new/xf86-video-savage-2.3.6/missing 2012-06-06 12:04:50.000000000 +0200
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-01-06.13; # UTC
 
 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
+# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <[email protected]>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -84,7 +84,6 @@
   help2man     touch the output file
   lex          create \`lex.yy.c', if possible, from existing .c
   makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
   yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
 
 Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
@@ -122,15 +121,6 @@
     # Not GNU programs, they don't have --version.
     ;;
 
-  tar*)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
   *)
     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
        # We have it, but it failed.
@@ -226,7 +216,7 @@
          \`Bison' from any GNU archive site."
     rm -f y.tab.c y.tab.h
     if test $# -ne 1; then
-        eval LASTARG="\${$#}"
+        eval LASTARG=\${$#}
        case $LASTARG in
        *.y)
            SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
@@ -256,7 +246,7 @@
          \`Flex' from any GNU archive site."
     rm -f lex.yy.c
     if test $# -ne 1; then
-        eval LASTARG="\${$#}"
+        eval LASTARG=\${$#}
        case $LASTARG in
        *.l)
            SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
@@ -318,41 +308,6 @@
     touch $file
     ;;
 
-  tar*)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-       case $firstarg in
-       *o*)
-           firstarg=`echo "$firstarg" | sed s/o//`
-           tar "$firstarg" "$@" && exit 0
-           ;;
-       esac
-       case $firstarg in
-       *h*)
-           firstarg=`echo "$firstarg" | sed s/h//`
-           tar "$firstarg" "$@" && exit 0
-           ;;
-       esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
   *)
     echo 1>&2 "\
 WARNING: \`$1' is needed, and is $msg.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/Makefile.am 
new/xf86-video-savage-2.3.6/src/Makefile.am
--- old/xf86-video-savage-2.3.4/src/Makefile.am 2012-03-24 03:46:19.000000000 
+0100
+++ new/xf86-video-savage-2.3.6/src/Makefile.am 2012-06-06 12:08:31.000000000 
+0200
@@ -29,6 +29,7 @@
 savage_drv_ladir = @moduledir@/drivers
 
 savage_drv_la_SOURCES = \
+         compat-api.h \
          savage_accel.c \
         savage_xaa.c \
         savage_exa.c \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/compat-api.h 
new/xf86-video-savage-2.3.6/src/compat-api.h
--- old/xf86-video-savage-2.3.4/src/compat-api.h        1970-01-01 
01:00:00.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/compat-api.h        2012-06-06 
12:21:27.000000000 +0200
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2012 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Author: Dave Airlie <[email protected]>
+ */
+
+/* this file provides API compat between server post 1.13 and pre it,
+   it should be reused inside as many drivers as possible */
+#ifndef COMPAT_API_H
+#define COMPAT_API_H
+
+#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
+#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]
+#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p
+#endif
+
+#ifndef XF86_HAS_SCRN_CONV
+#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]
+#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
+#endif
+
+#ifndef XF86_SCRN_INTERFACE
+
+#define SCRN_ARG_TYPE int
+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)]
+
+#define SCREEN_ARG_TYPE int
+#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)]
+
+#define SCREEN_INIT_ARGS_DECL int i, ScreenPtr pScreen, int argc, char **argv
+
+#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, 
pointer pReadmask
+#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask
+
+#define WAKEUPHANDLER_ARGS_DECL int arg, pointer wakeupData, unsigned long 
result, pointer read_mask
+#define WAKEUPHANDLER_ARGS arg, wakeupData, result, read_mask
+
+#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen
+#define CLOSE_SCREEN_ARGS scrnIndex, pScreen
+
+#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
+#define ADJUST_FRAME_ARGS(arg, x, y) (arg)->scrnIndex, x, y, 0
+
+#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
+#define SWITCH_MODE_ARGS(arg, m) (arg)->scrnIndex, m, 0
+
+#define FREE_SCREEN_ARGS_DECL int arg, int flags
+
+#define VT_FUNC_ARGS_DECL int arg, int flags
+#define VT_FUNC_ARGS pScrn->scrnIndex, 0
+
+#define XF86_SCRN_ARG(x) ((x)->scrnIndex)
+#else
+#define SCRN_ARG_TYPE ScrnInfoPtr
+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
+
+#define SCREEN_ARG_TYPE ScreenPtr
+#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1)
+
+#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
+#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer 
pReadmask
+#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
+
+#define WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, unsigned long result, pointer 
read_mask
+#define WAKEUPHANDLER_ARGS arg, result, read_mask
+
+#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+#define CLOSE_SCREEN_ARGS pScreen
+
+#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y
+#define ADJUST_FRAME_ARGS(arg, x, y) arg, x, y
+
+#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
+#define SWITCH_MODE_ARGS(arg, m) arg, m
+
+#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
+
+#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
+#define VT_FUNC_ARGS pScrn
+
+#define XF86_SCRN_ARG(x) (x)
+
+#endif
+
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/savage_accel.c 
new/xf86-video-savage-2.3.6/src/savage_accel.c
--- old/xf86-video-savage-2.3.4/src/savage_accel.c      2012-03-24 
03:46:19.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/savage_accel.c      2012-06-06 
12:21:27.000000000 +0200
@@ -1274,7 +1274,7 @@
 Bool 
 SavageInitAccel(ScreenPtr pScreen)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
 
 #ifdef SAVAGEDRI
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/savage_cursor.c 
new/xf86-video-savage-2.3.6/src/savage_cursor.c
--- old/xf86-video-savage-2.3.4/src/savage_cursor.c     2012-03-24 
03:46:19.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/savage_cursor.c     2012-06-06 
12:21:27.000000000 +0200
@@ -83,7 +83,7 @@
 static Bool
 SavageUseHWCursor(ScreenPtr pScr, CursorPtr pCurs)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScr->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScr);
     SavagePtr psav = SAVPTR(pScrn);
 
     if (psav->PanelX != pScrn->currentMode->HDisplay 
@@ -100,7 +100,7 @@
 Bool 
 SavageHWCursorInit(ScreenPtr pScreen)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     xf86CursorInfoPtr infoPtr;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/savage_dga.c 
new/xf86-video-savage-2.3.6/src/savage_dga.c
--- old/xf86-video-savage-2.3.4/src/savage_dga.c        2012-03-24 
03:46:19.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/savage_dga.c        2012-07-16 
04:37:56.000000000 +0200
@@ -34,8 +34,9 @@
  *
  */
 
-
+#ifdef HAVE_XAA_H
 #include "xaalocal.h"
+#endif
 #include "savage_driver.h"
 #include "dgaproc.h"
 
@@ -46,9 +47,10 @@
 static Bool Savage_SetMode(ScrnInfoPtr, DGAModePtr);
 static int  Savage_GetViewport(ScrnInfoPtr);
 static void Savage_SetViewport(ScrnInfoPtr, int, int, int);
+#ifdef HAVE_XAA_H
 static void Savage_FillRect(ScrnInfoPtr, int, int, int, int, unsigned long);
 static void Savage_BlitRect(ScrnInfoPtr, int, int, int, int, int, int);
-
+#endif
 
 static
 DGAFunctionRec Savage_DGAFuncs = {
@@ -58,8 +60,12 @@
     Savage_SetViewport,
     Savage_GetViewport,
     SavageAccelSync,
+#ifdef HAVE_XAA_H
     Savage_FillRect,
     Savage_BlitRect,
+#else
+    NULL, NULL,
+#endif
     NULL                        /* BlitTransRect */
 };
 
@@ -127,8 +133,10 @@
 
        mode->mode = pMode;
        mode->flags = DGA_CONCURRENT_ACCESS | DGA_PIXMAP_AVAILABLE;
+#ifdef HAVE_XAA_H
        if(!psav->NoAccel)
            mode->flags |= DGA_FILL_RECT | DGA_BLIT_RECT;
+#endif
        if(pMode->Flags & V_DBLSCAN)
            mode->flags |= DGA_DOUBLESCAN;
        if(pMode->Flags & V_INTERLACE)
@@ -202,7 +210,7 @@
 Bool
 SavageDGAInit(ScreenPtr pScreen)
 {   
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     DGAModePtr modes = NULL;
     int num = 0;
@@ -276,7 +284,7 @@
        pScrn->currentMode = OldMode[index];
 
        psav->DGAactive = FALSE;
-       SavageSwitchMode(index, pScrn->currentMode, 0);
+       SavageSwitchMode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode));
        if( psav->hwcursor && psav->hwc_on )
            SavageShowCursor(pScrn);
     } else {
@@ -312,7 +320,7 @@
            (pMode->bitsPerPixel >> 3);
 
 /*     psav->UseBIOS = FALSE; */
-       SavageSwitchMode(index, pMode->mode, 0);
+       SavageSwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode));
        psav->UseBIOS = holdBIOS;
     }
 
@@ -337,10 +345,11 @@
 ){
     SavagePtr psav = SAVPTR(pScrn);
 
-    SavageAdjustFrame(pScrn->pScreen->myNum, x, y, flags);
+    SavageAdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y));
     psav->DGAViewportStatus = 0;  /* MGAAdjustFrame loops until finished */
 }
 
+#ifdef HAVE_XAA_H
 static void 
 Savage_FillRect (
     ScrnInfoPtr pScrn, 
@@ -376,7 +385,7 @@
     SET_SYNC_FLAG(psav->AccelInfoRec);
     }
 }
-
+#endif
 
 static Bool 
 Savage_OpenFramebuffer(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/savage_dri.c 
new/xf86-video-savage-2.3.6/src/savage_dri.c
--- old/xf86-video-savage-2.3.4/src/savage_dri.c        2012-03-24 
03:46:19.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/savage_dri.c        2012-07-16 
04:39:28.000000000 +0200
@@ -31,8 +31,10 @@
 #include "xf86.h"
 #include "xf86_OSproc.h"
 
+#ifdef HAVE_XAA_H
 #include "xaalocal.h"
 #include "xaarop.h"
+#endif
 
 #include "xf86Pci.h"
 #include "xf86fbman.h"
@@ -104,7 +106,7 @@
  */
 static Bool SAVAGEInitVisualConfigs( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    int numConfigs = 0;
    __GLXvisualConfig *pConfigs = 0;
@@ -243,7 +245,7 @@
                              drm_context_t hwContext, void *pVisualConfigPriv,
                              DRIContextType contextStore )
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
 
     if(psav->xvmcContext)
@@ -259,21 +261,20 @@
 static void SAVAGEDestroyContext( ScreenPtr pScreen, drm_context_t hwContext,
                               DRIContextType contextStore )
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
 
     psav->DRIrunning--;
 }
 
-static void SAVAGEWakeupHandler( int screenNum, pointer wakeupData,
-                                unsigned long result, pointer pReadmask )
+static void SAVAGEWakeupHandler(WAKEUPHANDLER_ARGS_DECL)
 {
-   ScreenPtr pScreen = screenInfo.screens[screenNum];
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   SCREEN_PTR(arg);
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
 
    psav->pDRIInfo->wrap.WakeupHandler = psav->coreWakeupHandler;
-   (*psav->pDRIInfo->wrap.WakeupHandler) (screenNum, wakeupData, result, 
pReadmask);
+   (*psav->pDRIInfo->wrap.WakeupHandler) (WAKEUPHANDLER_ARGS);
    psav->pDRIInfo->wrap.WakeupHandler = SAVAGEWakeupHandler;
    psav->LockHeld = 1;
    if (psav->ShadowStatus) {
@@ -288,16 +289,17 @@
    }
    if (psav->useEXA)
        exaMarkSync(pScreen);
+#ifdef HAVE_XAA_H
    else
        psav->AccelInfoRec->NeedToSync = TRUE;
+#endif
    /* FK: this flag doesn't seem to be used. */
 }
 
-static void SAVAGEBlockHandler( int screenNum, pointer blockData,
-                               pointer pTimeout, pointer pReadmask)
+static void SAVAGEBlockHandler(BLOCKHANDLER_ARGS_DECL)
 {
-   ScreenPtr pScreen = screenInfo.screens[screenNum];
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   SCREEN_PTR(arg);
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
 
    if (psav->ShadowStatus) {
@@ -316,7 +318,7 @@
    }
    psav->LockHeld = 0;
    psav->pDRIInfo->wrap.BlockHandler = psav->coreBlockHandler;
-   (*psav->pDRIInfo->wrap.BlockHandler) (screenNum, blockData, pTimeout, 
pReadmask);
+   (*psav->pDRIInfo->wrap.BlockHandler) (BLOCKHANDLER_ARGS);
    psav->pDRIInfo->wrap.BlockHandler = SAVAGEBlockHandler;
 }
 
@@ -395,7 +397,7 @@
 
 static Bool SAVAGEDRIAgpInit(ScreenPtr pScreen)
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGEDRIServerPrivatePtr pSAVAGEDRIServer = psav->DRIServerInfo;
    unsigned int offset;
@@ -586,7 +588,7 @@
 
 static Bool SAVAGEDRIMapInit( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGEDRIServerPrivatePtr pSAVAGEDRIServer = psav->DRIServerInfo;
 
@@ -688,7 +690,7 @@
 
 static Bool SAVAGEDRIBuffersInit( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGEDRIServerPrivatePtr pSAVAGEDRIServer = psav->DRIServerInfo;
    int count;
@@ -736,7 +738,7 @@
 
 static Bool SAVAGEDRIKernelInit( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGEDRIServerPrivatePtr pSAVAGEDRIServer = psav->DRIServerInfo;
    drmSAVAGEInit init;
@@ -791,7 +793,7 @@
 
 Bool SAVAGEDRIScreenInit( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    DRIInfoPtr pDRIInfo;
    SAVAGEDRIPtr pSAVAGEDRI;
@@ -1069,7 +1071,7 @@
 
 Bool SAVAGEDRIFinishScreenInit( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGEDRIServerPrivatePtr pSAVAGEDRIServer = psav->DRIServerInfo;
    SAVAGEDRIPtr pSAVAGEDRI = (SAVAGEDRIPtr)psav->pDRIInfo->devPrivate;
@@ -1234,7 +1236,7 @@
 
 void SAVAGEDRIResume(ScreenPtr pScreen)
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGESAREAPrivPtr pSAREAPriv =
                        (SAVAGESAREAPrivPtr)DRIGetSAREAPrivate(pScreen);
@@ -1250,7 +1252,7 @@
 
 void SAVAGEDRICloseScreen( ScreenPtr pScreen )
 {
-   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
    SavagePtr psav = SAVPTR(pScrn);
    SAVAGEDRIServerPrivatePtr pSAVAGEDRIServer = psav->DRIServerInfo;
 
@@ -1346,7 +1348,7 @@
 SAVAGEDRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 index)
 {
     ScreenPtr pScreen = pWin->drawable.pScreen;
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     BoxPtr pbox = REGION_RECTS(prgn);
     int nbox  = REGION_NUM_RECTS(prgn);
@@ -1396,7 +1398,7 @@
                   RegionPtr prgnSrc, CARD32 index)
 {
     ScreenPtr pScreen = pParent->drawable.pScreen;
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     int nbox;
     BoxPtr pbox, pboxTmp, pboxNext, pboxBase, pboxNew1, pboxNew2;
@@ -1537,8 +1539,10 @@
     BCI_SEND(0xc0020000); /* wait for 2D idle */
     if (psav->useEXA)
        exaMarkSync(pScreen);
+#ifdef HAVE_XAA_H
     else
        psav->AccelInfoRec->NeedToSync = TRUE;
+#endif
 }
 
 /* Definition in savage_accel.c */
@@ -1613,7 +1617,7 @@
 static Bool
 SAVAGEDRIOpenFullScreen(ScreenPtr pScreen)
 {
-  ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+  ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
   vgaHWPtr hwp = VGAHWPTR(pScrn);
   SavagePtr psav = SAVPTR(pScrn);
   unsigned int vgaCRIndex = hwp->IOBase + 4;
@@ -1678,7 +1682,7 @@
 static Bool
 SAVAGEDRICloseFullScreen(ScreenPtr pScreen)
 {
-  ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+  ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
   SavagePtr psav = SAVPTR(pScrn);
   BCI_GET_PTR;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/savage_driver.c 
new/xf86-video-savage-2.3.6/src/savage_driver.c
--- old/xf86-video-savage-2.3.4/src/savage_driver.c     2012-03-24 
03:46:19.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/savage_driver.c     2012-07-16 
04:38:19.000000000 +0200
@@ -73,7 +73,6 @@
 #include "savage_sarea.h"
 #endif
 
-
 /*
  * prototypes
  */
@@ -91,25 +90,24 @@
 #endif
 static Bool SavagePreInit(ScrnInfoPtr pScrn, int flags);
 
-static Bool SavageEnterVT(int scrnIndex, int flags);
-static void SavageLeaveVT(int scrnIndex, int flags);
+static Bool SavageEnterVT(VT_FUNC_ARGS_DECL);
+static void SavageLeaveVT(VT_FUNC_ARGS_DECL);
 static void SavageSave(ScrnInfoPtr pScrn);
 static void SavageWriteMode(ScrnInfoPtr pScrn, vgaRegPtr, SavageRegPtr, Bool);
 
 static void SavageInitStatus(ScrnInfoPtr pScrn);
 static void SavageInitShadowStatus(ScrnInfoPtr pScrn);
 
-static Bool SavageScreenInit(int scrnIndex, ScreenPtr pScreen, int argc,
-                            char **argv);
-static int SavageInternalScreenInit(int scrnIndex, ScreenPtr pScreen);
-static ModeStatus SavageValidMode(int index, DisplayModePtr mode,
+static Bool SavageScreenInit(SCREEN_INIT_ARGS_DECL);
+static int SavageInternalScreenInit(ScreenPtr pScreen);
+static ModeStatus SavageValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode,
                                  Bool verbose, int flags);
 
 void SavageDGAInit(ScreenPtr);
 static Bool SavageMapMem(ScrnInfoPtr pScrn);
 static void SavageUnmapMem(ScrnInfoPtr pScrn, int All);
 static Bool SavageModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode);
-static Bool SavageCloseScreen(int scrnIndex, ScreenPtr pScreen);
+static Bool SavageCloseScreen(CLOSE_SCREEN_ARGS_DECL);
 static Bool SavageSaveScreen(ScreenPtr pScreen, int mode);
 static void SavageLoadPalette(ScrnInfoPtr pScrn, int numColors,
                              int *indicies, LOCO *colors,
@@ -125,7 +123,7 @@
 void SavageGEReset(ScrnInfoPtr pScrn, int from_timeout, int line, char *file);
 void SavagePrintRegs(ScrnInfoPtr pScrn);
 static void SavageDPMS(ScrnInfoPtr pScrn, int mode, int flags);
-static Bool SavageDDC1(int scrnIndex);
+static Bool SavageDDC1(ScrnInfoPtr pScrn);
 static unsigned int SavageDDC1Read(ScrnInfoPtr pScrn);
 static void SavageProbeDDC(ScrnInfoPtr pScrn, int index);
 static void SavageGetTvMaxSize(SavagePtr psav);
@@ -899,7 +897,7 @@
                 break;
         }
 
-        if (!SavageDDC1(pScrn->scrnIndex)) {
+        if (!SavageDDC1(pScrn)) {
             /* DDC1 failed,switch to DDC2 */
             if (xf86LoadSubModule(pScrn, "i2c")) {
                 if (SavageI2CInit(pScrn)) {
@@ -908,7 +906,7 @@
                     
                     InI2CREG(tmp,psav->DDCPort);
                     OutI2CREG(tmp | 0x13,psav->DDCPort);
-                    pMon = 
xf86PrintEDID(xf86DoEDID_DDC2(pScrn->scrnIndex,psav->I2C));
+                    pMon = 
xf86PrintEDID(xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn),psav->I2C));
                     if (!psav->IgnoreEDID) xf86SetDDCproperties(pScrn, pMon);
                     OutI2CREG(tmp,psav->DDCPort);
                 }
@@ -2198,22 +2196,20 @@
 }
 
 
-static Bool SavageEnterVT(int scrnIndex, int flags)
+static Bool SavageEnterVT(VT_FUNC_ARGS_DECL)
 {
-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+    SCRN_INFO_PTR(arg);
 #ifdef SAVAGEDRI
     SavagePtr psav = SAVPTR(pScrn);
     ScreenPtr pScreen;
 #endif
 
-    TRACE(("SavageEnterVT(%d)\n", flags));
-
     gpScrn = pScrn;
     SavageEnableMMIO(pScrn);
 
 #ifdef SAVAGEDRI
     if (psav->directRenderingEnabled) {
-        pScreen = screenInfo.screens[scrnIndex];
+        pScreen = xf86ScrnToScreen(pScrn);
         SAVAGEDRIResume(pScreen);
         DRIUnlock(pScreen);
         psav->LockHeld = 0;
@@ -2232,9 +2228,9 @@
 }
 
 
-static void SavageLeaveVT(int scrnIndex, int flags)
+static void SavageLeaveVT(VT_FUNC_ARGS_DECL)
 {
-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+    SCRN_INFO_PTR(arg);
     vgaHWPtr hwp = VGAHWPTR(pScrn);
     SavagePtr psav = SAVPTR(pScrn);
     vgaRegPtr vgaSavePtr = &hwp->SavedReg;
@@ -2248,7 +2244,7 @@
 
 #ifdef SAVAGEDRI
     if (psav->directRenderingEnabled) {
-        pScreen = screenInfo.screens[scrnIndex];
+        pScreen = xf86ScrnToScreen(pScrn);
         DRILock(pScreen, 0);
         psav->LockHeld = 1;
     }
@@ -2461,7 +2457,7 @@
 
 #ifdef SAVAGEDRI
     if (psav->directRenderingEnabled) {
-        DRILock(screenInfo.screens[pScrn->scrnIndex], 0);
+        DRILock(xf86ScrnToScreen(pScrn), 0);
         psav->LockHeld = 1;
     }
 #endif
@@ -2654,7 +2650,7 @@
 
 #ifdef SAVAGEDRI
        if (psav->directRenderingEnabled)
-           DRIUnlock(screenInfo.screens[pScrn->scrnIndex]);
+           DRIUnlock(xf86ScrnToScreen(pScrn));
        psav->LockHeld = 0;
 #endif
 
@@ -2910,7 +2906,7 @@
 
 #ifdef SAVAGEDRI
     if (psav->directRenderingEnabled)
-        DRIUnlock(screenInfo.screens[pScrn->scrnIndex]);
+        DRIUnlock(xf86ScrnToScreen(pScrn));
     psav->LockHeld = 0;
 #endif
 
@@ -3215,10 +3211,9 @@
        psav->dwBCIWait2DIdle = 0xc0020000;
 }
 
-static Bool SavageScreenInit(int scrnIndex, ScreenPtr pScreen,
-                            int argc, char **argv)
+static Bool SavageScreenInit(SCREEN_INIT_ARGS_DECL)
 {
-    ScrnInfoPtr pScrn;
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav;
     EntityInfoPtr pEnt;
     int ret;
@@ -3226,7 +3221,6 @@
 
     TRACE(("SavageScreenInit()\n"));
 
-    pScrn = xf86Screens[pScreen->myNum];
     psav = SAVPTR(pScrn);
 
     pEnt = xf86GetEntityInfo(pScrn->entityList[0]); 
@@ -3268,16 +3262,16 @@
     } else if (xf86IsEntityShared(psav->pEnt->index)) {
            /* Xinerama has sync problem with DRI, disable it for now */
            psav->directRenderingEnabled = FALSE;
-           xf86DrvMsg(scrnIndex, X_WARNING,
+           xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
                        "Direct Rendering Disabled -- "
                        "Dual-head configuration is not working with "
                        "DRI at present.\n");
     } else if (/*!psav->bTiled*/psav->bDisableTile) {
-            xf86DrvMsg(scrnIndex, X_WARNING, 
+            xf86DrvMsg(pScrn->scrnIndex, X_WARNING, 
                        "Direct Rendering requires a tiled framebuffer -- "
                        "Set Option \"DisableTile\" \"false\"\n");
     } else if (psav->cobSize == 0) {
-            xf86DrvMsg(scrnIndex, X_WARNING, 
+            xf86DrvMsg(pScrn->scrnIndex, X_WARNING, 
                        "Direct Rendering requires the COB -- "
                        "Set Option \"DisableCOB\" \"false\"\n");
     } else if (((psav->Chipset == S3_TWISTER)
@@ -3342,7 +3336,7 @@
      if (!miSetPixmapDepths ())
         return FALSE;
 
-    ret = SavageInternalScreenInit(scrnIndex, pScreen);
+    ret = SavageInternalScreenInit(pScreen);
     if (!ret)
        return FALSE;
 
@@ -3524,7 +3518,7 @@
 }
 
 
-static int SavageInternalScreenInit(int scrnIndex, ScreenPtr pScreen)
+static int SavageInternalScreenInit(ScreenPtr pScreen)
 {
     int ret = TRUE;
     ScrnInfoPtr pScrn;
@@ -3534,7 +3528,7 @@
 
     TRACE(("SavageInternalScreenInit()\n"));
 
-    pScrn = xf86Screens[pScreen->myNum];
+    pScrn = xf86ScreenToScrn(pScreen);
     psav = SAVPTR(pScrn);
 
     displayWidth = pScrn->displayWidth;
@@ -3609,10 +3603,10 @@
 }
 
 
-static ModeStatus SavageValidMode(int index, DisplayModePtr pMode,
+static ModeStatus SavageValidMode(SCRN_ARG_TYPE arg, DisplayModePtr pMode,
                                  Bool verbose, int flags)
 {
-    ScrnInfoPtr pScrn = xf86Screens[index];
+    SCRN_INFO_PTR(arg);
     SavagePtr psav = SAVPTR(pScrn);
     int refresh;
 
@@ -3701,7 +3695,7 @@
            SavageInitSecondaryStream(pScrn);
         }
 
-        SavageAdjustFrame(pScrn->scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+        SavageAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, 
pScrn->frameY0));
        return TRUE;
     }
 
@@ -3963,15 +3957,15 @@
        SavageInitSecondaryStream(pScrn);
     }
 
-    SavageAdjustFrame(pScrn->scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+    SavageAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, 
pScrn->frameY0));
 
     return TRUE;
 }
 
 
-static Bool SavageCloseScreen(int scrnIndex, ScreenPtr pScreen)
+static Bool SavageCloseScreen(CLOSE_SCREEN_ARGS_DECL)
 {
-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     vgaHWPtr hwp = VGAHWPTR(pScrn);
     SavagePtr psav = SAVPTR(pScrn);
     vgaRegPtr vgaSavePtr = &hwp->SavedReg;
@@ -3993,10 +3987,12 @@
        psav->EXADriverPtr = NULL;
     }
 
+#ifdef HAVE_XAA_H
     if( psav->AccelInfoRec ) {
         XAADestroyInfoRec( psav->AccelInfoRec );
        psav->AccelInfoRec = NULL;
     }
+#endif
 
     if( psav->DGAModes ) {
        free( psav->DGAModes );
@@ -4020,13 +4016,13 @@
     pScrn->vtSema = FALSE;
     pScreen->CloseScreen = psav->CloseScreen;
 
-    return (*pScreen->CloseScreen)(scrnIndex, pScreen);
+    return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
 }
 
 
 static Bool SavageSaveScreen(ScreenPtr pScreen, int mode)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
 
     TRACE(("SavageSaveScreen(0x%x)\n", mode));
 
@@ -4042,9 +4038,9 @@
     return vgaHWSaveScreen(pScreen, mode);
 }
 
-void SavageAdjustFrame(int scrnIndex, int x, int y, int flags)
+void SavageAdjustFrame(ADJUST_FRAME_ARGS_DECL)
 {
-    ScrnInfoPtr    pScrn      = xf86Screens[scrnIndex];
+    SCRN_INFO_PTR(arg);
     SavagePtr psav = SAVPTR(pScrn);
 
     if (psav->IsSecondary) {
@@ -4119,18 +4115,18 @@
     return;
 }
 
-Bool SavageSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+Bool SavageSwitchMode(SWITCH_MODE_ARGS_DECL)
 {
-    ScrnInfoPtr    pScrn      = xf86Screens[scrnIndex];
+    SCRN_INFO_PTR(arg);
     SavagePtr psav = SAVPTR(pScrn);
     Bool success;
 
     TRACE(("SavageSwitchMode\n"));
 
     if (psav->FBStart2nd || (psav->videoFlags & VF_STREAMS_ON))
-        SavageStreamsOff(xf86Screens[scrnIndex]);
+        SavageStreamsOff(pScrn);
 
-    success = SavageModeInit(xf86Screens[scrnIndex], mode);
+    success = SavageModeInit(pScrn, mode);
 
     /* switching mode on primary will reset secondary.  it needs to be reset 
as well*/
     if (psav->IsPrimary) {
@@ -4578,9 +4574,8 @@
 }
 
 static Bool
-SavageDDC1(int scrnIndex)
+SavageDDC1(ScrnInfoPtr pScrn)
 {
-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
     SavagePtr psav = SAVPTR(pScrn);
     unsigned char byte;
     xf86MonPtr pMon;
@@ -4591,7 +4586,7 @@
     InI2CREG(byte,psav->I2CPort);
     OutI2CREG(byte | 0x12,psav->I2CPort);
 
-    pMon = xf86DoEDID_DDC1(scrnIndex,vgaHWddc1SetSpeedWeak(),SavageDDC1Read);
+    pMon = 
xf86DoEDID_DDC1(XF86_SCRN_ARG(pScrn),vgaHWddc1SetSpeedWeak(),SavageDDC1Read);
     if (!pMon)
         return FALSE;
     
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/savage_driver.h 
new/xf86-video-savage-2.3.6/src/savage_driver.h
--- old/xf86-video-savage-2.3.4/src/savage_driver.h     2012-03-24 
03:46:19.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/savage_driver.h     2012-07-16 
04:35:12.000000000 +0200
@@ -63,7 +63,10 @@
 #include "fboverlay.h"
 #include "xf86cmap.h"
 #include "vbe.h"
+#ifdef HAVE_XAA_H
 #include "xaa.h"
+#endif
+#include "xf86fbman.h"
 #include "exa.h"
 #include "xf86xv.h"
 
@@ -82,6 +85,8 @@
 #include "GL/glxint.h"
 #include "xf86drm.h"
 
+#include "compat-api.h"
+
 /* Totals 2 Mbytes which equals 2^16 32-byte vertices divided among up
  * to 32 clients. */
 #define SAVAGE_NUM_BUFFERS 32
@@ -407,7 +412,7 @@
     /* Support for shadowFB and rotation */
     unsigned char *    ShadowPtr;
     int                        ShadowPitch;
-    void               (*PointerMoved)(int index, int x, int y);
+    void               (*PointerMoved)(SCRN_ARG_TYPE arg, int x, int y);
 
     /* support for EXA */
     ExaDriverPtr        EXADriverPtr;
@@ -419,7 +424,9 @@
     unsigned long      sbd_high;
 
     /* Support for XAA acceleration */
+#ifdef HAVE_XAA_H
     XAAInfoRecPtr      AccelInfoRec;
+#endif
     xRectangle         Rect;
     unsigned int       SavedBciCmd;
     unsigned int       SavedFgColor;
@@ -578,9 +585,9 @@
                        int max_n1, int min_n2, int max_n2,
                        long freq_min, long freq_max,
                        unsigned char *mdiv, unsigned char *ndiv);
-void SavageAdjustFrame(int scrnIndex, int y, int x, int flags);
+void SavageAdjustFrame(ADJUST_FRAME_ARGS_DECL);
 void SavageDoAdjustFrame(ScrnInfoPtr pScrn, int y, int x, int crtc2);
-Bool SavageSwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
+Bool SavageSwitchMode(SWITCH_MODE_ARGS_DECL);
 
 /* In savage_cursor.c. */
 
@@ -606,7 +613,7 @@
 
 /* In savage_shadow.c */
 
-void SavagePointerMoved(int index, int x, int y);
+void SavagePointerMoved(SCRN_ARG_TYPE arg, int x, int y);
 void SavageRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
 void SavageRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
 void SavageRefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
@@ -625,6 +632,7 @@
 
 unsigned short SavageGetBIOSModes( 
     SavagePtr psav,
+    VbeInfoBlock *vbe,
     int iDepth,
     SavageModeEntryPtr s3vModeTable );
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/savage_exa.c 
new/xf86-video-savage-2.3.6/src/savage_exa.c
--- old/xf86-video-savage-2.3.4/src/savage_exa.c        2012-03-24 
03:46:19.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/savage_exa.c        2012-06-06 
12:21:27.000000000 +0200
@@ -102,7 +102,7 @@
 Bool 
 SavageEXAInit(ScreenPtr pScreen)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
 
     if (!(psav->EXADriverPtr = exaDriverAlloc())) {
@@ -196,7 +196,7 @@
 static void
 SavageEXASync(ScreenPtr pScreen, int marker)
 {
-    SavagePtr psav = SAVPTR(xf86Screens[pScreen->myNum]);
+    SavagePtr psav = SAVPTR(xf86ScreenToScrn(pScreen));
     psav->WaitIdleEmpty(psav);
 }
 
@@ -248,7 +248,7 @@
 static Bool
 SavagePrepareSolid(PixmapPtr pPixmap, int alu, Pixel planemask, Pixel fg)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     int cmd, rop;
     BCI_GET_PTR;
@@ -322,7 +322,7 @@
 static void
 SavageSolid(PixmapPtr pPixmap, int x1, int y1, int x2, int y2)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     int w = x2 - x1;
     int h = y2 - y1;
@@ -352,7 +352,7 @@
 SavagePrepareCopy(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, int xdir, int 
ydir,
                                        int alu, Pixel planemask)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pDstPixmap->drawable.pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pDstPixmap->drawable.pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     int cmd;
     BCI_GET_PTR;
@@ -400,7 +400,7 @@
 static void
 SavageCopy(PixmapPtr pDstPixmap, int srcX, int srcY, int dstX, int dstY, int 
width, int height)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pDstPixmap->drawable.pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pDstPixmap->drawable.pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     BCI_GET_PTR;
 
@@ -435,7 +435,7 @@
 Bool
 SavageUploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, char *src, 
int src_pitch)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pDst->drawable.pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     BCI_GET_PTR;
     int i, j, dwords, queue, Bpp;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/savage_hwmc.c 
new/xf86-video-savage-2.3.6/src/savage_hwmc.c
--- old/xf86-video-savage-2.3.4/src/savage_hwmc.c       2012-03-24 
03:46:19.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/savage_hwmc.c       2012-07-16 
04:38:50.000000000 +0200
@@ -40,8 +40,9 @@
 #include "xf86xvmc.h"
 #include <X11/extensions/Xv.h>
 #include <X11/extensions/XvMC.h>
-#include "xaa.h"
+#ifdef HAVE_XAA_H
 #include "xaalocal.h"
+#endif
 #include "dixstruct.h"
 #include "fourcc.h"
 
@@ -181,7 +182,7 @@
  **************************************************************************/
 Bool SAVAGEInitMC(ScreenPtr pScreen)
 {
-  ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+  ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
   SavagePtr pSAVAGE = SAVPTR(pScrn);
   DRIInfoPtr pDRIInfo = pSAVAGE->pDRIInfo;
   SAVAGEDRIPtr pSAVAGEDriPriv = (SAVAGEDRIPtr)pDRIInfo->devPrivate;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/savage_i2c.c 
new/xf86-video-savage-2.3.6/src/savage_i2c.c
--- old/xf86-video-savage-2.3.4/src/savage_i2c.c        2012-03-24 
03:46:19.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/savage_i2c.c        2012-06-06 
12:24:11.000000000 +0200
@@ -37,7 +37,11 @@
 static void
 SavageI2CPutBits(I2CBusPtr b, int clock,  int data)
 {
+#ifdef XF86_SCRN_INTERFACE
+    ScrnInfoPtr pScrn = b->pScrn;
+#else
     ScrnInfoPtr pScrn = (ScrnInfoPtr)(xf86Screens[b->scrnIndex]);
+#endif
     SavagePtr psav = SAVPTR(pScrn);
     unsigned char reg = 0x10;
 
@@ -51,7 +55,11 @@
 static void
 SavageI2CGetBits(I2CBusPtr b, int *clock, int *data)
 {
+#ifdef XF86_SCRN_INTERFACE
+    ScrnInfoPtr pScrn = b->pScrn;
+#else
     ScrnInfoPtr pScrn = (ScrnInfoPtr)(xf86Screens[b->scrnIndex]);
+#endif
     SavagePtr psav = SAVPTR(pScrn);
     unsigned char reg = 0x10;
 
@@ -76,6 +84,9 @@
 
     I2CPtr->BusName    = "I2C bus";
     I2CPtr->scrnIndex  = pScrn->scrnIndex;
+#ifdef XF86_SCRN_INTERFACE
+    I2CPtr->pScrn  = pScrn;
+#endif
     I2CPtr->I2CPutBits = SavageI2CPutBits;
     I2CPtr->I2CGetBits = SavageI2CGetBits;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/savage_shadow.c 
new/xf86-video-savage-2.3.6/src/savage_shadow.c
--- old/xf86-video-savage-2.3.4/src/savage_shadow.c     2012-03-24 
03:46:19.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/savage_shadow.c     2012-06-06 
12:21:27.000000000 +0200
@@ -42,9 +42,9 @@
 
 
 void
-SavagePointerMoved(int index, int x, int y)
+SavagePointerMoved(SCRN_ARG_TYPE arg, int x, int y)
 {
-    ScrnInfoPtr pScrn = xf86Screens[index];
+    SCRN_INFO_PTR(arg);
     SavagePtr psav = SAVPTR(pScrn);
     int newX, newY;
 
@@ -56,7 +56,7 @@
        newY = pScrn->pScreen->width - x - 1;
     }
 
-    (*psav->PointerMoved)(index, newX, newY);
+    (*psav->PointerMoved)(arg, newX, newY);
 }
 
 void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/savage_vbe.c 
new/xf86-video-savage-2.3.6/src/savage_vbe.c
--- old/xf86-video-savage-2.3.4/src/savage_vbe.c        2012-03-24 
03:46:19.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/savage_vbe.c        2012-06-06 
12:21:27.000000000 +0200
@@ -242,17 +242,28 @@
 SavageModeTablePtr
 SavageGetBIOSModeTable( SavagePtr psav, int iDepth )
 {
-    int nModes = SavageGetBIOSModes( psav, iDepth, NULL );
+    VbeInfoBlock *vbe;
+    int nModes;
     SavageModeTablePtr pTable;
 
+    if( !psav->pVbe )
+       return 0;
+
+    if (!(vbe = VBEGetVBEInfo(psav->pVbe)))
+       return 0;
+
+    nModes = SavageGetBIOSModes( psav, vbe, iDepth, NULL );
+
     pTable = (SavageModeTablePtr) 
        calloc( 1, sizeof(SavageModeTableRec) + 
                    (nModes-1) * sizeof(SavageModeEntry) );
     if( pTable ) {
        pTable->NumModes = nModes;
-       SavageGetBIOSModes( psav, iDepth, pTable->Modes );
+       SavageGetBIOSModes( psav, vbe, iDepth, pTable->Modes );
     }
 
+    VBEFreeVBEInfo(vbe);
+
     return pTable;
 }
 
@@ -260,19 +271,16 @@
 unsigned short
 SavageGetBIOSModes( 
     SavagePtr psav,
+    VbeInfoBlock *vbe,
     int iDepth,
     SavageModeEntryPtr s3vModeTable )
 {
     unsigned short iModeCount = 0;
     unsigned short int *mode_list;
     pointer vbeLinear = NULL;
-    VbeInfoBlock *vbe;
     int vbeReal;
     struct vbe_mode_info_block * vmib;
 
-    if( !psav->pVbe )
-       return 0;
-
     vbeLinear = xf86Int10AllocPages( psav->pVbe->pInt10, 1, &vbeReal );
     if( !vbeLinear )
     {
@@ -281,9 +289,6 @@
     }
     vmib = (struct vbe_mode_info_block *) vbeLinear;
     
-    if (!(vbe = VBEGetVBEInfo(psav->pVbe)))
-       return 0;
-
     for (mode_list = vbe->VideoModePtr; *mode_list != 0xffff; mode_list++) {
 
        /*
@@ -377,8 +382,6 @@
        }
     }
 
-    VBEFreeVBEInfo(vbe);
-
     xf86Int10FreePages( psav->pVbe->pInt10, vbeLinear, 1 );
 
     return iModeCount;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/savage_video.c 
new/xf86-video-savage-2.3.6/src/savage_video.c
--- old/xf86-video-savage-2.3.4/src/savage_video.c      2012-03-24 
03:46:19.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/savage_video.c      2012-06-06 
12:21:27.000000000 +0200
@@ -338,7 +338,7 @@
 
 void SavageInitVideo(ScreenPtr pScreen)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL;
     XF86VideoAdaptorPtr newAdaptor = NULL;
     SavagePtr psav = SAVPTR(pScrn);
@@ -877,7 +877,7 @@
 static XF86VideoAdaptorPtr 
 SavageSetupImageVideo(ScreenPtr pScreen)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     XF86VideoAdaptorPtr adapt;
     SavagePortPrivPtr pPriv;
@@ -1324,7 +1324,7 @@
 static void
 SavageVideoSave(ScreenPtr pScreen, ExaOffscreenArea *area)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     SavagePortPrivPtr pPriv = psav->adaptor->pPortPrivates[0].ptr;
 
@@ -1340,7 +1340,7 @@
     void **mem_struct,
     int size
 ){
-    ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex];
+    ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
     SavagePtr psav = SAVPTR(pScrn);
     int offset = 0;
 
@@ -2359,7 +2359,7 @@
 SavageInitOffscreenImages(ScreenPtr pScreen)
 {
     XF86OffscreenImagePtr offscreenImages;
-    SavagePtr psav = SAVPTR(xf86Screens[pScreen->myNum]);
+    SavagePtr psav = SAVPTR(xf86ScreenToScrn(pScreen));
 
     /* need to free this someplace */
     if (!psav->offscreenImages) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-savage-2.3.4/src/savage_xaa.c 
new/xf86-video-savage-2.3.6/src/savage_xaa.c
--- old/xf86-video-savage-2.3.4/src/savage_xaa.c        2012-03-24 
03:46:19.000000000 +0100
+++ new/xf86-video-savage-2.3.6/src/savage_xaa.c        2012-07-16 
04:36:51.000000000 +0200
@@ -14,10 +14,13 @@
 #endif
 
 #include <X11/Xarch.h>
+#include "savage_driver.h"
+#ifdef HAVE_XAA_H
 #include "xaalocal.h"
 #include "xaarop.h"
+
 #include "miline.h"
-#include "savage_driver.h"
+
 #include "savage_bci.h"
 
 extern int gSavageEntityIndex;
@@ -146,12 +149,13 @@
 
     return;
 }
-
+#endif
 
 Bool 
 SavageXAAInit(ScreenPtr pScreen)
 {
-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+#ifdef HAVE_XAA_H
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
     SavagePtr psav = SAVPTR(pScrn);
     XAAInfoRecPtr xaaptr;
     BoxRec AvailFBArea;
@@ -344,7 +348,9 @@
 
 
     return XAAInit(pScreen, xaaptr);
-
+#else
+    return FALSE;
+#endif
 }
 
 /* The sync function for the GE */
@@ -355,7 +361,7 @@
     psav->WaitIdleEmpty(psav);
 }
 
-
+#ifdef HAVE_XAA_H
 /*
  * The XAA ROP helper routines all assume that a solid color is a 
  * "pattern".  The Savage chips, however, apply a non-stippled solid
@@ -1020,3 +1026,4 @@
     BCI_SEND(BCI_W_H(w, h));
 }
 
+#endif

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to