This drops the index argument, its the same as pScreen->myNum, and its the last major index abuse I can find.
v2: address Alan's review - update docs, fix xwin/xnest/darwin Signed-off-by: Dave Airlie <airl...@redhat.com> --- dix/dispatch.c | 5 ++--- doc/Xserver-spec.xml | 13 +++++-------- hw/dmx/dmxextension.c | 2 +- hw/dmx/dmxscrinit.c | 16 ++++++++-------- hw/dmx/dmxscrinit.h | 4 ++-- hw/kdrive/src/kdrive.c | 2 +- hw/kdrive/src/kdrive.h | 2 +- hw/vfb/InitOutput.c | 4 ++-- hw/xfree86/common/xf86str.h | 2 +- hw/xfree86/doc/ddxDesign.xml | 2 +- hw/xnest/Screen.c | 2 +- hw/xnest/Screen.h | 2 +- hw/xquartz/darwin.c | 6 +++--- hw/xwin/win.h | 2 +- hw/xwin/winscrinit.c | 8 ++++---- include/screenint.h | 1 - 16 files changed, 34 insertions(+), 39 deletions(-) diff --git a/dix/dispatch.c b/dix/dispatch.c index d971805..b88f974 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -3725,8 +3725,7 @@ with its screen number, a pointer to its ScreenRec, argc, and argv. */ int -AddScreen(Bool (*pfnInit) (int /*index */ , - ScreenPtr /*pScreen */ , +AddScreen(Bool (*pfnInit) (ScreenPtr /*pScreen */ , int /*argc */ , char ** /*argv */ ), int argc, char **argv) @@ -3794,7 +3793,7 @@ AddScreen(Bool (*pfnInit) (int /*index */ , */ screenInfo.screens[i] = pScreen; screenInfo.numScreens++; - if (!(*pfnInit) (i, pScreen, argc, argv)) { + if (!(*pfnInit) (pScreen, argc, argv)) { dixFreePrivates(pScreen->devPrivates, PRIVATE_SCREEN); free(pScreen); screenInfo.numScreens--; diff --git a/doc/Xserver-spec.xml b/doc/Xserver-spec.xml index 2b11828..866701d 100644 --- a/doc/Xserver-spec.xml +++ b/doc/Xserver-spec.xml @@ -1942,18 +1942,15 @@ FALSE.</para> The scrInitProc should be of the following form: <blockquote><programlisting> - Bool scrInitProc(iScreen, pScreen, argc, argv) - int iScreen; + Bool scrInitProc(pScreen, argc, argv) ScreenPtr pScreen; int argc; char **argv; </programlisting></blockquote> -iScreen is the index for this screen; 0 for the first one initialized, -1 for the second, etc. pScreen is the pointer to the screen's new -ScreenRec. argc and argv are as before. Your screen initialize -procedure should return TRUE upon success or FALSE if the screen -cannot be initialized (for instance, if the screen hardware does not -exist on this machine).</para> +pScreen is the pointer to the screen's new ScreenRec. argc and argv +are as before. Your screen initialize procedure should return TRUE +upon success or FALSE if the screen cannot be initialized (for + instance, if the screen hardware does not exist on this machine).</para> <para> This procedure must determine what actual device it is supposed to initialize. If you have a different procedure for each screen, then it is no problem. diff --git a/hw/dmx/dmxextension.c b/hw/dmx/dmxextension.c index faa28a5..d7296ae 100644 --- a/hw/dmx/dmxextension.c +++ b/hw/dmx/dmxextension.c @@ -1318,7 +1318,7 @@ dmxAttachScreen(int idx, DMXScreenAttributesPtr attr) } /* Initialize the BE screen resources */ - dmxBEScreenInit(idx, screenInfo.screens[idx]); + dmxBEScreenInit(screenInfo.screens[idx]); /* TODO: Handle GLX visual initialization. GLXProxy needs to be * updated to handle dynamic addition/removal of screens. */ diff --git a/hw/dmx/dmxscrinit.c b/hw/dmx/dmxscrinit.c index 2a3a1ff..849ef16 100644 --- a/hw/dmx/dmxscrinit.c +++ b/hw/dmx/dmxscrinit.c @@ -77,9 +77,9 @@ DevPrivateKeyRec dmxGlyphSetPrivateKeyRec; /** Initialize the parts of screen \a idx that require access to the * back-end server. */ void -dmxBEScreenInit(int idx, ScreenPtr pScreen) +dmxBEScreenInit(ScreenPtr pScreen) { - DMXScreenInfo *dmxScreen = &dmxScreens[idx]; + DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum]; XSetWindowAttributes attribs; XGCValues gcvals; unsigned long mask; @@ -192,11 +192,11 @@ dmxBEScreenInit(int idx, ScreenPtr pScreen) } } -/** Initialize screen number \a idx. */ +/** Initialize screen number \a pScreen->myNum. */ Bool -dmxScreenInit(int idx, ScreenPtr pScreen, int argc, char *argv[]) +dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[]) { - DMXScreenInfo *dmxScreen = &dmxScreens[idx]; + DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum]; int i, j; if (!dixRegisterPrivateKey(&dmxScreenPrivateKeyRec, PRIVATE_SCREEN, 0)) @@ -286,20 +286,20 @@ dmxScreenInit(int idx, ScreenPtr pScreen, int argc, char *argv[]) } else { MAXSCREENSALLOC(dmxCursorGeneration); - if (dmxCursorGeneration[idx] != serverGeneration) { + if (dmxCursorGeneration[pScreen->myNum] != serverGeneration) { if (!(miPointerInitialize(pScreen, &dmxPointerSpriteFuncs, &dmxPointerCursorFuncs, FALSE))) return FALSE; - dmxCursorGeneration[idx] = serverGeneration; + dmxCursorGeneration[pScreen->myNum] = serverGeneration; } } DMX_WRAP(CloseScreen, dmxCloseScreen, dmxScreen, pScreen); DMX_WRAP(SaveScreen, dmxSaveScreen, dmxScreen, pScreen); - dmxBEScreenInit(idx, pScreen); + dmxBEScreenInit(pScreen); if (!dmxShadowFB) { /* Wrap GC functions */ diff --git a/hw/dmx/dmxscrinit.h b/hw/dmx/dmxscrinit.h index 5c0bfac..9fe9c98 100644 --- a/hw/dmx/dmxscrinit.h +++ b/hw/dmx/dmxscrinit.h @@ -40,9 +40,9 @@ #include "scrnintstr.h" -extern Bool dmxScreenInit(int idx, ScreenPtr pScreen, int argc, char *argv[]); +extern Bool dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[]); -extern void dmxBEScreenInit(int idx, ScreenPtr pScreen); +extern void dmxBEScreenInit(ScreenPtr pScreen); extern void dmxBECloseScreen(ScreenPtr pScreen); #endif /* DMXSCRINIT_H */ diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c index 21715bb..a3b9434 100644 --- a/hw/kdrive/src/kdrive.c +++ b/hw/kdrive/src/kdrive.c @@ -776,7 +776,7 @@ KdSetSubpixelOrder(ScreenPtr pScreen, Rotation randr) static KdScreenInfo *kdCurrentScreen; Bool -KdScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) +KdScreenInit(ScreenPtr pScreen, int argc, char **argv) { KdScreenInfo *screen = kdCurrentScreen; KdCardInfo *card = screen->card; diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h index 293f4e9..6b3410d 100644 --- a/hw/kdrive/src/kdrive.h +++ b/hw/kdrive/src/kdrive.h @@ -448,7 +448,7 @@ Bool KdSaveScreen(ScreenPtr pScreen, int on); Bool - KdScreenInit(int index, ScreenPtr pScreen, int argc, char **argv); + KdScreenInit(ScreenPtr pScreen, int argc, char **argv); void diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c index 55e554c..d777a85 100644 --- a/hw/vfb/InitOutput.c +++ b/hw/vfb/InitOutput.c @@ -778,9 +778,9 @@ vfbCloseScreen(ScreenPtr pScreen) } static Bool -vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) +vfbScreenInit(ScreenPtr pScreen, int argc, char **argv) { - vfbScreenInfoPtr pvfb = &vfbScreens[index]; + vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum]; int dpix = monitorResolution, dpiy = monitorResolution; int ret; char *pbits; diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h index b2410d1..16ce9ea 100644 --- a/hw/xfree86/common/xf86str.h +++ b/hw/xfree86/common/xf86str.h @@ -645,7 +645,7 @@ typedef struct { typedef Bool xf86ProbeProc(DriverPtr, int); typedef Bool xf86PreInitProc(ScrnInfoPtr, int); -typedef Bool xf86ScreenInitProc(int, ScreenPtr, int, char **); +typedef Bool xf86ScreenInitProc(ScreenPtr, int, char **); typedef Bool xf86SwitchModeProc(ScrnInfoPtr, DisplayModePtr, int); typedef void xf86AdjustFrameProc(ScrnInfoPtr, int, int, int); typedef Bool xf86EnterVTProc(ScrnInfoPtr, int); diff --git a/hw/xfree86/doc/ddxDesign.xml b/hw/xfree86/doc/ddxDesign.xml index 53aebd3..3fb6418 100644 --- a/hw/xfree86/doc/ddxDesign.xml +++ b/hw/xfree86/doc/ddxDesign.xml @@ -9058,7 +9058,7 @@ ZZZModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode) <programlisting> static Bool -ZZZScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) +ZZZScreenInit(ScreenPtr pScreen, int argc, char **argv) { /* Get the ScrnInfoRec */ pScrn = xf86ScreenToScrn(pScreen); diff --git a/hw/xnest/Screen.c b/hw/xnest/Screen.c index fb58c88..f78dcd0 100644 --- a/hw/xnest/Screen.c +++ b/hw/xnest/Screen.c @@ -129,7 +129,7 @@ static miPointerSpriteFuncRec xnestPointerSpriteFuncs = { }; Bool -xnestOpenScreen(int index, ScreenPtr pScreen, int argc, char *argv[]) +xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[]) { VisualPtr visuals; DepthPtr depths; diff --git a/hw/xnest/Screen.h b/hw/xnest/Screen.h index 5e58a1d..17c514a 100644 --- a/hw/xnest/Screen.h +++ b/hw/xnest/Screen.h @@ -19,7 +19,7 @@ extern Window xnestDefaultWindows[MAXSCREENS]; extern Window xnestScreenSaverWindows[MAXSCREENS]; ScreenPtr xnestScreen(Window window); -Bool xnestOpenScreen(int index, ScreenPtr pScreen, int argc, char *argv[]); +Bool xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[]); Bool xnestCloseScreen(ScreenPtr pScreen); #endif /* XNESTSCREEN_H */ diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c index 41db72a..d26f18a 100644 --- a/hw/xquartz/darwin.c +++ b/hw/xquartz/darwin.c @@ -193,7 +193,7 @@ DarwinSaveScreen(ScreenPtr pScreen, int on) * Initialize the screen and communicate information about it back to dix. */ static Bool -DarwinScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) +DarwinScreenInit(ScreenPtr pScreen, int argc, char **argv) { int dpi; static int foundIndex = 0; @@ -204,7 +204,7 @@ DarwinScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) return FALSE; // reset index of found screens for each server generation - if (index == 0) { + if (pScreen->myNum == 0) { foundIndex = 0; // reset the visual list @@ -275,7 +275,7 @@ DarwinScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) pScreen->SaveScreen = DarwinSaveScreen; // finish mode dependent screen setup including cursor support - if (!QuartzSetupScreen(index, pScreen)) { + if (!QuartzSetupScreen(pScreen->myNum, pScreen)) { return FALSE; } diff --git a/hw/xwin/win.h b/hw/xwin/win.h index 2bde18d..878419d 100644 --- a/hw/xwin/win.h +++ b/hw/xwin/win.h @@ -1070,7 +1070,7 @@ winPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDrawable, */ Bool - winScreenInit(int index, ScreenPtr pScreen, int argc, char **argv); + winScreenInit(ScreenPtr pScreen, int argc, char **argv); Bool winFinishScreenInitFB(int index, ScreenPtr pScreen, int argc, char **argv); diff --git a/hw/xwin/winscrinit.c b/hw/xwin/winscrinit.c index 42891c2..b534a0f 100644 --- a/hw/xwin/winscrinit.c +++ b/hw/xwin/winscrinit.c @@ -81,9 +81,9 @@ static Bool */ Bool -winScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) +winScreenInit(ScreenPtr pScreen, int argc, char **argv) { - winScreenInfoPtr pScreenInfo = &g_ScreenInfo[index]; + winScreenInfoPtr pScreenInfo = &g_ScreenInfo[pScreen->myNum]; winPrivScreenPtr pScreenPriv; HDC hdc; DWORD dwInitialBPP; @@ -202,7 +202,7 @@ winScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) miClearVisualTypes(); /* Call the engine dependent screen initialization procedure */ - if (!((*pScreenPriv->pwinFinishScreenInit) (index, pScreen, argc, argv))) { + if (!((*pScreenPriv->pwinFinishScreenInit) (pScreen->myNum, pScreen, argc, argv))) { ErrorF("winScreenInit - winFinishScreenInit () failed\n"); /* call the engine dependent screen close procedure to clean up from a failure */ @@ -224,7 +224,7 @@ winScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) pScreen->y = pScreenInfo->dwInitialY - GetSystemMetrics(SM_YVIRTUALSCREEN); ErrorF("Screen %d added at virtual desktop coordinate (%d,%d).\n", - index, pScreen->x, pScreen->y); + pScreen->myNum, pScreen->x, pScreen->y); #if CYGDEBUG || YES winDebug("winScreenInit - returning\n"); diff --git a/include/screenint.h b/include/screenint.h index 8817471..6b0cc70 100644 --- a/include/screenint.h +++ b/include/screenint.h @@ -55,7 +55,6 @@ typedef struct _Depth *DepthPtr; typedef struct _Screen *ScreenPtr; extern _X_EXPORT int AddScreen(Bool (* /*pfnInit */ )( - int /*index */ , ScreenPtr /*pScreen */ , int /*argc */ , -- 1.7.6 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel