dmx: Remove ShadowFB support

This has been listed as deprecated ever since DMX was merged.

Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
Adam Jackson 2012-10-16 14:56:18 -04:00
parent 19d3a7cb5d
commit e674815e0a
9 changed files with 93 additions and 297 deletions

View File

@ -56,8 +56,6 @@ Xdmx_SOURCES = dmx.c \
dmxprop.h \ dmxprop.h \
dmxscrinit.c \ dmxscrinit.c \
dmxscrinit.h \ dmxscrinit.h \
dmxshadow.c \
dmxshadow.h \
dmxstat.c \ dmxstat.c \
dmxstat.h \ dmxstat.h \
dmxsync.c \ dmxsync.c \

View File

@ -254,10 +254,6 @@ typedef struct _DMXScreenInfo {
/* Global variables available to all Xserver/hw/dmx routines. */ /* Global variables available to all Xserver/hw/dmx routines. */
extern int dmxNumScreens; /**< Number of dmxScreens */ extern int dmxNumScreens; /**< Number of dmxScreens */
extern DMXScreenInfo *dmxScreens; /**< List of outputs */ extern DMXScreenInfo *dmxScreens; /**< List of outputs */
extern int dmxShadowFB; /**< Non-zero if using
* shadow frame-buffer
* (deprecated) */
extern XErrorEvent dmxLastErrorEvent; /**< Last error that extern XErrorEvent dmxLastErrorEvent; /**< Last error that
* occurred */ * occurred */

View File

@ -82,8 +82,6 @@ DMXScreenInfo *dmxScreens;
int dmxNumInputs; int dmxNumInputs;
DMXInputInfo *dmxInputs; DMXInputInfo *dmxInputs;
int dmxShadowFB = FALSE;
XErrorEvent dmxLastErrorEvent; XErrorEvent dmxLastErrorEvent;
Bool dmxErrorOccurred = FALSE; Bool dmxErrorOccurred = FALSE;
@ -854,9 +852,6 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[])
/* Initialized things that need timer hooks */ /* Initialized things that need timer hooks */
dmxStatInit(); dmxStatInit();
dmxSyncInit(); /* Calls RegisterBlockAndWakeupHandlers */ dmxSyncInit(); /* Calls RegisterBlockAndWakeupHandlers */
dmxLog(dmxInfo, "Shadow framebuffer support %s\n",
dmxShadowFB ? "enabled" : "disabled");
} }
/* RATS: Assuming the fp string (which comes from the command-line argv /* RATS: Assuming the fp string (which comes from the command-line argv
@ -951,10 +946,6 @@ ddxProcessArgument(int argc, char *argv[], int i)
retval = 2; retval = 2;
} }
else if (!strcmp(argv[i], "-noshadowfb")) { else if (!strcmp(argv[i], "-noshadowfb")) {
dmxLog(dmxWarning,
"-noshadowfb has been deprecated "
"since it is now the default\n");
dmxShadowFB = FALSE;
retval = 1; retval = 1;
} }
else if (!strcmp(argv[i], "-nomulticursor")) { else if (!strcmp(argv[i], "-nomulticursor")) {
@ -962,7 +953,6 @@ ddxProcessArgument(int argc, char *argv[], int i)
retval = 1; retval = 1;
} }
else if (!strcmp(argv[i], "-shadowfb")) { else if (!strcmp(argv[i], "-shadowfb")) {
dmxShadowFB = TRUE;
retval = 1; retval = 1;
} }
else if (!strcmp(argv[i], "-configfile")) { else if (!strcmp(argv[i], "-configfile")) {

View File

@ -141,10 +141,6 @@ dmxPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum]; DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
PictureScreenPtr ps; PictureScreenPtr ps;
/* The shadow framebuffer only relies on FB to be initialized */
if (dmxShadowFB)
return fbPictureInit(pScreen, formats, nformats);
if (!miPictureInit(pScreen, formats, nformats)) if (!miPictureInit(pScreen, formats, nformats))
return FALSE; return FALSE;

View File

