summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-06-06 12:21:55 +0100
committerDave Airlie <airlied@redhat.com>2012-06-06 12:21:55 +0100
commit9b33cc9fe94d97c8b954a3614ead34622d293bc3 (patch)
tree46009a0b71019fe8651894fc4ebc05dd33a21a15
parent3b06ee079494b0d08913a9f724c3661f9ac35907 (diff)
neomagic: port to new compat API.
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/Makefile.am3
-rw-r--r--src/compat-api.h99
-rw-r--r--src/neo.h9
-rw-r--r--src/neo_2070.c2
-rw-r--r--src/neo_2090.c2
-rw-r--r--src/neo_2097.c2
-rw-r--r--src/neo_2200.c2
-rw-r--r--src/neo_cursor.c4
-rw-r--r--src/neo_dga.c10
-rw-r--r--src/neo_driver.c86
-rw-r--r--src/neo_shadow.c8
-rw-r--r--src/neo_video.c8
12 files changed, 168 insertions, 67 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index e07e52e..764cb5f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -43,4 +43,5 @@ neomagic_drv_la_SOURCES = \
neo_shadow.c \
neo_video.c \
neo_video.h \
- neo_pcirename.h
+ neo_pcirename.h \
+ compat-api.h
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/neo.h b/src/neo.h
index f3f2b4c..7c7beb1 100644
--- a/src/neo.h
+++ b/src/neo.h
@@ -71,6 +71,7 @@ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "neo_reg.h"
#include "neo_macros.h"
+#include "compat-api.h"
/* Supported chipsets */
typedef enum {
NM2070,
@@ -86,8 +87,8 @@ typedef enum {
/* function prototypes */
-extern Bool NEOSwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
-extern void NEOAdjustFrame(int scrnIndex, int x, int y, int flags);
+extern Bool NEOSwitchMode(SWITCH_MODE_ARGS_DECL);
+extern void NEOAdjustFrame(ADJUST_FRAME_ARGS_DECL);
/* in neo_2070.c */
extern Bool Neo2070AccelInit(ScreenPtr pScreen);
@@ -111,7 +112,7 @@ extern Bool neo_I2CInit(ScrnInfoPtr pScrn);
/* in neo_shadow.c */
void neoShadowUpdate (ScreenPtr pScreen, shadowBufPtr pBuf);
-void neoPointerMoved(int index, int x, int y);
+void neoPointerMoved(SCRN_ARG_TYPE arg, int x, int y);
void neoRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
void neoRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
void neoRefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
@@ -256,7 +257,7 @@ typedef struct neoRec
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;
Bool showcache;
Bool video;
diff --git a/src/neo_2070.c b/src/neo_2070.c
index b3811d6..fab01ab 100644
--- a/src/neo_2070.c
+++ b/src/neo_2070.c
@@ -103,7 +103,7 @@ Bool
Neo2070AccelInit(ScreenPtr pScreen)
{
XAAInfoRecPtr infoPtr;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NEOPtr nPtr = NEOPTR(pScrn);
NEOACLPtr nAcl = NEOACLPTR(pScrn);
diff --git a/src/neo_2090.c b/src/neo_2090.c
index 45f34dd..f7b407a 100644
--- a/src/neo_2090.c
+++ b/src/neo_2090.c
@@ -100,7 +100,7 @@ Bool
Neo2090AccelInit(ScreenPtr pScreen)
{
XAAInfoRecPtr infoPtr;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NEOPtr nPtr = NEOPTR(pScrn);
NEOACLPtr nAcl = NEOACLPTR(pScrn);
diff --git a/src/neo_2097.c b/src/neo_2097.c
index 7d720df..d1e2389 100644
--- a/src/neo_2097.c
+++ b/src/neo_2097.c
@@ -124,7 +124,7 @@ Bool
Neo2097AccelInit(ScreenPtr pScreen)
{
XAAInfoRecPtr infoPtr;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NEOPtr nPtr = NEOPTR(pScrn);
NEOACLPtr nAcl = NEOACLPTR(pScrn);
diff --git a/src/neo_2200.c b/src/neo_2200.c
index 4b354e7..72864a5 100644
--- a/src/neo_2200.c
+++ b/src/neo_2200.c
@@ -119,7 +119,7 @@ Bool
Neo2200AccelInit(ScreenPtr pScreen)
{
XAAInfoRecPtr infoPtr;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NEOPtr nPtr = NEOPTR(pScrn);
NEOACLPtr nAcl = NEOACLPTR(pScrn);
diff --git a/src/neo_cursor.c b/src/neo_cursor.c
index c524527..40a517c 100644
--- a/src/neo_cursor.c
+++ b/src/neo_cursor.c
@@ -243,7 +243,7 @@ neoLoadCursorImage(ScrnInfoPtr pScrn, unsigned char *src)
static Bool
neoUseHWCursor(ScreenPtr pScr, CursorPtr pCurs)
{
- NEOACLPtr nAcl = NEOACLPTR(xf86Screens[pScr->myNum]);
+ NEOACLPtr nAcl = NEOACLPTR(xf86ScreenToScrn(pScr));
return(nAcl->UseHWCursor && !nAcl->NoCursorMode);
}
@@ -291,7 +291,7 @@ neoRealizeCursor(xf86CursorInfoPtr infoPtr, CursorPtr pCurs)
Bool
NeoCursorInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NEOPtr nPtr = NEOPTR(pScrn);
xf86CursorInfoPtr infoPtr;
infoPtr = xf86CreateCursorInfoRec();
diff --git a/src/neo_dga.c b/src/neo_dga.c
index 3e2a02e..799150c 100644
--- a/src/neo_dga.c
+++ b/src/neo_dga.c
@@ -70,7 +70,7 @@ DGAFunctionRec NEODGAFuncs = {
Bool
NEODGAInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NEOPtr pNEO = NEOPTR(pScrn);
DGAModePtr modes = NULL, newmodes = NULL, currentMode;
DisplayModePtr pMode, firstMode;
@@ -155,8 +155,8 @@ NEO_SetMode(
if(!pMode) { /* restore the original mode */
if(pNEO->DGAactive) {
pScrn->currentMode = NEOSavedDGAModes[index];
- NEOSwitchMode(index, pScrn->currentMode, 0);
- NEOAdjustFrame(index, 0, 0, 0);
+ NEOSwitchMode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode));
+ NEOAdjustFrame(ADJUST_FRAME_ARGS(pScrn, 0, 0));
pNEO->DGAactive = FALSE;
}
} else {
@@ -165,7 +165,7 @@ NEO_SetMode(
pNEO->DGAactive = TRUE;
}
- NEOSwitchMode(index, pMode->mode, 0);
+ NEOSwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode));
}
return TRUE;
@@ -189,7 +189,7 @@ NEO_SetViewport(
NEOPtr pNEO = NEOPTR(pScrn);
vgaHWPtr hwp = VGAHWPTR(pScrn);
- NEOAdjustFrame(pScrn->pScreen->myNum, x, y, flags);
+ NEOAdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y));
/* wait for retrace */
while((hwp->readST01(hwp) & 0x08));
while(!(hwp->readST01(hwp) & 0x08));
diff --git a/src/neo_driver.c b/src/neo_driver.c
index 509a77f..124bd6f 100644
--- a/src/neo_driver.c
+++ b/src/neo_driver.c
@@ -115,13 +115,12 @@ static const OptionInfoRec * NEOAvailableOptions(int chipid, int busid);
static void NEOIdentify(int flags);
static Bool NEOProbe(DriverPtr drv, int flags);
static Bool NEOPreInit(ScrnInfoPtr pScrn, int flags);
-static Bool NEOScreenInit(int Index, ScreenPtr pScreen, int argc,
- char **argv);
-static Bool NEOEnterVT(int scrnIndex, int flags);
-static void NEOLeaveVT(int scrnIndex, int flags);
-static Bool NEOCloseScreen(int scrnIndex, ScreenPtr pScreen);
-static void NEOFreeScreen(int scrnIndex, int flags);
-static ModeStatus NEOValidMode(int scrnIndex, DisplayModePtr mode,
+static Bool NEOScreenInit(SCREEN_INIT_ARGS_DECL);
+static Bool NEOEnterVT(VT_FUNC_ARGS_DECL);
+static void NEOLeaveVT(VT_FUNC_ARGS_DECL);
+static Bool NEOCloseScreen(CLOSE_SCREEN_ARGS_DECL);
+static void NEOFreeScreen(FREE_SCREEN_ARGS_DECL);
+static ModeStatus NEOValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode,
Bool verbose, int flags);
/* Internally used functions */
@@ -137,7 +136,7 @@ static Bool neoUnmapMem(ScrnInfoPtr pScrn);
static void neoProgramShadowRegs(ScrnInfoPtr pScrn, vgaRegPtr VgaReg,
NeoRegPtr restore);
static void neoCalcVCLK(ScrnInfoPtr pScrn, long freq);
-static xf86MonPtr neo_ddc1(int scrnIndex);
+static xf86MonPtr neo_ddc1(ScrnInfoPtr pScrn);
static Bool neoDoDDC1(ScrnInfoPtr pScrn);
static Bool neoDoDDC2(ScrnInfoPtr pScrn);
static Bool neoDoDDCVBE(ScrnInfoPtr pScrn);
@@ -1337,9 +1336,9 @@ NEOPreInit(ScrnInfoPtr pScrn, int flags)
/* Mandatory */
static Bool
-NEOEnterVT(int scrnIndex, int flags)
+NEOEnterVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
NEOPtr nPtr = NEOPTR(pScrn);
/* Should we re-save the text mode on each VT enter? */
@@ -1351,16 +1350,16 @@ NEOEnterVT(int scrnIndex, int flags)
if (nPtr->NeoHWCursorShown)
NeoShowCursor(pScrn);
- NEOAdjustFrame(pScrn->scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ NEOAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
return TRUE;
}
/* Mandatory */
static void
-NEOLeaveVT(int scrnIndex, int flags)
+NEOLeaveVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
NEOPtr nPtr = NEOPTR(pScrn);
/* Invalidate the cached acceleration registers */
@@ -1410,7 +1409,7 @@ NEOLoadPalette(
/* Mandatory */
static Bool
-NEOScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+NEOScreenInit(SCREEN_INIT_ARGS_DECL)
{
ScrnInfoPtr pScrn;
vgaHWPtr hwp;
@@ -1429,7 +1428,7 @@ NEOScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
* we need to get the ScrnInfoRec for this screen, so let's allocate
* one first thing
*/
- pScrn = xf86Screens[pScreen->myNum];
+ pScrn = xf86ScreenToScrn(pScreen);
nPtr = NEOPTR(pScrn);
nAcl = NEOACLPTR(pScrn);
@@ -1451,7 +1450,7 @@ NEOScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
if (!neoModeInit(pScrn,pScrn->currentMode))
return FALSE;
vgaHWSaveScreen(pScreen,SCREEN_SAVER_ON);
- NEOAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ NEOAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
/*
* Reset visual list.
@@ -1533,11 +1532,11 @@ NEOScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
freespace = allocatebase - pScrn->displayWidth *
pScrn->virtualY * (pScrn->bitsPerPixel >> 3);
currentaddr = allocatebase;
- xf86DrvMsg(scrnIndex, X_PROBED,
+ xf86DrvMsg(pScrn->scrnIndex, X_PROBED,
"%d bytes off-screen memory available\n", freespace);
if (nPtr->swCursor || !nPtr->NeoMMIOBase) {
- xf86DrvMsg(scrnIndex, X_CONFIG,
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
"Using Software Cursor.\n");
} else if (nPtr->NeoCursorMem <= freespace) {
currentaddr -= nPtr->NeoCursorMem;
@@ -1546,10 +1545,10 @@ NEOScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
freespace -= currentaddr & 0x3FF;
currentaddr &= 0xfffffc00;
nAcl->CursorAddress = currentaddr;
- xf86DrvMsg(scrnIndex, X_INFO,
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Using H/W Cursor.\n");
} else {
- xf86DrvMsg(scrnIndex, X_ERROR,
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Too little space for H/W cursor.\n");
}
@@ -1596,7 +1595,7 @@ NEOScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
if (!nPtr->noAccel && nPtr->NeoMMIOBase) {
Bool ret = FALSE;
if (nAcl->cacheStart >= nAcl->cacheEnd) {
- xf86DrvMsg(scrnIndex, X_ERROR,
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Too little space for pixmap cache.\n");
}
switch(nPtr->NeoChipset) {
@@ -1632,7 +1631,7 @@ NEOScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
if (nAcl->CursorAddress != -1) {
/* HW cursor functions */
if (!NeoCursorInit(pScreen)) {
- xf86DrvMsg(scrnIndex, X_ERROR,
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Hardware cursor initialization failed\n");
return FALSE;
}
@@ -1706,22 +1705,22 @@ NEOScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* Mandatory */
Bool
-NEOSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+NEOSwitchMode(SWITCH_MODE_ARGS_DECL)
{
- return neoModeInit(xf86Screens[scrnIndex], mode);
+ SCRN_INFO_PTR(arg);
+ return neoModeInit(pScrn, mode);
}
/* Mandatory */
void
-NEOAdjustFrame(int scrnIndex, int x, int y, int flags)
+NEOAdjustFrame(ADJUST_FRAME_ARGS_DECL)
{
- ScrnInfoPtr pScrn;
+ SCRN_INFO_PTR(arg);
NEOPtr nPtr;
vgaHWPtr hwp;
int oldExtCRTDispAddr;
int Base;
- pScrn = xf86Screens[scrnIndex];
hwp = VGAHWPTR(pScrn);
nPtr = NEOPTR(pScrn);
@@ -1776,9 +1775,9 @@ NEOAdjustFrame(int scrnIndex, int x, int y, int flags)
/* Mandatory */
static Bool
-NEOCloseScreen(int scrnIndex, ScreenPtr pScreen)
+NEOCloseScreen(CLOSE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NEOPtr nPtr = NEOPTR(pScrn);
if(pScrn->vtSema){
@@ -1798,23 +1797,24 @@ NEOCloseScreen(int scrnIndex, ScreenPtr pScreen)
pScrn->vtSema = FALSE;
pScreen->CloseScreen = nPtr->CloseScreen;
- return (*pScreen->CloseScreen)(scrnIndex, pScreen);
+ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
}
/* Optional */
static void
-NEOFreeScreen(int scrnIndex, int flags)
+NEOFreeScreen(FREE_SCREEN_ARGS_DECL)
{
+ SCRN_INFO_PTR(arg);
if (xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
- vgaHWFreeHWRec(xf86Screens[scrnIndex]);
- NEOFreeRec(xf86Screens[scrnIndex]);
+ vgaHWFreeHWRec(pScrn);
+ NEOFreeRec(pScrn);
}
/* Optional */
static ModeStatus
-NEOValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
+NEOValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
NEOPtr nPtr = NEOPTR(pScrn);
int vDisplay = mode->VDisplay * ((mode->Flags & V_DBLSCAN) ? 2 : 1);
@@ -1831,7 +1831,7 @@ NEOValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
*/
if (nPtr->overrideValidate) {
- xf86DrvMsg(scrnIndex, X_WARNING, "display mode validation disabled\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "display mode validation disabled\n");
} else {
/*
* When the LCD is active, only allow modes that are (1) equal to
@@ -1842,7 +1842,7 @@ NEOValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
/* Is the mode larger than the LCD panel? */
if ((mode->HDisplay > nPtr->NeoPanelWidth) ||
(vDisplay > nPtr->NeoPanelHeight)) {
- 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,
@@ -1883,7 +1883,7 @@ NEOValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
break;
}
- xf86DrvMsg(scrnIndex, X_INFO, "Removing mode (%dx%d) that won't "
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Removing mode (%dx%d) that won't "
"display properly on LCD\n",
mode->HDisplay,
mode->VDisplay);
@@ -3017,9 +3017,9 @@ neo_ddc1Read(ScrnInfoPtr pScrn)
}
static xf86MonPtr
-neo_ddc1(int scrnIndex)
+neo_ddc1(ScrnInfoPtr pScrn)
{
- vgaHWPtr hwp = VGAHWPTR(xf86Screens[scrnIndex]);
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
unsigned int reg1, reg2, reg3;
xf86MonPtr ret;
@@ -3030,7 +3030,7 @@ neo_ddc1(int scrnIndex)
VGAwCR(0x21,0x00);
VGAwCR(0x1D,0x01); /* some Voodoo */
VGAwGR(0xA1,0x2F);
- ret = xf86DoEDID_DDC1(scrnIndex,vgaHWddc1SetSpeedWeak(),neo_ddc1Read);
+ ret = xf86DoEDID_DDC1(XF86_SCRN_ARG(pScrn),vgaHWddc1SetSpeedWeak(),neo_ddc1Read);
/* undo initialization */
VGAwCR(0x21,reg1);
VGAwCR(0x1D,reg2);
@@ -3046,7 +3046,7 @@ neoDoDDC1(ScrnInfoPtr pScrn)
VGAwGR(0x09,0x26);
ret = xf86SetDDCproperties(pScrn,
- xf86PrintEDID(neo_ddc1(pScrn->scrnIndex)));
+ xf86PrintEDID(neo_ddc1(pScrn)));
VGAwGR(0x09,0x00);
return ret;
@@ -3063,7 +3063,7 @@ neoDoDDC2(ScrnInfoPtr pScrn)
if (xf86LoadSubModule(pScrn, "i2c")) {
if (neo_I2CInit(pScrn)) {
ret = xf86SetDDCproperties(pScrn,xf86PrintEDID(xf86DoEDID_DDC2(
- pScrn->scrnIndex,nPtr->I2C)));
+ XF86_SCRN_ARG(pScrn),nPtr->I2C)));
}
}
VGAwGR(0x09,0x00);
diff --git a/src/neo_shadow.c b/src/neo_shadow.c
index dd9aa32..2df7657 100644
--- a/src/neo_shadow.c
+++ b/src/neo_shadow.c
@@ -21,7 +21,7 @@ neoShadowUpdate (ScreenPtr pScreen, shadowBufPtr pBuf)
{
RegionPtr damage = DamageRegion(pBuf->pDamage);
ScrnInfoPtr pScrn;
- pScrn = xf86Screens[pScreen->myNum];
+ pScrn = xf86ScreenToScrn(pScreen);
(NEOPTR(pScrn))->refreshArea (pScrn, REGION_NUM_RECTS(damage),
REGION_RECTS(damage));
@@ -55,9 +55,9 @@ neoRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
}
void
-neoPointerMoved(int index, int x, int y)
+neoPointerMoved(SCRN_ARG_TYPE arg, int x, int y)
{
- ScrnInfoPtr pScrn = xf86Screens[index];
+ SCRN_INFO_PTR(arg);
NEOPtr nPtr = NEOPTR(pScrn);
int newX, newY;
@@ -69,7 +69,7 @@ neoPointerMoved(int index, int x, int y)
newY = pScrn->pScreen->width - x - 1;
}
- (*nPtr->PointerMoved)(index, newX, newY);
+ (*nPtr->PointerMoved)(arg, newX, newY);
}
void
diff --git a/src/neo_video.c b/src/neo_video.c
index 0edae30..8e63947 100644
--- a/src/neo_video.c
+++ b/src/neo_video.c
@@ -78,7 +78,7 @@ static Atom xvColorKey, xvBrightness, xvInterlace;
void
NEOInitVideo(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NEOPtr nPtr = NEOPTR(pScrn);
XF86VideoAdaptorPtr *overlayAdaptors, *newAdaptors = NULL;
XF86VideoAdaptorPtr newAdaptor = NULL;
@@ -202,7 +202,7 @@ static XF86ImageRec NEOVideoImages[] =
static XF86VideoAdaptorPtr
NEOSetupVideo(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NEOPtr nPtr = NEOPTR(pScrn);
NEOPortPtr pPriv;
XF86VideoAdaptorPtr overlayAdaptor;
@@ -916,7 +916,7 @@ NEOInitOffscreenImages(ScreenPtr pScreen)
XF86OffscreenImagePtr offscreenImages;
#ifdef DEBUG
- xf86DrvMsg(xf86Screens[pScreen->myNum]->scrnIndex,X_INFO,"NEOInitOffscreenImages\n");
+ xf86DrvMsg(xf86ScreenToScrn(pScreen)->scrnIndex,X_INFO,"NEOInitOffscreenImages\n");
#endif
if ((offscreenImages = malloc(sizeof(XF86OffscreenImageRec))) == NULL){
return;
@@ -968,7 +968,7 @@ NEOAllocateMemory(ScrnInfoPtr pScrn, FBLinearPtr linear, int size)
}
- pScreen = screenInfo.screens[pScrn->scrnIndex];
+ pScreen = xf86ScrnToScreen(pScrn);
if ((new_linear = xf86AllocateOffscreenLinear(pScreen, size, 16, NULL,
NULL, NULL)) == NULL){
int max_size;