diff options
author | Dave Airlie <airlied@redhat.com> | 2012-07-17 14:49:26 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-07-17 14:49:26 +1000 |
commit | d930bc4864db7106e47304e2fe653267d1886463 (patch) | |
tree | 41d9128dc33dc10f027100a479e236e83b847eba | |
parent | fffd73884a0b18bac6f5c35614f21fca609e15e3 (diff) |
s3virge: port to new X server compat API.
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/compat-api.h | 99 | ||||
-rw-r--r-- | src/s3v.h | 9 | ||||
-rw-r--r-- | src/s3v_accel.c | 2 | ||||
-rw-r--r-- | src/s3v_dga.c | 8 | ||||
-rw-r--r-- | src/s3v_driver.c | 75 | ||||
-rw-r--r-- | src/s3v_hwcurs.c | 2 | ||||
-rw-r--r-- | src/s3v_shadow.c | 6 | ||||
-rw-r--r-- | src/s3v_xv.c | 4 |
9 files changed, 150 insertions, 56 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 998b292..6aafc83 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -29,6 +29,7 @@ s3virge_drv_la_LDFLAGS = -module -avoid-version s3virge_drv_ladir = @moduledir@/drivers s3virge_drv_la_SOURCES = \ + compat-api.h \ newmmio.h \ regs3v.h \ s3v_accel.c \ 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 @@ -74,6 +74,7 @@ in this Software without prior written authorization from the XFree86 Project. #include <X11/extensions/Xv.h> #include "fourcc.h" +#include "compat-api.h" #ifndef _S3V_VGAHWMMIO_H #define _S3V_VGAHWMMIO_H @@ -302,7 +303,7 @@ typedef struct tagS3VRec { int rotate; unsigned char * ShadowPtr; int ShadowPitch; - void (*PointerMoved)(int index, int x, int y); + void (*PointerMoved)(SCRN_ARG_TYPE arg, int x, int y); /* Used by ViRGE driver, but generic -end- */ @@ -397,14 +398,14 @@ void S3VWaitDummy(S3VPtr ps3v); extern Bool S3VHWCursorInit(ScreenPtr pScreen); /* s3v_driver.c */ -void S3VAdjustFrame(int scrnIndex, int x, int y, int flags); -Bool S3VSwitchMode(int scrnIndex, DisplayModePtr mode, int flags); +void S3VAdjustFrame(ADJUST_FRAME_ARGS_DECL); +Bool S3VSwitchMode(SWITCH_MODE_ARGS_DECL); /* s3v_dga.c */ Bool S3VDGAInit(ScreenPtr pScreen); /* in s3v_shadow.c */ -void s3vPointerMoved(int index, int x, int y); +void s3vPointerMoved(SCRN_ARG_TYPE index, int x, int y); void s3vRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox); void s3vRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox); void s3vRefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox); diff --git a/src/s3v_accel.c b/src/s3v_accel.c index cf9a4e2..587ce97 100644 --- a/src/s3v_accel.c +++ b/src/s3v_accel.c @@ -82,7 +82,7 @@ S3VAccelInit(ScreenPtr pScreen) { #ifdef HAVE_XAA_H XAAInfoRecPtr infoPtr; - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); S3VPtr ps3v = S3VPTR(pScrn); BoxRec AvailFBArea; diff --git a/src/s3v_dga.c b/src/s3v_dga.c index f7587b8..0e603cf 100644 --- a/src/s3v_dga.c +++ b/src/s3v_dga.c @@ -101,7 +101,7 @@ DGAFunctionRec S3V_DGAFuncs = { Bool S3VDGAInit(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); S3VPtr ps3v = S3VPTR(pScrn); DGAModePtr modes = NULL, newmodes = NULL, currentMode; DisplayModePtr pMode, firstMode; @@ -245,7 +245,7 @@ S3V_SetMode( pScrn->displayWidth = OldDisplayWidth[index]; - S3VSwitchMode(index, pScrn->currentMode, 0); + S3VSwitchMode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode)); ps3v->DGAactive = FALSE; } else { if(!ps3v->DGAactive) { /* save the old parameters */ @@ -257,7 +257,7 @@ S3V_SetMode( pScrn->displayWidth = pMode->bytesPerScanline / (pMode->bitsPerPixel >> 3); - S3VSwitchMode(index, pMode->mode, 0); + S3VSwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode)); } return TRUE; @@ -282,7 +282,7 @@ S3V_SetViewport( ){ S3VPtr ps3v = S3VPTR(pScrn); - S3VAdjustFrame(pScrn->pScreen->myNum, x, y, flags); + S3VAdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y)); ps3v->DGAViewportStatus = 0; /* MGAAdjustFrame loops until finished */ } diff --git a/src/s3v_driver.c b/src/s3v_driver.c index 05f82cc..654884c 100644 --- a/src/s3v_driver.c +++ b/src/s3v_driver.c @@ -91,34 +91,32 @@ static void S3VIdentify(int flags); static Bool S3VProbe(DriverPtr drv, int flags); static Bool S3VPreInit(ScrnInfoPtr pScrn, int flags); -static Bool S3VEnterVT(int scrnIndex, int flags); -static void S3VLeaveVT(int scrnIndex, int flags); +static Bool S3VEnterVT(VT_FUNC_ARGS_DECL); +static void S3VLeaveVT(VT_FUNC_ARGS_DECL); static void S3VSave (ScrnInfoPtr pScrn); static void S3VWriteMode (ScrnInfoPtr pScrn, vgaRegPtr, S3VRegPtr); static void S3VSaveSTREAMS(ScrnInfoPtr pScrn, unsigned int *streams); static void S3VRestoreSTREAMS(ScrnInfoPtr pScrn, unsigned int *streams); static void S3VDisableSTREAMS(ScrnInfoPtr pScrn); -static Bool S3VScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv); -static int S3VInternalScreenInit( int scrnIndex, ScreenPtr pScreen); +static Bool S3VScreenInit(SCREEN_INIT_ARGS_DECL); +static int S3VInternalScreenInit(ScrnInfoPtr pScrn, ScreenPtr pScreen); static void S3VPrintRegs(ScrnInfoPtr); -static ModeStatus S3VValidMode(int index, DisplayModePtr mode, Bool verbose, int flags); +static ModeStatus S3VValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags); static Bool S3VMapMem(ScrnInfoPtr pScrn); static void S3VUnmapMem(ScrnInfoPtr pScrn); static Bool S3VModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode); -static Bool S3VCloseScreen(int scrnIndex, ScreenPtr pScreen); +static Bool S3VCloseScreen(CLOSE_SCREEN_ARGS_DECL); static Bool S3VSaveScreen(ScreenPtr pScreen, int mode); static void S3VInitSTREAMS(ScrnInfoPtr pScrn, unsigned int *streams, DisplayModePtr mode); -/* s3v.h - static void S3VAdjustFrame(int scrnIndex, int x, int y, int flags); */ -/* s3v.h - static Bool S3VSwitchMode(int scrnIndex, DisplayModePtr mode, int flags); */ static void S3VLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indicies, LOCO *colors, VisualPtr pVisual); static void S3VDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode, int flags); -static Bool S3Vddc1(int scrnIndex); -static Bool S3Vddc2(int scrnIndex); +static Bool S3Vddc1(ScrnInfoPtr pScrn); +static Bool S3Vddc2(ScrnInfoPtr pScrn); static unsigned int S3Vddc1Read(ScrnInfoPtr pScrn); static void S3VProbeDDC(ScrnInfoPtr pScrn, int index); @@ -934,8 +932,8 @@ S3VPreInit(ScrnInfoPtr pScrn, int flags) if ((ps3v->pVbe) && ((pMon = xf86PrintEDID(vbeDoEDID(ps3v->pVbe, NULL))) != NULL)) xf86SetDDCproperties(pScrn,pMon); - else if (!S3Vddc1(pScrn->scrnIndex)) { - S3Vddc2(pScrn->scrnIndex); + else if (!S3Vddc1(pScrn)) { + S3Vddc2(pScrn); } } if (ps3v->pVbe) { @@ -1386,9 +1384,9 @@ S3VPreInit(ScrnInfoPtr pScrn, int flags) /* Mandatory */ static Bool -S3VEnterVT(int scrnIndex, int flags) +S3VEnterVT(VT_FUNC_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); /* ScreenPtr pScreen = xf86Screens[scrnIndex]->pScreen; */ /*vgaHWPtr hwp = VGAHWPTR(pScrn);*/ @@ -1415,9 +1413,9 @@ S3VEnterVT(int scrnIndex, int flags) /* Mandatory */ static void -S3VLeaveVT(int scrnIndex, int flags) +S3VLeaveVT(VT_FUNC_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); vgaHWPtr hwp = VGAHWPTR(pScrn); S3VPtr ps3v = S3VPTR(pScrn); vgaRegPtr vgaSavePtr = &hwp->SavedReg; @@ -2319,7 +2317,7 @@ S3VUnmapMem(ScrnInfoPtr pScrn) /* This gets called at the start of each server generation */ static Bool -S3VScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) +S3VScreenInit(SCREEN_INIT_ARGS_DECL) { ScrnInfoPtr pScrn; S3VPtr ps3v; @@ -2327,7 +2325,7 @@ S3VScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) PVERB5(" S3VScreenInit\n"); /* First get the ScrnInfoRec */ - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); /* Get S3V rec */ ps3v = S3VPTR(pScrn); /* Map MMIO regs and framebuffer */ @@ -2383,7 +2381,7 @@ S3VScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) return FALSE; } - ret = S3VInternalScreenInit(scrnIndex, pScreen); + ret = S3VInternalScreenInit(pScrn, pScreen); if (!ret) return FALSE; @@ -2503,17 +2501,13 @@ S3VScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) /* Common init routines needed in EnterVT and ScreenInit */ static int -S3VInternalScreenInit( int scrnIndex, ScreenPtr pScreen) +S3VInternalScreenInit(ScrnInfoPtr pScrn, ScreenPtr pScreen) { int ret = TRUE; - ScrnInfoPtr pScrn; S3VPtr ps3v; int width, height, displayWidth; unsigned char* FBStart; - /* First get the ScrnInfoRec */ - pScrn = xf86Screens[pScreen->myNum]; - ps3v = S3VPTR(pScrn); displayWidth = pScrn->displayWidth; @@ -2551,7 +2545,7 @@ S3VInternalScreenInit( int scrnIndex, ScreenPtr pScreen) displayWidth, pScrn->bitsPerPixel); break; default: - xf86DrvMsg(scrnIndex, X_ERROR, + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Internal error: invalid bpp (%d) in S3VScreenInit\n", pScrn->bitsPerPixel); ret = FALSE; @@ -2566,9 +2560,9 @@ S3VInternalScreenInit( int scrnIndex, ScreenPtr pScreen) /* Checks if a mode is suitable for the selected chipset. */ static ModeStatus -S3VValidMode(int index, DisplayModePtr mode, Bool verbose, int flags) +S3VValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags) { - ScrnInfoPtr pScrn = xf86Screens[index]; + SCRN_INFO_PTR(arg); if ((pScrn->bitsPerPixel + 7)/8 * mode->HDisplay > 4095) return MODE_VIRTUAL_X; @@ -3276,7 +3270,7 @@ S3VModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode) /* needed, etc. */ S3VWriteMode( pScrn, vganew, new ); /* Adjust the viewport */ - S3VAdjustFrame(pScrn->scrnIndex, pScrn->frameX0, pScrn->frameY0, 0); + S3VAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0)); return TRUE; } @@ -3291,9 +3285,9 @@ S3VModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode) /* Mandatory */ static Bool -S3VCloseScreen(int scrnIndex, ScreenPtr pScreen) +S3VCloseScreen(CLOSE_SCREEN_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); vgaHWPtr hwp = VGAHWPTR(pScrn); S3VPtr ps3v = S3VPTR(pScrn); vgaRegPtr vgaSavePtr = &hwp->SavedReg; @@ -3319,7 +3313,7 @@ S3VCloseScreen(int scrnIndex, ScreenPtr pScreen) pScreen->CloseScreen = ps3v->CloseScreen; - return (*pScreen->CloseScreen)(scrnIndex, pScreen); + return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); } @@ -3433,9 +3427,9 @@ S3VInitSTREAMS(ScrnInfoPtr pScrn, unsigned int *streams, DisplayModePtr mode) */ void -S3VAdjustFrame(int scrnIndex, int x, int y, int flags) +S3VAdjustFrame(ADJUST_FRAME_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); vgaHWPtr hwp = VGAHWPTR(pScrn); S3VPtr ps3v = S3VPTR(pScrn); int Base; @@ -3483,9 +3477,10 @@ S3VAdjustFrame(int scrnIndex, int x, int y, int flags) /* Usually mandatory */ Bool -S3VSwitchMode(int scrnIndex, DisplayModePtr mode, int flags) +S3VSwitchMode(SWITCH_MODE_ARGS_DECL) { - return S3VModeInit(xf86Screens[scrnIndex], mode); + SCRN_INFO_PTR(arg); + return S3VModeInit(pScrn, mode); } @@ -3766,9 +3761,8 @@ S3Vddc1Read(ScrnInfoPtr pScrn) } static Bool -S3Vddc1(int scrnIndex) +S3Vddc1(ScrnInfoPtr pScrn) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; S3VPtr ps3v = S3VPTR(pScrn); CARD32 tmp; Bool success = FALSE; @@ -3779,7 +3773,7 @@ S3Vddc1(int scrnIndex) OUTREG(DDC_REG,(tmp | 0x12)); if ((pMon = xf86PrintEDID( - xf86DoEDID_DDC1(scrnIndex,vgaHWddc1SetSpeedWeak(), + xf86DoEDID_DDC1(XF86_SCRN_ARG(pScrn),vgaHWddc1SetSpeedWeak(), S3Vddc1Read))) != NULL) success = TRUE; xf86SetDDCproperties(pScrn,pMon); @@ -3790,9 +3784,8 @@ S3Vddc1(int scrnIndex) } static Bool -S3Vddc2(int scrnIndex) +S3Vddc2(ScrnInfoPtr pScrn) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; S3VPtr ps3v = S3VPTR(pScrn); if ( xf86LoadSubModule(pScrn, "i2c") ) { @@ -3800,7 +3793,7 @@ S3Vddc2(int scrnIndex) CARD32 tmp = (INREG(DDC_REG)); OUTREG(DDC_REG,(tmp | 0x13)); xf86SetDDCproperties(pScrn,xf86PrintEDID( - xf86DoEDID_DDC2(pScrn->scrnIndex,ps3v->I2C))); + xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn),ps3v->I2C))); OUTREG(DDC_REG,tmp); return TRUE; } diff --git a/src/s3v_hwcurs.c b/src/s3v_hwcurs.c index 58e8fd9..d435565 100644 --- a/src/s3v_hwcurs.c +++ b/src/s3v_hwcurs.c @@ -232,7 +232,7 @@ S3VSetCursorColors(ScrnInfoPtr pScrn, int bg, int fg) Bool S3VHWCursorInit(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); S3VPtr ps3v = S3VPTR(pScrn); xf86CursorInfoPtr infoPtr; diff --git a/src/s3v_shadow.c b/src/s3v_shadow.c index 82b763f..eec8916 100644 --- a/src/s3v_shadow.c +++ b/src/s3v_shadow.c @@ -94,9 +94,9 @@ s3vRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox) } void -s3vPointerMoved(int index, int x, int y) +s3vPointerMoved(SCRN_ARG_TYPE arg, int x, int y) { - ScrnInfoPtr pScrn = xf86Screens[index]; + SCRN_INFO_PTR(arg); S3VPtr ps3v = S3VPTR(pScrn); int newX, newY; @@ -108,7 +108,7 @@ s3vPointerMoved(int index, int x, int y) newY = pScrn->pScreen->width - x - 1; } - (*ps3v->PointerMoved)(index, newX, newY); + (*ps3v->PointerMoved)(arg, newX, newY); } void diff --git a/src/s3v_xv.c b/src/s3v_xv.c index 2466789..3c9d474 100644 --- a/src/s3v_xv.c +++ b/src/s3v_xv.c @@ -105,7 +105,7 @@ int S3VQueryXvCapable(ScrnInfoPtr pScrn) void S3VInitVideo(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL; XF86VideoAdaptorPtr newAdaptor = NULL; S3VPtr ps3v = S3VPTR(pScrn); @@ -346,7 +346,7 @@ S3VAllocAdaptor(ScrnInfoPtr pScrn) static XF86VideoAdaptorPtr S3VSetupImageVideoOverlay(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); S3VPtr ps3v = S3VPTR(pScrn); XF86VideoAdaptorPtr adapt; |