// screen functions
+#if XORG < 112
static Bool vncHooksCloseScreen(int i, ScreenPtr pScreen);
+#else
+static Bool vncHooksCloseScreen(ScreenPtr pScreen);
+#endif
static Bool vncHooksCreateGC(GCPtr pGC);
static void vncHooksCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
RegionPtr pOldRegion);
DeviceIntPtr pDev,
#endif
ScreenPtr pScreen, CursorPtr cursor);
+#if XORG < 112
static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout,
pointer pReadmask);
+#else
+static void vncHooksBlockHandler(ScreenPtr pScreen, pointer pTimeout,
+ pointer pReadmask);
+#endif
#ifdef RENDER
static void vncHooksComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask,
// CloseScreen - unwrap the screen functions and call the original CloseScreen
// function
+#if XORG < 112
static Bool vncHooksCloseScreen(int i, ScreenPtr pScreen_)
+#else
+static Bool vncHooksCloseScreen(ScreenPtr pScreen_)
+#endif
{
SCREEN_UNWRAP(pScreen_, CloseScreen);
DBGPRINT((stderr,"vncHooksCloseScreen: unwrapped screen functions\n"));
+#if XORG < 112
return (*pScreen->CloseScreen)(i, pScreen);
+#else
+ return (*pScreen->CloseScreen)(pScreen);
+#endif
}
// CreateGC - wrap the "GC funcs"
// BlockHandler - ignore any changes during the block handler - it's likely
// these are just drawing the cursor.
+#if XORG < 112
static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout,
pointer pReadmask)
+#else
+static void vncHooksBlockHandler(ScreenPtr pScreen_, pointer pTimeout,
+ pointer pReadmask)
+#endif
{
+#if XORG < 112
SCREEN_UNWRAP(screenInfo.screens[i], BlockHandler);
+#else
+ SCREEN_UNWRAP(pScreen_, BlockHandler);
+#endif
vncHooksScreen->desktop->ignoreHooks(true);
+#if XORG < 112
(*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
+#else
+ (*pScreen->BlockHandler) (pScreen, pTimeout, pReadmask);
+#endif
vncHooksScreen->desktop->ignoreHooks(false);
}
void
+#if XORG < 113
OsVendorFatalError()
+#else
+OsVendorFatalError(const char *f, va_list args)
+#endif
{
}
}
#endif
+#if XORG < 113
static ColormapPtr InstalledMaps[MAXSCREENS];
+#else
+static DevPrivateKeyRec cmapScrPrivateKeyRec;
+#define cmapScrPrivateKey (&cmapScrPrivateKeyRec)
+#define GetInstalledColormap(s) ((ColormapPtr) dixLookupPrivate(&(s)->devPrivates, cmapScrPrivateKey))
+#define SetInstalledColormap(s,c) (dixSetPrivate(&(s)->devPrivates, cmapScrPrivateKey, c))
+#endif
static int
vfbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps)
{
/* By the time we are processing requests, we can guarantee that there
* is always a colormap installed */
+#if XORG < 113
*pmaps = InstalledMaps[pScreen->myNum]->mid;
+#else
+ *pmaps = GetInstalledColormap(pScreen)->mid;
+#endif
return (1);
}
static void
vfbInstallColormap(ColormapPtr pmap)
{
+#if XORG < 113
int index = pmap->pScreen->myNum;
- ColormapPtr oldpmap = InstalledMaps[index];
+#endif
+ ColormapPtr oldpmap;
+
+#if XORG < 113
+ oldpmap = InstalledMaps[index];
+#else
+ oldpmap = GetInstalledColormap(pmap->pScreen);
+#endif
if (pmap != oldpmap)
{
if(oldpmap != (ColormapPtr)None)
WalkTree(pmap->pScreen, TellLostMap, (char *)&oldpmap->mid);
/* Install pmap */
+#if XORG < 113
InstalledMaps[index] = pmap;
+#else
+ SetInstalledColormap(pmap->pScreen, pmap);
+#endif
WalkTree(pmap->pScreen, TellGainedMap, (char *)&pmap->mid);
entries = pmap->pVisual->ColormapEntries;
static void
vfbUninstallColormap(ColormapPtr pmap)
{
+#if XORG < 113
ColormapPtr curpmap = InstalledMaps[pmap->pScreen->myNum];
+#else
+ ColormapPtr curpmap = GetInstalledColormap(pmap->pScreen);
+#endif
if(pmap == curpmap)
{
#endif
static Bool
+#if XORG < 113
vfbCloseScreen(int index, ScreenPtr pScreen)
+#else
+vfbCloseScreen(ScreenPtr pScreen)
+#endif
{
+#if XORG < 113
vfbScreenInfoPtr pvfb = &vfbScreens[index];
+#else
+ vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];
+#endif
int i;
pScreen->CloseScreen = pvfb->closeScreen;
/*
* XXX probably lots of stuff to clean. For now,
- * clear InstalledMaps[] so that server reset works correctly.
+ * clear installed colormaps so that server reset works correctly.
*/
+#if XORG < 113
for (i = 0; i < MAXSCREENS; i++)
InstalledMaps[i] = NULL;
return pScreen->CloseScreen(index, pScreen);
+#else
+ for (i = 0; i < screenInfo.numScreens; i++)
+ SetInstalledColormap(screenInfo.screens[i], NULL);
+
+ /*
+ * fb overwrites miCloseScreen, so do this here
+ */
+ if (pScreen->devPrivate)
+ (*pScreen->DestroyPixmap) ((PixmapPtr) pScreen->devPrivate);
+ pScreen->devPrivate = NULL;
+
+ return pScreen->CloseScreen(pScreen);
+#endif
}
static Bool
+#if XORG < 113
vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
+#else
+vfbScreenInit(ScreenPtr pScreen, int argc, char **argv)
+#endif
{
+#if XORG < 113
vfbScreenInfoPtr pvfb = &vfbScreens[index];
+#else
+ vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];
+#endif
int dpi;
int ret;
void *pbits;
+#if XORG >= 113
+ if (!dixRegisterPrivateKey(&cmapScrPrivateKeyRec, PRIVATE_SCREEN, 0))
+ return FALSE;
+#endif
+
/* 96 is the default used by most other systems */
dpi = 96;
if (monitorResolution)
pbits = vfbAllocateFramebufferMemory(&pvfb->fb);
if (!pbits) return FALSE;
+#if XORG < 113
vncFbptr[index] = pbits;
vncFbstride[index] = pvfb->fb.paddedWidth;
+#else
+ vncFbptr[pScreen->myNum] = pbits;
+ vncFbstride[pScreen->myNum] = pvfb->fb.paddedWidth;
+#endif
miSetPixmapDepths();