@ -41,7 +41,6 @@
#include "dmx.h" #include "dmx.h"
#include "dmxsync.h" #include "dmxsync.h"
#include "dmxshadow.h"
#include "dmxscrinit.h" #include "dmxscrinit.h"
#include "dmxcursor.h" #include "dmxcursor.h"
#include "dmxgc.h" #include "dmxgc.h"
@ -159,24 +158,6 @@ dmxBEScreenInit(ScreenPtr pScreen)
XMapWindow(dmxScreen->beDisplay, dmxScreen->scrnWin); XMapWindow(dmxScreen->beDisplay, dmxScreen->scrnWin);
if (dmxShadowFB) {
mask = (GCFunction | GCPlaneMask | GCClipMask);
gcvals.function = GXcopy;
gcvals.plane_mask = AllPlanes;
gcvals.clip_mask = None;
dmxScreen->shadowGC = XCreateGC(dmxScreen->beDisplay,
dmxScreen->scrnWin, mask, &gcvals);
dmxScreen->shadowFBImage =
XCreateImage(dmxScreen->beDisplay,
dmxScreen->beVisuals[dmxScreen->beDefVisualIndex].
visual, dmxScreen->beDepth, ZPixmap, 0,
(char *) dmxScreen->shadow, dmxScreen->scrnWidth,
dmxScreen->scrnHeight, dmxScreen->beBPP,
PixmapBytePad(dmxScreen->scrnWidth, dmxScreen->beBPP));
}
else {
/* Create default drawables (used during GC creation) */ /* Create default drawables (used during GC creation) */
for (i = 0; i < dmxScreen->beNumPixmapFormats; i++) for (i = 0; i < dmxScreen->beNumPixmapFormats; i++)
for (j = 0; j < dmxScreen->beNumDepths; j++) for (j = 0; j < dmxScreen->beNumDepths; j++)
@ -189,7 +170,6 @@ dmxBEScreenInit(ScreenPtr pScreen)
dmxScreen->bePixmapFormats[i].depth); dmxScreen->bePixmapFormats[i].depth);
break; break;
} }
}
} }
/** Initialize screen number \a pScreen->myNum. */ /** Initialize screen number \a pScreen->myNum. */
@ -215,19 +195,12 @@ dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[])
dmxGeneration = serverGeneration; dmxGeneration = serverGeneration;
} }
if (dmxShadowFB) {
dmxScreen->shadow = shadowAlloc(dmxScreen->scrnWidth,
dmxScreen->scrnHeight,
dmxScreen->beBPP);
}
else {
if (!dmxInitGC(pScreen)) if (!dmxInitGC(pScreen))
return FALSE; return FALSE;
if (!dmxInitWindow(pScreen)) if (!dmxInitWindow(pScreen))
return FALSE; return FALSE;
if (!dmxInitPixmap(pScreen)) if (!dmxInitPixmap(pScreen))
return FALSE; return FALSE;
}
/* /*
* Initalise the visual types. miSetVisualTypesAndMasks() requires * Initalise the visual types. miSetVisualTypesAndMasks() requires
@ -267,7 +240,7 @@ dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[])
} }
fbScreenInit(pScreen, fbScreenInit(pScreen,
dmxShadowFB ? dmxScreen->shadow : NULL, NULL,
dmxScreen->scrnWidth, dmxScreen->scrnWidth,
dmxScreen->scrnHeight, dmxScreen->scrnHeight,
dmxScreen->beXDPI, dmxScreen->beXDPI,
@ -278,13 +251,6 @@ dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[])
pScreen->GetWindowPixmap = NULL; pScreen->GetWindowPixmap = NULL;
pScreen->SetWindowPixmap = NULL; pScreen->SetWindowPixmap = NULL;
if (dmxShadowFB && !shadowInit(pScreen, dmxShadowUpdateProc, NULL))
return FALSE;
if (dmxShadowFB) {
miDCInitialize(pScreen, &dmxPointerCursorFuncs);
}
else {
MAXSCREENSALLOC(dmxCursorGeneration); MAXSCREENSALLOC(dmxCursorGeneration);
if (dmxCursorGeneration[pScreen->myNum] != serverGeneration) { if (dmxCursorGeneration[pScreen->myNum] != serverGeneration) {
if (!(miPointerInitialize(pScreen, if (!(miPointerInitialize(pScreen,
@ -294,14 +260,12 @@ dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[])
dmxCursorGeneration[pScreen->myNum] = serverGeneration; dmxCursorGeneration[pScreen->myNum] = serverGeneration;
} }
}
DMX_WRAP(CloseScreen, dmxCloseScreen, dmxScreen, pScreen); DMX_WRAP(CloseScreen, dmxCloseScreen, dmxScreen, pScreen);
DMX_WRAP(SaveScreen, dmxSaveScreen, dmxScreen, pScreen); DMX_WRAP(SaveScreen, dmxSaveScreen, dmxScreen, pScreen);
dmxBEScreenInit(pScreen); dmxBEScreenInit(pScreen);
if (!dmxShadowFB) {
/* Wrap GC functions */ /* Wrap GC functions */
DMX_WRAP(CreateGC, dmxCreateGC, dmxScreen, pScreen); DMX_WRAP(CreateGC, dmxCreateGC, dmxScreen, pScreen);
@ -343,7 +307,6 @@ dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[])
/* Wrap Shape functions */ /* Wrap Shape functions */
DMX_WRAP(SetShape, dmxSetShape, dmxScreen, pScreen); DMX_WRAP(SetShape, dmxSetShape, dmxScreen, pScreen);
}
if (!dmxCreateDefColormap(pScreen)) if (!dmxCreateDefColormap(pScreen))
return FALSE; return FALSE;
@ -370,14 +333,6 @@ dmxBECloseScreen(ScreenPtr pScreen)
XDestroyWindow(dmxScreen->beDisplay, dmxScreen->scrnWin); XDestroyWindow(dmxScreen->beDisplay, dmxScreen->scrnWin);
dmxScreen->scrnWin = (Window) 0; dmxScreen->scrnWin = (Window) 0;
if (dmxShadowFB) {
/* Free the shadow GC and image assocated with the back-end server */
XFreeGC(dmxScreen->beDisplay, dmxScreen->shadowGC);
dmxScreen->shadowGC = NULL;
XFree(dmxScreen->shadowFBImage);
dmxScreen->shadowFBImage = NULL;
}
else {
/* Free the default drawables */ /* Free the default drawables */
for (i = 0; i < dmxScreen->beNumPixmapFormats; i++) { for (i = 0; i < dmxScreen->beNumPixmapFormats; i++) {
if (dmxScreen->scrnDefDrawables[i]) { if (dmxScreen->scrnDefDrawables[i]) {
@ -386,7 +341,6 @@ dmxBECloseScreen(ScreenPtr pScreen)
dmxScreen->scrnDefDrawables[i] = (Drawable) 0; dmxScreen->scrnDefDrawables[i] = (Drawable) 0;
} }
} }
}
/* Free resources allocated during initialization (in dmxinit.c) */ /* Free resources allocated during initialization (in dmxinit.c) */
for (i = 0; i < dmxScreen->beNumDefColormaps; i++) for (i = 0; i < dmxScreen->beNumDefColormaps; i++)
@ -432,12 +386,6 @@ dmxCloseScreen(ScreenPtr pScreen)
dmxResetFonts(); dmxResetFonts();
} }
if (dmxShadowFB) {
/* Free the shadow framebuffer */
free(dmxScreen->shadow);
}
else {
/* Unwrap Shape functions */ /* Unwrap Shape functions */
DMX_UNWRAP(SetShape, dmxScreen, pScreen); DMX_UNWRAP(SetShape, dmxScreen, pScreen);
@ -473,7 +421,6 @@ dmxCloseScreen(ScreenPtr pScreen)
DMX_UNWRAP(DestroyColormap, dmxScreen, pScreen); DMX_UNWRAP(DestroyColormap, dmxScreen, pScreen);
DMX_UNWRAP(InstallColormap, dmxScreen, pScreen); DMX_UNWRAP(InstallColormap, dmxScreen, pScreen);
DMX_UNWRAP(StoreColors, dmxScreen, pScreen); DMX_UNWRAP(StoreColors, dmxScreen, pScreen);
}
DMX_UNWRAP(SaveScreen, dmxScreen, pScreen); DMX_UNWRAP(SaveScreen, dmxScreen, pScreen);

