summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-06-06 11:49:16 +0100
committerDave Airlie <airlied@redhat.com>2012-06-06 11:49:16 +0100
commit177c93486647e71c088ac42697e34c47664eb666 (patch)
tree0292195d03ac7397d1005811e5e6aed9a5170cc2
parent2301879bc334fd9f44cc7f23be613b5b4533568a (diff)
trident: convert to new compat API.
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/Makefile.am1
-rw-r--r--src/blade_accel.c2
-rw-r--r--src/blade_accel_exa.c12
-rw-r--r--src/compat-api.h99
-rw-r--r--src/image_accel.c2
-rw-r--r--src/trident.h9
-rw-r--r--src/trident_accel.c2
-rw-r--r--src/trident_bank.c12
-rw-r--r--src/trident_dac.c4
-rw-r--r--src/trident_dga.c8
-rw-r--r--src/trident_driver.c77
-rw-r--r--src/trident_i2c.c2
-rw-r--r--src/trident_shadow.c8
-rw-r--r--src/trident_video.c8
-rw-r--r--src/xp4_accel.c2
-rw-r--r--src/xp4_accel_exa.c12
-rw-r--r--src/xp_accel.c2
17 files changed, 180 insertions, 82 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 16c1ca9..9e65055 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -32,6 +32,7 @@ trident_drv_ladir = @moduledir@/drivers
trident_drv_la_SOURCES = \
blade_accel.c \
blade_accel_exa.c \
+ compat-api.h \
image_accel.c \
trident_accel.c \
trident_bank.c \
diff --git a/src/blade_accel.c b/src/blade_accel.c
index 18511d9..b8954e6 100644
--- a/src/blade_accel.c
+++ b/src/blade_accel.c
@@ -150,7 +150,7 @@ Bool
BladeXaaInit(ScreenPtr pScreen)
{
XAAInfoRecPtr infoPtr;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
if (pTrident->NoAccel)
diff --git a/src/blade_accel_exa.c b/src/blade_accel_exa.c
index 501cbce..ad5af37 100644
--- a/src/blade_accel_exa.c
+++ b/src/blade_accel_exa.c
@@ -111,7 +111,7 @@ static Bool PrepareSolid(PixmapPtr pPixmap, int rop, Pixel planemask,
Pixel color)
{
TRIDENTPtr pTrident =
- TRIDENTPTR(xf86Screens[pPixmap->drawable.pScreen->myNum]);
+ TRIDENTPTR(xf86ScreenToScrn(pPixmap->drawable.pScreen));
REPLICATE(color, pPixmap->drawable.bitsPerPixel);
BLADE_OUT(GER_FGCOLOR, color);
@@ -124,7 +124,7 @@ static Bool PrepareSolid(PixmapPtr pPixmap, int rop, Pixel planemask,
static void Solid(PixmapPtr pPixmap, int x, int y, int x2, int y2)
{
TRIDENTPtr pTrident =
- TRIDENTPTR(xf86Screens[pPixmap->drawable.pScreen->myNum]);
+ TRIDENTPTR(xf86ScreenToScrn(pPixmap->drawable.pScreen));
int dst_stride = (pPixmap->drawable.width + 7) / 8;
int dst_off = exaGetPixmapOffset(pPixmap) / 8;
@@ -146,7 +146,7 @@ static Bool PrepareCopy(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap,
int xdir, int ydir, int alu, Pixel planemask)
{
TRIDENTPtr pTrident =
- TRIDENTPTR(xf86Screens[pSrcPixmap->drawable.pScreen->myNum]);
+ TRIDENTPTR(xf86ScreenToScrn(pSrcPixmap->drawable.pScreen));
int src_stride = (pSrcPixmap->drawable.width + 7) / 8;
int src_off = exaGetPixmapOffset(pSrcPixmap) / 8;
int dst_stride = (pDstPixmap->drawable.width + 7) / 8;
@@ -178,7 +178,7 @@ static void Copy(PixmapPtr pDstPixmap, int x1, int y1, int x2,
int y2, int w, int h)
{
TRIDENTPtr pTrident =
- TRIDENTPTR(xf86Screens[pDstPixmap->drawable.pScreen->myNum]);
+ TRIDENTPTR(xf86ScreenToScrn(pDstPixmap->drawable.pScreen));
BLADE_OUT(GER_DRAW_CMD, GER_OP_BLT_HOST | GER_DRAW_SRC_COLOR |
GER_ROP_ENABLE | GER_BLT_SRC_FB | pTrident->BltScanDirection);
@@ -232,7 +232,7 @@ static int MarkSync(ScreenPtr pScreen)
static void WaitMarker(ScreenPtr pScreen, int marker)
{
- TRIDENTPtr pTrident = TRIDENTPTR(xf86Screens[pScreen->myNum]);
+ TRIDENTPtr pTrident = TRIDENTPTR(xf86ScreenToScrn(pScreen));
int busy;
int cnt = 10000000;
@@ -267,7 +267,7 @@ static void BladeInitializeAccelerator(ScrnInfoPtr pScrn)
Bool BladeExaInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
ExaDriverPtr ExaDriver;
diff --git a/src/compat-api.h b/src/compat-api.h
new file mode 100644
index 0000000..6bc946f
--- /dev/null
+++ b/src/compat-api.h
@@ -0,0 +1,99 @@
+/*
+ * 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 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 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/image_accel.c b/src/image_accel.c
index f4e8055..9a9388d 100644
--- a/src/image_accel.c
+++ b/src/image_accel.c
@@ -133,7 +133,7 @@ Bool
ImageAccelInit(ScreenPtr pScreen)
{
XAAInfoRecPtr infoPtr;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
if (pTrident->NoAccel)
diff --git a/src/trident.h b/src/trident.h
index a28c9fc..ebdbccd 100644
--- a/src/trident.h
+++ b/src/trident.h
@@ -46,6 +46,7 @@
#include "xf86Pci.h"
#include "vbe.h"
+#include "compat-api.h"
/* Banked framebuffer only supported on ISA */
#ifdef HAVE_ISA
#define LINEAR() (pTrident->Linear)
@@ -110,7 +111,7 @@ typedef struct {
unsigned char * ShadowPtr;
int ShadowPitch;
RefreshAreaFuncPtr RefreshArea;
- void (*PointerMoved)(int index, int x, int y);
+ void (*PointerMoved)(SCRN_ARG_TYPE arg, int x, int y);
int Rotate;
float frequency;
unsigned char REGPCIReg;
@@ -225,8 +226,8 @@ typedef struct {
/* Prototypes */
Bool TRIDENTClockSelect(ScrnInfoPtr pScrn, int no);
-Bool TRIDENTSwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
-void TRIDENTAdjustFrame(int scrnIndex, int x, int y, int flags);
+Bool TRIDENTSwitchMode(SWITCH_MODE_ARGS_DECL);
+void TRIDENTAdjustFrame(ADJUST_FRAME_ARGS_DECL);
Bool TRIDENTDGAInit(ScreenPtr pScreen);
Bool TRIDENTI2CInit(ScreenPtr pScreen);
void TRIDENTInitVideo(ScreenPtr pScreen);
@@ -265,7 +266,7 @@ void TridentFindClock(ScrnInfoPtr pScrn, int clock);
float CalculateMCLK(ScrnInfoPtr pScrn);
void TRIDENTRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
void TRIDENTShadowUpdate (ScreenPtr pScreen, shadowBufPtr pBuf);
-void TRIDENTPointerMoved(int index, int x, int y);
+void TRIDENTPointerMoved(SCRN_ARG_TYPE arg, int x, int y);
void TRIDENTRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
void TRIDENTRefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
void TRIDENTRefreshArea24(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
diff --git a/src/trident_accel.c b/src/trident_accel.c
index cb217e9..85d1427 100644
--- a/src/trident_accel.c
+++ b/src/trident_accel.c
@@ -116,7 +116,7 @@ Bool
TridentAccelInit(ScreenPtr pScreen)
{
XAAInfoRecPtr infoPtr;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
if (pTrident->NoAccel)
diff --git a/src/trident_bank.c b/src/trident_bank.c
index adbc964..a551a0c 100644
--- a/src/trident_bank.c
+++ b/src/trident_bank.c
@@ -41,7 +41,7 @@ int TVGA8900SetRead(ScreenPtr pScreen, int bank)
{
ScrnInfoPtr pScrn;
TRIDENTPtr pTrident;
- pScrn = xf86Screens[pScreen->myNum];
+ pScrn = xf86ScreenToScrn(pScreen);
pTrident = TRIDENTPTR(pScrn);
OUTW(0x3c4, 0xC000 | (((bank & 0x3f) ^ 0x02)<<8)|0x0E);
return 0;
@@ -50,7 +50,7 @@ int TGUISetRead(ScreenPtr pScreen, int bank)
{
ScrnInfoPtr pScrn;
TRIDENTPtr pTrident;
- pScrn = xf86Screens[pScreen->myNum];
+ pScrn = xf86ScreenToScrn(pScreen);
pTrident = TRIDENTPTR(pScrn);
OUTB(0x3d9, bank & 0xff);
return 0;
@@ -59,7 +59,7 @@ int TVGA8900SetWrite(ScreenPtr pScreen, int bank)
{
ScrnInfoPtr pScrn;
TRIDENTPtr pTrident;
- pScrn = xf86Screens[pScreen->myNum];
+ pScrn = xf86ScreenToScrn(pScreen);
pTrident = TRIDENTPTR(pScrn);
OUTW(0x3c4, 0xC000 | (((bank & 0x3f) ^ 0x02)<<8)|0x0E);
return 0;
@@ -68,7 +68,7 @@ int TGUISetWrite(ScreenPtr pScreen, int bank)
{
ScrnInfoPtr pScrn;
TRIDENTPtr pTrident;
- pScrn = xf86Screens[pScreen->myNum];
+ pScrn = xf86ScreenToScrn(pScreen);
pTrident = TRIDENTPTR(pScrn);
OUTB(0x3d8, bank & 0xff);
return 0;
@@ -77,7 +77,7 @@ int TVGA8900SetReadWrite(ScreenPtr pScreen, int bank)
{
ScrnInfoPtr pScrn;
TRIDENTPtr pTrident;
- pScrn = xf86Screens[pScreen->myNum];
+ pScrn = xf86ScreenToScrn(pScreen);
pTrident = TRIDENTPTR(pScrn);
OUTW(0x3c4, 0xC000 | (((bank & 0x3f) ^ 0x02)<<8)|0x0E);
return 0;
@@ -86,7 +86,7 @@ int TGUISetReadWrite(ScreenPtr pScreen, int bank)
{
ScrnInfoPtr pScrn;
TRIDENTPtr pTrident;
- pScrn = xf86Screens[pScreen->myNum];
+ pScrn = xf86ScreenToScrn(pScreen);
pTrident = TRIDENTPTR(pScrn);
OUTB(0x3d8, bank & 0xff);
OUTB(0x3d9, bank & 0xff);
diff --git a/src/trident_dac.c b/src/trident_dac.c
index ea74839..a7bf588 100644
--- a/src/trident_dac.c
+++ b/src/trident_dac.c
@@ -1117,7 +1117,7 @@ TridentLoadCursorImage(
static Bool
TridentUseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
if (pTrident->MUX && pScrn->bitsPerPixel == 8) return FALSE;
@@ -1134,7 +1134,7 @@ TridentUseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
Bool
TridentHWCursorInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
xf86CursorInfoPtr infoPtr;
FBAreaPtr fbarea;
diff --git a/src/trident_dga.c b/src/trident_dga.c
index b94ff4e..832e4dc 100644
--- a/src/trident_dga.c
+++ b/src/trident_dga.c
@@ -69,7 +69,7 @@ DGAFunctionRec TRIDENTDGAFuncs = {
Bool
TRIDENTDGAInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
DGAModePtr modes = NULL, newmodes = NULL, currentMode;
DisplayModePtr pMode, firstMode;
@@ -176,7 +176,7 @@ TRIDENT_SetMode(
pScrn->displayWidth = OldDisplayWidth[index];
- TRIDENTSwitchMode(index, pScrn->currentMode, 0);
+ TRIDENTSwitchMode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode));
pTrident->DGAactive = FALSE;
} else {
if(!pTrident->DGAactive) { /* save the old parameters */
@@ -188,7 +188,7 @@ TRIDENT_SetMode(
pScrn->displayWidth = pMode->bytesPerScanline /
(pMode->bitsPerPixel >> 3);
- TRIDENTSwitchMode(index, pMode->mode, 0);
+ TRIDENTSwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode));
}
return TRUE;
@@ -213,7 +213,7 @@ TRIDENT_SetViewport(
){
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
- TRIDENTAdjustFrame(pScrn->pScreen->myNum, x, y, flags);
+ TRIDENTAdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y));
pTrident->DGAViewportStatus = 0; /* TRIDENTAdjustFrame loops until finished */
}
diff --git a/src/trident_driver.c b/src/trident_driver.c
index 4cf7e24..dde6319 100644
--- a/src/trident_driver.c
+++ b/src/trident_driver.c
@@ -80,16 +80,15 @@ static const OptionInfoRec * TRIDENTAvailableOptions(int chipid, int busid);
static void TRIDENTIdentify(int flags);
static Bool TRIDENTProbe(DriverPtr drv, int flags);
static Bool TRIDENTPreInit(ScrnInfoPtr pScrn, int flags);
-static Bool TRIDENTScreenInit(int Index, ScreenPtr pScreen, int argc,
- char **argv);
-static Bool TRIDENTEnterVT(int scrnIndex, int flags);
-static void TRIDENTLeaveVT(int scrnIndex, int flags);
-static Bool TRIDENTCloseScreen(int scrnIndex, ScreenPtr pScreen);
+static Bool TRIDENTScreenInit(SCREEN_INIT_ARGS_DECL);
+static Bool TRIDENTEnterVT(VT_FUNC_ARGS_DECL);
+static void TRIDENTLeaveVT(VT_FUNC_ARGS_DECL);
+static Bool TRIDENTCloseScreen(CLOSE_SCREEN_ARGS_DECL);
static Bool TRIDENTSaveScreen(ScreenPtr pScreen, int mode);
/* Optional functions */
-static void TRIDENTFreeScreen(int scrnIndex, int flags);
-static ModeStatus TRIDENTValidMode(int scrnIndex, DisplayModePtr mode,
+static void TRIDENTFreeScreen(FREE_SCREEN_ARGS_DECL);
+static ModeStatus TRIDENTValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode,
Bool verbose, int flags);
/* Internally used functions */
@@ -98,7 +97,7 @@ static Bool TRIDENTUnmapMem(ScrnInfoPtr pScrn);
static void TRIDENTSave(ScrnInfoPtr pScrn);
static void TRIDENTRestore(ScrnInfoPtr pScrn);
static Bool TRIDENTModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode);
-static void TRIDENTBlockHandler(int, pointer, pointer, pointer);
+static void TRIDENTBlockHandler(BLOCKHANDLER_ARGS_DECL);
static void TRIDENTEnableMMIO(ScrnInfoPtr pScrn);
static void TRIDENTDisableMMIO(ScrnInfoPtr pScrn);
@@ -610,18 +609,14 @@ TRIDENTDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode, int
}
static void
-TRIDENTBlockHandler (
- int i,
- pointer blockData,
- pointer pTimeout,
- pointer pReadmask
-){
- ScreenPtr pScreen = screenInfo.screens[i];
- ScrnInfoPtr pScrn = xf86Screens[i];
+TRIDENTBlockHandler (BLOCKHANDLER_ARGS_DECL)
+{
+ SCREEN_PTR(arg);
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
pScreen->BlockHandler = pTrident->BlockHandler;
- (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
+ (*pScreen->BlockHandler) (BLOCKHANDLER_ARGS);
pScreen->BlockHandler = TRIDENTBlockHandler;
if(pTrident->VideoTimerCallback) {
@@ -2765,7 +2760,7 @@ TRIDENTRestore(ScrnInfoPtr pScrn)
/* This gets called at the start of each server generation */
static Bool
-TRIDENTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+TRIDENTScreenInit(SCREEN_INIT_ARGS_DECL)
{
/* The vgaHW references will disappear one day */
ScrnInfoPtr pScrn;
@@ -2779,7 +2774,7 @@ TRIDENTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/*
* First get the ScrnInfoRec
*/
- pScrn = xf86Screens[pScreen->myNum];
+ pScrn = xf86ScreenToScrn(pScreen);
pTrident = TRIDENTPTR(pScrn);
if (IsPrimaryCard) {
@@ -2838,7 +2833,7 @@ TRIDENTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* Darken the screen for aesthetic reasons and set the viewport */
TRIDENTSaveScreen(pScreen, SCREEN_SAVER_ON);
- TRIDENTAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ TRIDENTAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
/*
* The next step is to setup the screen's visuals, and initialise the
@@ -2908,7 +2903,7 @@ TRIDENTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
break;
default:
- xf86DrvMsg(scrnIndex, X_ERROR,
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Internal error: invalid bpp (%d) in TRIDENTScrnInit\n",
pScrn->bitsPerPixel);
ret = FALSE;
@@ -3005,7 +3000,7 @@ TRIDENTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
AvailFBArea.y2 - pScrn->virtualY);
if (xf86InitFBManagerLinear(pScreen, area, ((pTrident->FbMapSize/cpp) - area))) {
- xf86DrvMsg(scrnIndex, X_INFO,
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Using %ld bytes of offscreen memory for linear (offset=0x%x)\n", (pTrident->FbMapSize - areaoffset), areaoffset);
}
}
@@ -3115,9 +3110,10 @@ TRIDENTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* Usually mandatory */
Bool
-TRIDENTSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+TRIDENTSwitchMode(SWITCH_MODE_ARGS_DECL)
{
- return TRIDENTModeInit(xf86Screens[scrnIndex], mode);
+ SCRN_INFO_PTR(arg);
+ return TRIDENTModeInit(pScrn, mode);
}
@@ -3127,9 +3123,9 @@ TRIDENTSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
*/
/* Usually mandatory */
void
-TRIDENTAdjustFrame(int scrnIndex, int x, int y, int flags)
+TRIDENTAdjustFrame(ADJUST_FRAME_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
TRIDENTPtr pTrident;
int base = y * pScrn->displayWidth + x;
int vgaIOBase;
@@ -3174,9 +3170,9 @@ TRIDENTAdjustFrame(int scrnIndex, int x, int y, int flags)
/* Mandatory */
static Bool
-TRIDENTEnterVT(int scrnIndex, int flags)
+TRIDENTEnterVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
if (IsPciCard && UseMMIO) TRIDENTEnableMMIO(pScrn);
@@ -3201,9 +3197,9 @@ TRIDENTEnterVT(int scrnIndex, int flags)
/* Mandatory */
static void
-TRIDENTLeaveVT(int scrnIndex, int flags)
+TRIDENTLeaveVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
vgaHWPtr hwp = VGAHWPTR(pScrn);
@@ -3231,9 +3227,9 @@ TRIDENTLeaveVT(int scrnIndex, int flags)
/* Mandatory */
static Bool
-TRIDENTCloseScreen(int scrnIndex, ScreenPtr pScreen)
+TRIDENTCloseScreen(CLOSE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
vgaHWPtr hwp = VGAHWPTR(pScrn);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
@@ -3277,7 +3273,7 @@ TRIDENTCloseScreen(int scrnIndex, ScreenPtr pScreen)
else
xf86FreeInt10(pTrident->Int10);
pScreen->CloseScreen = pTrident->CloseScreen;
- return (*pScreen->CloseScreen)(scrnIndex, pScreen);
+ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
}
@@ -3285,11 +3281,12 @@ TRIDENTCloseScreen(int scrnIndex, ScreenPtr pScreen)
/* Optional */
static void
-TRIDENTFreeScreen(int scrnIndex, int flags)
+TRIDENTFreeScreen(FREE_SCREEN_ARGS_DECL)
{
+ SCRN_INFO_PTR(arg);
if (xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
- vgaHWFreeHWRec(xf86Screens[scrnIndex]);
- TRIDENTFreeRec(xf86Screens[scrnIndex]);
+ vgaHWFreeHWRec(pScrn);
+ TRIDENTFreeRec(pScrn);
}
@@ -3297,15 +3294,15 @@ TRIDENTFreeScreen(int scrnIndex, int flags)
/* Optional */
static ModeStatus
-TRIDENTValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
+TRIDENTValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
if (pTrident->lcdActive && (pTrident->lcdMode != 0xff)){
if (((mode->HDisplay > LCD[pTrident->lcdMode].display_x)
|| (mode->VDisplay > LCD[pTrident->lcdMode].display_y))) {
- xf86DrvMsg(scrnIndex,X_INFO, "Removing mode (%dx%d) "
+ xf86DrvMsg(pScrn->scrnIndex,X_INFO, "Removing mode (%dx%d) "
"larger than the LCD panel (%dx%d)\n",
mode->HDisplay,
mode->VDisplay,
@@ -3314,7 +3311,7 @@ TRIDENTValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
return(MODE_BAD);
}
if (((float)mode->HDisplay/(float)mode->VDisplay) > 2.0) {
- xf86DrvMsg(scrnIndex,X_INFO, "Removing mode (%dx%d) "
+ xf86DrvMsg(pScrn->scrnIndex,X_INFO, "Removing mode (%dx%d) "
"unusual aspect ratio\n",
mode->HDisplay,
mode->VDisplay);
diff --git a/src/trident_i2c.c b/src/trident_i2c.c
index 111b582..0530d0c 100644
--- a/src/trident_i2c.c
+++ b/src/trident_i2c.c
@@ -57,7 +57,7 @@ TRIDENTI2CGetBits(I2CBusPtr b, int *clock, int *data) {
Bool
TRIDENTI2CInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
I2CBusPtr I2CPtr;
diff --git a/src/trident_shadow.c b/src/trident_shadow.c
index 5f9c445..e35cdf3 100644
--- a/src/trident_shadow.c
+++ b/src/trident_shadow.c
@@ -47,16 +47,16 @@ TRIDENTShadowUpdate (ScreenPtr pScreen, shadowBufPtr pBuf)
{
RegionPtr damage = DamageRegion(pBuf->pDamage);
ScrnInfoPtr pScrn;
- pScrn = xf86Screens[pScreen->myNum];
+ pScrn = xf86ScreenToScrn(pScreen);
(TRIDENTPTR(pScrn))->RefreshArea (pScrn, REGION_NUM_RECTS(damage),
REGION_RECTS(damage));
}
void
-TRIDENTPointerMoved(int index, int x, int y)
+TRIDENTPointerMoved(SCRN_ARG_TYPE arg, int x, int y)
{
- ScrnInfoPtr pScrn = xf86Screens[index];
+ SCRN_INFO_PTR(arg);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
int newX, newY;
@@ -68,7 +68,7 @@ TRIDENTPointerMoved(int index, int x, int y)
newY = pScrn->pScreen->width - x - 1;
}
- (*pTrident->PointerMoved)(index, newX, newY);
+ (*pTrident->PointerMoved)(arg, newX, newY);
}
void
diff --git a/src/trident_video.c b/src/trident_video.c
index 21b7728..93fd5df 100644
--- a/src/trident_video.c
+++ b/src/trident_video.c
@@ -76,7 +76,7 @@ static Atom xvColorKey, xvSaturation, xvBrightness, xvHUE, xvContrast;
void TRIDENTInitVideo(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL;
XF86VideoAdaptorPtr newAdaptor = NULL;
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
@@ -315,7 +315,7 @@ void TRIDENTResetVideo(ScrnInfoPtr pScrn)
static XF86VideoAdaptorPtr
TRIDENTSetupImageVideo(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
XF86VideoAdaptorPtr adapt;
TRIDENTPortPrivPtr pPriv;
@@ -585,7 +585,7 @@ TRIDENTAllocateMemory(
xf86FreeOffscreenLinear(linear);
}
- pScreen = screenInfo.screens[pScrn->scrnIndex];
+ pScreen = xf86ScrnToScreen(pScrn);
new_linear = xf86AllocateOffscreenLinear(pScreen, size, 16,
NULL, NULL, NULL);
@@ -1122,7 +1122,7 @@ TRIDENTDisplaySurface(
static void
TRIDENTInitOffscreenImages(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
XF86OffscreenImagePtr offscreenImages;
diff --git a/src/xp4_accel.c b/src/xp4_accel.c
index 4634c49..c9b47fd 100644
--- a/src/xp4_accel.c
+++ b/src/xp4_accel.c
@@ -126,7 +126,7 @@ Bool
XP4XaaInit(ScreenPtr pScreen)
{
XAAInfoRecPtr infoPtr;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
if (pTrident->NoAccel)
diff --git a/src/xp4_accel_exa.c b/src/xp4_accel_exa.c
index 59b2e5f..7a7b4d3 100644
--- a/src/xp4_accel_exa.c
+++ b/src/xp4_accel_exa.c
@@ -99,7 +99,7 @@ XP4WaitMarker(ScreenPtr pScreen, int Marker)
static void
XP4Done(PixmapPtr p) {
- ScrnInfoPtr pScrn = xf86Screens[p->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(p->drawable.pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
int count = 0, timeout = 0;
int busy;
@@ -126,7 +126,7 @@ XP4Done(PixmapPtr p) {
static Bool
XP4PrepareSolid(PixmapPtr pPixmap, int alu, Pixel planemask, Pixel fg)
{
- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
unsigned int dorg = exaGetPixmapOffset(pPixmap);
unsigned int dptch = exaGetPixmapPitch(pPixmap);
@@ -148,7 +148,7 @@ XP4PrepareSolid(PixmapPtr pPixmap, int alu, Pixel planemask, Pixel fg)
static void
XP4Solid(PixmapPtr pPixmap, int x1, int y1, int x2, int y2)
{
- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
int bpp;
@@ -173,7 +173,7 @@ static Bool
XP4PrepareCopy(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, int dx, int dy,
int alu, Pixel planemask)
{
- ScrnInfoPtr pScrn = xf86Screens[pDstPixmap->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pDstPixmap->drawable.pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
unsigned int sorg = exaGetPixmapOffset(pSrcPixmap);
unsigned int dorg = exaGetPixmapOffset(pDstPixmap);
@@ -198,7 +198,7 @@ XP4PrepareCopy(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, int dx, int dy,
static void
XP4Copy(PixmapPtr pDstPixmap, int x1, int y1, int x2, int y2, int w, int h)
{
- ScrnInfoPtr pScrn = xf86Screens[pDstPixmap->drawable.pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pDstPixmap->drawable.pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
int bpp;
@@ -233,7 +233,7 @@ Bool
XP4ExaInit(ScreenPtr pScreen)
{
ExaDriverPtr pExa;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
if (pTrident->NoAccel)
diff --git a/src/xp_accel.c b/src/xp_accel.c
index 544bd8f..4957049 100644
--- a/src/xp_accel.c
+++ b/src/xp_accel.c
@@ -119,7 +119,7 @@ Bool
XPAccelInit(ScreenPtr pScreen)
{
XAAInfoRecPtr infoPtr;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
if (pTrident->NoAccel)