summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-06-07 16:27:49 +0100
committerDave Airlie <airlied@redhat.com>2012-06-07 16:28:08 +0100
commitf526b428847bf03abcc74a2e4b0ea08d3f1e167c (patch)
treebeecab0fbcda54d1fdc288213c2302c2ad981bd4
parent8130a2ac8332ff1f83f9f35acca3053d4076f443 (diff)
xgixp: port to new compat API.
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/Makefile.am1
-rw-r--r--src/compat-api.h105
-rw-r--r--src/xg47_accel.c4
-rw-r--r--src/xg47_cursor.c8
-rw-r--r--src/xg47_misc.c4
-rw-r--r--src/xg47_misc.h2
-rw-r--r--src/xg47_video.c6
-rw-r--r--src/xgi.h1
-rw-r--r--src/xgi_cursor.c2
-rw-r--r--src/xgi_dga.c8
-rw-r--r--src/xgi_dri.c6
-rw-r--r--src/xgi_driver.c85
-rw-r--r--src/xgi_driver.h4
-rw-r--r--src/xgi_hwmc.c2
-rw-r--r--src/xgi_shadow.c8
-rw-r--r--src/xgi_shadow.h2
-rw-r--r--src/xgi_video.c2
17 files changed, 179 insertions, 71 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index c69bbca..b73f984 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -29,6 +29,7 @@ xgixp_drv_la_LDFLAGS = -module -avoid-version
xgixp_drv_ladir = @moduledir@/drivers
xgixp_drv_la_SOURCES = \
+ compat-api.h \
xg47_accel.c \
xg47_accel.h \
xg47_cmdlist.c \
diff --git a/src/compat-api.h b/src/compat-api.h
new file mode 100644
index 0000000..98ba435
--- /dev/null
+++ b/src/compat-api.h
@@ -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 <airlied@redhat.com>
+ */
+
+/* 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 --git a/src/xg47_accel.c b/src/xg47_accel.c
index 13901f6..0dcb490 100644
--- a/src/xg47_accel.c
+++ b/src/xg47_accel.c
@@ -220,7 +220,7 @@ static void XGIRestoreAccelState(ScrnInfoPtr pScrn);
Bool XG47AccelInit(ScreenPtr pScreen)
{
XAAInfoRecPtr pXaaInfo;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
@@ -937,7 +937,7 @@ static Bool XG47InitCmdList(ScrnInfoPtr pScrn)
void XG47AccelExit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
XGIDebug(DBG_FUNCTION, "Enter XG47AccelExit\n");
diff --git a/src/xg47_cursor.c b/src/xg47_cursor.c
index 5ab0742..6ac623b 100644
--- a/src/xg47_cursor.c
+++ b/src/xg47_cursor.c
@@ -69,7 +69,7 @@ static void setMonoCursorPositionOfSecondView(XGIPtr pXGI, int x, int y);
Bool XG47HWCursorInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
xf86CursorInfoPtr pCursorInfo;
const unsigned size_bytes = CURSOR_WIDTH * 4 * CURSOR_HEIGHT;
@@ -122,7 +122,7 @@ Bool XG47HWCursorInit(ScreenPtr pScreen)
void XG47HWCursorCleanup(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
uint32_t *d = (uint32_t *)(pXGI->fbBase + pXGI->cursorStart);
int test = 0; /* 1; */ /* Jong 09/27/2006; test */
@@ -259,7 +259,7 @@ static void XG47ShowCursor(ScrnInfoPtr pScrn)
static Bool XG47UseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
@@ -269,7 +269,7 @@ static Bool XG47UseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
static Bool XG47UseHWCursorARGB(ScreenPtr pScreen, CursorPtr pCurs)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
Bool ret;
diff --git a/src/xg47_misc.c b/src/xg47_misc.c
index 000a2b5..dcce5d0 100644
--- a/src/xg47_misc.c
+++ b/src/xg47_misc.c
@@ -108,9 +108,9 @@ void XG47DisableMMIO(ScrnInfoPtr pScrn)
}
-void XG47AdjustFrame(int scrnIndex, int x, int y, int flags)
+void XG47AdjustFrame(ADJUST_FRAME_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
XGIPtr pXGI = XGIPTR(pScrn);
unsigned long base = y * pScrn->displayWidth + x;
diff --git a/src/xg47_misc.h b/src/xg47_misc.h
index 00c21e6..9a13b94 100644
--- a/src/xg47_misc.h
+++ b/src/xg47_misc.h
@@ -30,7 +30,7 @@
extern void XG47EnableMMIO(ScrnInfoPtr pScrn);
extern void XG47DisableMMIO(ScrnInfoPtr pScrn);
-extern void XG47AdjustFrame(int scrnIndex, int x, int y, int flags);
+extern void XG47AdjustFrame(ADJUST_FRAME_ARGS_DECL);
extern void XG47GetFramebufferSize(XGIPtr pXGI);
diff --git a/src/xg47_video.c b/src/xg47_video.c
index c2deb95..2beb388 100644
--- a/src/xg47_video.c
+++ b/src/xg47_video.c
@@ -179,7 +179,7 @@ static Atom xvmcSubSrcX, xvmcSubSrcY, xvmcSubDstX, xvmcSubDstY, xvmcSubW, xvmcSu
void XG47InitVideo(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL;
XF86VideoAdaptorPtr newAdaptor = NULL;
XGIPtr pXGI = XGIPTR(pScrn);
@@ -226,7 +226,7 @@ void XG47InitVideo(ScreenPtr pScreen)
static XF86VideoAdaptorPtr XG47SetupImageVideo(ScreenPtr pScreen)
{
XF86VideoAdaptorPtr pAdaptor = NULL;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
XGIPortPtr pXGIPort = NULL;
@@ -732,7 +732,7 @@ static FBLinearPtr XG47AllocateMemory(ScrnInfoPtr pScrn,
xf86FreeOffscreenLinear(pFBLinear);
}
- pScreen = screenInfo.screens[pScrn->scrnIndex];
+ pScreen = xf86ScrnToScreen(pScrn);
pNewFBLinear = xf86AllocateOffscreenLinear(pScreen, size, 16, NULL, NULL, NULL);
diff --git a/src/xgi.h b/src/xgi.h
index ce22d9b..45f1730 100644
--- a/src/xgi.h
+++ b/src/xgi.h
@@ -58,6 +58,7 @@
#include <GL/glxint.h>
#include "dri.h"
+#include "compat-api.h"
/* Jong 09/06/2006; support dual view */
#define XGIDUALVIEW
diff --git a/src/xgi_cursor.c b/src/xgi_cursor.c
index 7308b46..eb7bea0 100644
--- a/src/xgi_cursor.c
+++ b/src/xgi_cursor.c
@@ -35,7 +35,7 @@
Bool XGIHWCursorInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
Bool ret = FALSE;
diff --git a/src/xgi_dga.c b/src/xgi_dga.c
index ac43850..96ce4a9 100644
--- a/src/xgi_dga.c
+++ b/src/xgi_dga.c
@@ -62,7 +62,7 @@ static DGAFunctionRec XGIDGAFuncs = {
Bool XGIDGAInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
DGAModePtr pDgaModes = NULL, pNewDgaModes = NULL, pCurrentMode;
DisplayModePtr pMode, pFirstMode;
@@ -168,7 +168,7 @@ static Bool XGIDGASetMode(ScrnInfoPtr pScrn, DGAModePtr pMode)
/* put the ScreenParameters back */
pScrn->displayWidth = oldDisplayWidth[index];
- XGISwitchMode(index, pScrn->currentMode, 0);
+ XGISwitchMode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode));
pXGI->isDgaActive = FALSE;
}
else
@@ -184,7 +184,7 @@ static Bool XGIDGASetMode(ScrnInfoPtr pScrn, DGAModePtr pMode)
pScrn->displayWidth = pMode->bytesPerScanline /
(pMode->bitsPerPixel >> 3);
- XGISwitchMode(index, pMode->mode, 0);
+ XGISwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode));
}
return TRUE;
@@ -203,7 +203,7 @@ static void XGIDGASetViewport(ScrnInfoPtr pScrn,
{
XGIPtr pXGI = XGIPTR(pScrn);
- XGIAdjustFrame(pScrn->pScreen->myNum, x, y, flags);
+ XGIAdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y));
pXGI->dgaViewportStatus = 0; /* TRIDENTAdjustFrame loops until finished */
}
diff --git a/src/xgi_dri.c b/src/xgi_dri.c
index 0e73212..53cb6e0 100644
--- a/src/xgi_dri.c
+++ b/src/xgi_dri.c
@@ -82,7 +82,7 @@ static void XGIDRISwapContext(ScreenPtr pScreen, DRISyncType sync_type,
Bool XGIDRIScreenInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
struct xgi_dri_private *dri_priv;
DRIInfoPtr dri_info;
@@ -193,7 +193,7 @@ Bool XGIDRIScreenInit(ScreenPtr pScreen)
Bool XGIDRIFinishScreenInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
struct xgi_dri_private *dri_priv = pXGI->dri_info->devPrivate;
int err;
@@ -246,7 +246,7 @@ Bool XGIDRIFinishScreenInit(ScreenPtr pScreen)
void XGIDRICloseScreen(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[dri] %s\n", __func__);
diff --git a/src/xgi_driver.c b/src/xgi_driver.c
index 4e63282..dc94a55 100644
--- a/src/xgi_driver.c
+++ b/src/xgi_driver.c
@@ -122,14 +122,14 @@ static Bool XGIPciProbe(DriverPtr drv, int entity_num, struct pci_device *dev,
static Bool XGIProbe(DriverPtr drv, int flags);
#endif
static Bool XGIPreInit(ScrnInfoPtr pScrn, int flags);
-static Bool XGIScreenInit(int Index, ScreenPtr pScreen, int argc, char **argv);
-static Bool XGIEnterVT(int scrnIndex, int flags);
-static void XGILeaveVT(int scrnIndex, int flags);
-static Bool XGICloseScreen(int scrnIndex, ScreenPtr pScreen);
+static Bool XGIScreenInit(SCREEN_INIT_ARGS_DECL);
+static Bool XGIEnterVT(VT_FUNC_ARGS_DECL);
+static void XGILeaveVT(VT_FUNC_ARGS_DECL);
+static Bool XGICloseScreen(CLOSE_SCREEN_ARGS_DECL);
static Bool XGISaveScreen(ScreenPtr pScreen, int mode);
/* Optional functions */
-static void XGIFreeScreen(int scrnIndex, int flags);
-static int XGIValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose,
+static void XGIFreeScreen(FREE_SCREEN_ARGS_DECL);
+static int XGIValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose,
int flags);
/* Internally used functions */
@@ -143,7 +143,7 @@ static void XGISave(ScrnInfoPtr pScrn);
static void XGIRestore(ScrnInfoPtr pScrn);
static Bool XGIModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode);
-static void XGIBlockHandler(int, pointer, pointer, pointer);
+static void XGIBlockHandler(BLOCKHANDLER_ARGS_DECL);
static void xg47_write_memory_func(void *dst, uint32_t value, int size);
static uint32_t xg47_read_memory_func(const void *src, int size);
@@ -1495,11 +1495,11 @@ xf86MonPtr get_configured_monitor(ScrnInfoPtr pScrn, int index)
}
if (pXGI->pI2C != NULL) {
- pMon = xf86DoEDID_DDC2(pScrn->scrnIndex, pXGI->pI2C);
+ pMon = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn), pXGI->pI2C);
}
if (pMon == NULL) {
- pMon = xf86DoEDID_DDC1(pScrn->scrnIndex, vgaHWddc1SetSpeedWeak(),
+ pMon = xf86DoEDID_DDC1(XF86_SCRN_ARG(pScrn), vgaHWddc1SetSpeedWeak(),
XG47DDCRead);
}
@@ -1739,10 +1739,10 @@ fail:
return FALSE;
}
-static void XGIBlockHandler(int i, pointer pBlockData, pointer pTimeout, pointer pReadmask)
+static void XGIBlockHandler(BLOCKHANDLER_ARGS_DECL)
{
- ScreenPtr pScreen = screenInfo.screens[i];
- ScrnInfoPtr pScrn = xf86Screens[i];
+ SCREEN_PTR(arg);
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
#if DBG_FLOW
@@ -1750,7 +1750,7 @@ static void XGIBlockHandler(int i, pointer pBlockData, pointer pTimeout, pointer
#endif
pScreen->BlockHandler = pXGI->BlockHandler;
- (*pScreen->BlockHandler)(i, pBlockData, pTimeout, pReadmask);
+ (*pScreen->BlockHandler)(BLOCKHANDLER_ARGS);
pScreen->BlockHandler = XGIBlockHandler;
#ifdef XvExtension
@@ -1818,7 +1818,7 @@ static void XGIRestore(ScrnInfoPtr pScrn)
Bool XGIFBManagerInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
BoxRec availFBArea;
CARD16 temp;
@@ -1848,10 +1848,10 @@ Bool XGIFBManagerInit(ScreenPtr pScreen)
}
/* Called at the start of each server generation. */
-Bool XGIScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+Bool XGIScreenInit(SCREEN_INIT_ARGS_DECL)
{
/* First Get the ScrnInfoRec */
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
vgaHWPtr pVgaHW = VGAHWPTR(pScrn);
VisualPtr pVisual;
@@ -1918,7 +1918,7 @@ Bool XGIScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* Darken the screen for aesthetic reasons and set the viewport.
*/
XGISaveScreen(pScreen, SCREEN_SAVER_ON);
- pScrn->AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ pScrn->AdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
/*
@@ -2038,7 +2038,7 @@ pScrn->pScreen = pScreen;
if (!XGIFBManagerInit(pScreen))
{
- xf86DrvMsg(scrnIndex, X_ERROR, "FB Manager init failed \n");
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "FB Manager init failed \n");
}
/* If backing store is to be supported (as is usually the case), initialise it. */
@@ -2074,18 +2074,18 @@ pScrn->pScreen = pScreen;
if (!pXGI->noAccel) {
pXGI->noAccel = !XG47AccelInit(pScreen);
if (pXGI->noAccel) {
- xf86DrvMsg(scrnIndex, X_ERROR, "Acceleration initialization failed\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Acceleration initialization failed\n");
}
}
if (!pXGI->noAccel) {
- xf86DrvMsg(scrnIndex, X_INFO, "Acceleration enabled\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Acceleration enabled\n");
} else {
- xf86DrvMsg(scrnIndex, X_INFO, "Acceleration disabled\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Acceleration disabled\n");
}
- if (!XGIEnterVT(scrnIndex, 0))
+ if (!XGIEnterVT(VT_FUNC_ARGS))
goto fail;
/* Set Silken Mouse */
@@ -2108,12 +2108,12 @@ pScrn->pScreen = pScreen;
(int) pXGI->cursorStart / (int) pScrn->displayWidth);
if (xf86QueryLargestOffscreenArea(pScreen, &width, &height,
0, 0, 0)) {
- xf86DrvMsg(scrnIndex, X_INFO,
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Largest offscreen area available: %d x %d\n",
width, height);
}
} else {
- xf86DrvMsg(scrnIndex, X_ERROR,
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Hardware cursor initialization failed\n");
pXGI->isHWCursor = FALSE;
}
@@ -2121,7 +2121,7 @@ pScrn->pScreen = pScreen;
if (!pXGI->isHWCursor) {
pXGI->cursorStart = 0;
- xf86DrvMsg(scrnIndex, X_INFO, "Using software cursor\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Using software cursor\n");
}
@@ -2246,9 +2246,10 @@ fail:
* Initialises the new mode for the screen identified by index.
* The viewport may need to be adjusted also.
*/
-Bool XGISwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+Bool XGISwitchMode(SWITCH_MODE_ARGS_DECL)
{
- return XGIModeInit(xf86Screens[scrnIndex], mode);
+ SCRN_INFO_PTR(arg);
+ return XGIModeInit(pScrn, mode);
}
@@ -2256,9 +2257,9 @@ Bool XGISwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
* This is called when VT switching back to the X server. Its job is
* to reinitialise the video mode.
*/
-static Bool XGIEnterVT(int scrnIndex, int flags)
+static Bool XGIEnterVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
XGIPtr pXGI = XGIPTR(pScrn);
#if DBG_FLOW
@@ -2281,7 +2282,7 @@ static Bool XGIEnterVT(int scrnIndex, int flags)
}
if (pXGI->isFBDev) {
- if (!fbdevHWEnterVT(scrnIndex,flags))
+ if (!fbdevHWEnterVT(VT_FUNC_ARGS))
return FALSE;
} else {
/* Should we re-save the text mode on each VT enter? */
@@ -2294,7 +2295,7 @@ static Bool XGIEnterVT(int scrnIndex, int flags)
xg47_Reset(pXGI->cmdList);
}
- pScrn->AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ pScrn->AdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
#if DBG_FLOW
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "-- Leave %s() %s:%d\n", __FUNCTION__, __FILE__, __LINE__);
@@ -2311,9 +2312,9 @@ static Bool XGIEnterVT(int scrnIndex, int flags)
*/
/* Mandatory */
-static void XGILeaveVT(int scrnIndex, int flags)
+static void XGILeaveVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
XGIPtr pXGI = XGIPTR(pScrn);
#if DBG_FLOW
@@ -2338,7 +2339,7 @@ static void XGILeaveVT(int scrnIndex, int flags)
}
if (pXGI->isFBDev) {
- fbdevHWLeaveVT(scrnIndex,flags);
+ fbdevHWLeaveVT(VT_FUNC_ARGS);
} else {
XGIRestore(pScrn);
}
@@ -2371,9 +2372,9 @@ static void XGILeaveVT(int scrnIndex, int flags)
*/
/* Mandatory */
-static Bool XGICloseScreen(int scrnIndex, ScreenPtr pScreen)
+static Bool XGICloseScreen(CLOSE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
vgaHWPtr pVgaHW = VGAHWPTR(pScrn);
XGIPtr pXGI = XGIPTR(pScrn);
Bool result;
@@ -2459,7 +2460,7 @@ static Bool XGICloseScreen(int scrnIndex, ScreenPtr pScreen)
*/
pScreen->CloseScreen = pXGI->CloseScreen;
- result = (*pScreen->CloseScreen)(scrnIndex, pScreen);
+ result = (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
#if DBG_FLOW
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "-- Leave %s() %s:%d\n", __FUNCTION__, __FILE__, __LINE__);
@@ -2470,7 +2471,7 @@ static Bool XGICloseScreen(int scrnIndex, ScreenPtr pScreen)
static Bool XGISaveScreen(ScreenPtr pScreen, int mode)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
Bool unblank;
#if DBG_FLOW
@@ -2501,9 +2502,9 @@ static Bool XGISaveScreen(ScreenPtr pScreen, int mode)
* It would include the driverPrivate, and any ``privates'' entries that modules
* may have allocated.
*/
-static void XGIFreeScreen(int scrnIndex, int flags)
+static void XGIFreeScreen(FREE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
#if DBG_FLOW
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "++ Enter %s() %s:%d\n", __FUNCTION__, __FILE__, __LINE__);
@@ -2542,9 +2543,9 @@ static void XGIFreeScreen(int scrnIndex, int flags)
* depend on any mode other than the one being validated, while calls with
* MODECHECK_FINAL are intended for checks that may involve more than one mode.
*/
-static int XGIValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
+static int XGIValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
XGIPtr pXGI = XGIPTR(pScrn);
int ret;
diff --git a/src/xgi_driver.h b/src/xgi_driver.h
index c13cdbf..e9823a0 100644
--- a/src/xgi_driver.h
+++ b/src/xgi_driver.h
@@ -34,7 +34,7 @@
#define IsPrimaryCard (xf86IsPrimaryPci(pXGI->pPciInfo))
-extern Bool XGISwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
-extern void XGIAdjustFrame(int scrnIndex, int x, int y, int flags);
+extern Bool XGISwitchMode(SWITCH_MODE_ARGS_DECL);
+extern void XGIAdjustFrame(ADJUST_FRAME_ARGS_DECL);
#endif
diff --git a/src/xgi_hwmc.c b/src/xgi_hwmc.c
index 11d8e46..104c0f6 100644
--- a/src/xgi_hwmc.c
+++ b/src/xgi_hwmc.c
@@ -180,7 +180,7 @@ static XF86MCAdaptorPtr ppAdaptor[1] =
Bool XGIInitMC(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
int i;
diff --git a/src/xgi_shadow.c b/src/xgi_shadow.c
index 8107e6e..80f3645 100644
--- a/src/xgi_shadow.c
+++ b/src/xgi_shadow.c
@@ -38,9 +38,9 @@
#include "xgi.h"
-void XGIPointerMoved(int index, int x, int y)
+void XGIPointerMoved(SCRN_ARG_TYPE arg, int x, int y)
{
- ScrnInfoPtr pScrn = xf86Screens[index];
+ SCRN_INFO_PTR(arg);
XGIPtr pXGI = XGIPTR(pScrn);
int newX, newY;
@@ -55,7 +55,7 @@ void XGIPointerMoved(int index, int x, int y)
newY = pScrn->pScreen->width - x - 1;
}
- (*pXGI->PointerMoved)(index, newX, newY);
+ (*pXGI->PointerMoved)(arg, newX, newY);
}
void XGIRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
{
@@ -88,7 +88,7 @@ void XGIShadowUpdate (ScreenPtr pScreen, shadowBufPtr pBuf)
{
RegionPtr pRegion = &pBuf->damage;
ScrnInfoPtr pScrn;
- pScrn = xf86Screens[pScreen->myNum];
+ pScrn = xf86ScreenToScrn(pScreen);
(XGIPTR(pScrn))->RefreshArea (pScrn, REGION_NUM_RECTS(pRegion),
REGION_RECTS(pRegion));
diff --git a/src/xgi_shadow.h b/src/xgi_shadow.h
index 62e7d0a..216c848 100644
--- a/src/xgi_shadow.h
+++ b/src/xgi_shadow.h
@@ -31,7 +31,7 @@
/* xgi_shadow.c */
extern void XGIRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
extern void XGIShadowUpdate (ScreenPtr pScreen, shadowBufPtr pBuf);
-extern void XGIPointerMoved(int index, int x, int y);
+extern void XGIPointerMoved(SCRN_ARG_TYPE arg, int x, int y);
extern void XGIRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
extern void XGIRefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
extern void XGIRefreshArea24(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
diff --git a/src/xgi_video.c b/src/xgi_video.c
index ecadfa8..cd0d580 100644
--- a/src/xgi_video.c
+++ b/src/xgi_video.c
@@ -36,7 +36,7 @@
void XGIInitVideo(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XGIPtr pXGI = XGIPTR(pScrn);
switch(pXGI->chipset)