View File

@ -1,70 +0,0 @@
/*
* Copyright 2001 Red Hat Inc., Durham, North Carolina.
*
* All Rights Reserved.
*
* 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 on 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
* NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
* 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.
*/
/*
* Authors:
* Kevin E. Martin <kem@redhat.com>
* David H. Dawes <dawes@xfree86.org>
*
*/
#ifdef HAVE_DMX_CONFIG_H
#include <dmx-config.h>
#endif
#include "dmx.h"
#include "dmxsync.h"
#include "dmxshadow.h"
/** \file
* This file provides support for the shadow frame buffer. */
/** Update the screen from the shadow frame buffer. */
void
dmxShadowUpdateProc(ScreenPtr pScreen, shadowBufPtr pBuf)
{
RegionPtr damage = &pBuf->damage;
int nbox = RegionNumRects(damage);
BoxPtr pbox = RegionRects(damage);
DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
if (!dmxScreen->beDisplay)
return;
while (nbox--) {
XPutImage(dmxScreen->beDisplay,
dmxScreen->scrnWin,
dmxScreen->shadowGC,
dmxScreen->shadowFBImage,
pbox->x1, pbox->y1,
pbox->x1, pbox->y1, pbox->x2 - pbox->x1, pbox->y2 - pbox->y1);
pbox++;
}
dmxSync(dmxScreen, FALSE);
}

