diff options
author | Dave Airlie <airlied@redhat.com> | 2012-06-07 16:27:49 +0100 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-06-07 16:28:08 +0100 |
commit | f526b428847bf03abcc74a2e4b0ea08d3f1e167c (patch) | |
tree | beecab0fbcda54d1fdc288213c2302c2ad981bd4 | |
parent | 8130a2ac8332ff1f83f9f35acca3053d4076f443 (diff) |
xgixp: port to new compat API.
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/compat-api.h | 105 | ||||
-rw-r--r-- | src/xg47_accel.c | 4 | ||||
-rw-r--r-- | src/xg47_cursor.c | 8 | ||||
-rw-r--r-- | src/xg47_misc.c | 4 | ||||
-rw-r--r-- | src/xg47_misc.h | 2 | ||||
-rw-r--r-- | src/xg47_video.c | 6 | ||||
-rw-r--r-- | src/xgi.h | 1 | ||||
-rw-r--r-- | src/xgi_cursor.c | 2 | ||||
-rw-r--r-- | src/xgi_dga.c | 8 | ||||
-rw-r--r-- | src/xgi_dri.c | 6 | ||||
-rw-r--r-- | src/xgi_driver.c | 85 | ||||
-rw-r--r-- | src/xgi_driver.h | 4 | ||||
-rw-r--r-- | src/xgi_hwmc.c | 2 | ||||
-rw-r--r-- | src/xgi_shadow.c | 8 | ||||
-rw-r--r-- | src/xgi_shadow.h | 2 | ||||
-rw-r--r-- | src/xgi_video.c | 2 |
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); @@ -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) |