View File

@ -1,46 +0,0 @@
/*
* Copyright 2001 Red Hat Inc., Durham, North Carolina.
*
* All Rights Reserved.
*
* 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 on 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
* NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
* 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.
*/
/*
* Authors:
* Kevin E. Martin <kem@redhat.com>
* David H. Dawes <dawes@xfree86.org>
*
*/
/** \file
* Interface for shadow framebuffer support. \see dmxshadow.c */
#ifndef DMXSHADOW_H
#define DMXSHADOW_H
#include "shadow.h"
#include "scrnintstr.h"
extern void dmxShadowUpdateProc(ScreenPtr pScreen, shadowBufPtr pBuf);
#endif /* DMXSHADOW_H */

View File

@ -502,11 +502,6 @@ dmxCommonMouOn(DevicePtr pDev)
GETDMXINPUTFROMPRIV; GETDMXINPUTFROMPRIV;
priv->eventMask |= DMX_POINTER_EVENT_MASK; priv->eventMask |= DMX_POINTER_EVENT_MASK;
if (dmxShadowFB) {
XWarpPointer(priv->display, priv->window, priv->window,
0, 0, 0, 0, priv->initPointerX, priv->initPointerY);
dmxSync(&dmxScreens[dmxInput->scrnIdx], TRUE);
}
if (!priv->be) { if (!priv->be) {
XSelectInput(priv->display, priv->window, priv->eventMask); XSelectInput(priv->display, priv->window, priv->eventMask);
AddEnabledDevice(XConnectionNumber(priv->display)); AddEnabledDevice(XConnectionNumber(priv->display));

View File

@ -179,16 +179,6 @@ will switch to another VC in local (raw) mode.
.RE .RE
.sp .sp
.TP 8 .TP 8
.BI "-shadowfb"
This option turns on (legacy) support for the shadow frame buffer.
.sp
.TP 8
.BI "-noshadowfb"
This option turns off (legacy) support for the shadow frame buffer.
Note that this option has been deprecated and will be removed in the
next release.
.sp
.TP 8
.BI "-nomulticursor" .BI "-nomulticursor"
This option turns off support for displaying multiple cursors on This option turns off support for displaying multiple cursors on
overlapped back-end displays. This option is available for testing and overlapped back-end displays. This option is available for testing and