Bugzilla #1644: Attach an atom "VFB" to root window of dummy driver.
Committing in Head. Modified Files: dummy.h dummy_driver.c
This commit is contained in:
parent
a571d5efb5
commit
b227226476
@ -1,4 +1,4 @@
|
|||||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/dummy/dummy.h,v 1.2 2003/04/23 21:51:35 tsi Exp $ */
|
/* $XFree86$ */
|
||||||
|
|
||||||
/* All drivers should typically include these */
|
/* All drivers should typically include these */
|
||||||
#include "xf86.h"
|
#include "xf86.h"
|
||||||
@ -65,6 +65,8 @@ typedef struct dummyRec
|
|||||||
int interlace;
|
int interlace;
|
||||||
dummy_colors colors[256];
|
dummy_colors colors[256];
|
||||||
pointer* FBBase;
|
pointer* FBBase;
|
||||||
|
Bool (*CreateWindow)() ; /* wrapped CreateWindow */
|
||||||
|
Bool prop;
|
||||||
} DUMMYRec, *DUMMYPtr;
|
} DUMMYRec, *DUMMYPtr;
|
||||||
|
|
||||||
/* The privates of the DUMMY driver */
|
/* The privates of the DUMMY driver */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/dummy/dummy_driver.c,v 1.4 2003/08/23 15:02:57 dawes Exp $ */
|
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/dummy/dummy_driver.c,v 1.5tsi Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2002, SuSE Linux AG, Author: Egbert Eich
|
* Copyright 2002, SuSE Linux AG, Author: Egbert Eich
|
||||||
@ -21,6 +21,10 @@
|
|||||||
/* All drivers using the mi colormap manipulation need this */
|
/* All drivers using the mi colormap manipulation need this */
|
||||||
#include "micmap.h"
|
#include "micmap.h"
|
||||||
|
|
||||||
|
/* identifying atom needed by magnifiers */
|
||||||
|
#include "Xatom.h"
|
||||||
|
#include "property.h"
|
||||||
|
|
||||||
#include "xf86cmap.h"
|
#include "xf86cmap.h"
|
||||||
|
|
||||||
#include "xf86fbman.h"
|
#include "xf86fbman.h"
|
||||||
@ -55,8 +59,9 @@ static Bool DUMMYScreenInit(int Index, ScreenPtr pScreen, int argc,
|
|||||||
static Bool DUMMYEnterVT(int scrnIndex, int flags);
|
static Bool DUMMYEnterVT(int scrnIndex, int flags);
|
||||||
static void DUMMYLeaveVT(int scrnIndex, int flags);
|
static void DUMMYLeaveVT(int scrnIndex, int flags);
|
||||||
static Bool DUMMYCloseScreen(int scrnIndex, ScreenPtr pScreen);
|
static Bool DUMMYCloseScreen(int scrnIndex, ScreenPtr pScreen);
|
||||||
|
static Bool DUMMYCreateWindow(WindowPtr pWin);
|
||||||
static void DUMMYFreeScreen(int scrnIndex, int flags);
|
static void DUMMYFreeScreen(int scrnIndex, int flags);
|
||||||
static int DUMMYValidMode(int scrnIndex, DisplayModePtr mode,
|
static ModeStatus DUMMYValidMode(int scrnIndex, DisplayModePtr mode,
|
||||||
Bool verbose, int flags);
|
Bool verbose, int flags);
|
||||||
static Bool DUMMYSaveScreen(ScreenPtr pScreen, int mode);
|
static Bool DUMMYSaveScreen(ScreenPtr pScreen, int mode);
|
||||||
|
|
||||||
@ -149,7 +154,7 @@ static XF86ModuleVersionInfo dummyVersRec =
|
|||||||
MODULEVENDORSTRING,
|
MODULEVENDORSTRING,
|
||||||
MODINFOSTRING1,
|
MODINFOSTRING1,
|
||||||
MODINFOSTRING2,
|
MODINFOSTRING2,
|
||||||
XF86_VERSION_CURRENT,
|
XORG_VERSION_CURRENT,
|
||||||
DUMMY_MAJOR_VERSION, DUMMY_MINOR_VERSION, DUMMY_PATCHLEVEL,
|
DUMMY_MAJOR_VERSION, DUMMY_MINOR_VERSION, DUMMY_PATCHLEVEL,
|
||||||
ABI_CLASS_VIDEODRV,
|
ABI_CLASS_VIDEODRV,
|
||||||
ABI_VIDEODRV_VERSION,
|
ABI_VIDEODRV_VERSION,
|
||||||
@ -309,10 +314,6 @@ DUMMYPreInit(ScrnInfoPtr pScrn, int flags)
|
|||||||
if (!DUMMYGetRec(pScrn)) {
|
if (!DUMMYGetRec(pScrn)) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
# define RETURN \
|
|
||||||
{ DUMMYFreeRec(pScrn);\
|
|
||||||
return FALSE;\
|
|
||||||
}
|
|
||||||
|
|
||||||
dPtr = DUMMYPTR(pScrn);
|
dPtr = DUMMYPTR(pScrn);
|
||||||
|
|
||||||
@ -471,6 +472,10 @@ DUMMYPreInit(ScrnInfoPtr pScrn, int flags)
|
|||||||
RETURN;
|
RETURN;
|
||||||
xf86LoaderReqSymLists(ramdacSymbols, NULL);
|
xf86LoaderReqSymLists(ramdacSymbols, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* We have no contiguous physical fb in physical memory */
|
||||||
|
pScrn->memPhysBase = 0;
|
||||||
|
pScrn->fbOffset = 0;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -532,6 +537,8 @@ DUMMYLoadPalette(
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ScrnInfoPtr DUMMYScrn; /* static-globalize it */
|
||||||
|
|
||||||
/* Mandatory */
|
/* Mandatory */
|
||||||
static Bool
|
static Bool
|
||||||
DUMMYScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
DUMMYScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
||||||
@ -540,7 +547,6 @@ DUMMYScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
|||||||
DUMMYPtr dPtr;
|
DUMMYPtr dPtr;
|
||||||
int ret;
|
int ret;
|
||||||
VisualPtr visual;
|
VisualPtr visual;
|
||||||
int height, width;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* we need to get the ScrnInfoRec for this screen, so let's allocate
|
* we need to get the ScrnInfoRec for this screen, so let's allocate
|
||||||
@ -548,6 +554,7 @@ DUMMYScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
|||||||
*/
|
*/
|
||||||
pScrn = xf86Screens[pScreen->myNum];
|
pScrn = xf86Screens[pScreen->myNum];
|
||||||
dPtr = DUMMYPTR(pScrn);
|
dPtr = DUMMYPTR(pScrn);
|
||||||
|
DUMMYScrn = pScrn;
|
||||||
|
|
||||||
|
|
||||||
if (!(dPtr->FBBase = xalloc(pScrn->videoRam * 1024)))
|
if (!(dPtr->FBBase = xalloc(pScrn->videoRam * 1024)))
|
||||||
@ -580,9 +587,6 @@ DUMMYScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
|||||||
* Call the framebuffer layer's ScreenInit function, and fill in other
|
* Call the framebuffer layer's ScreenInit function, and fill in other
|
||||||
* pScreen fields.
|
* pScreen fields.
|
||||||
*/
|
*/
|
||||||
width = pScrn->virtualX;
|
|
||||||
height = pScrn->virtualY;
|
|
||||||
|
|
||||||
ret = fbScreenInit(pScreen, dPtr->FBBase,
|
ret = fbScreenInit(pScreen, dPtr->FBBase,
|
||||||
pScrn->virtualX, pScrn->virtualY,
|
pScrn->virtualX, pScrn->virtualY,
|
||||||
pScrn->xDpi, pScrn->yDpi,
|
pScrn->xDpi, pScrn->yDpi,
|
||||||
@ -668,6 +672,10 @@ DUMMYScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
|||||||
dPtr->CloseScreen = pScreen->CloseScreen;
|
dPtr->CloseScreen = pScreen->CloseScreen;
|
||||||
pScreen->CloseScreen = DUMMYCloseScreen;
|
pScreen->CloseScreen = DUMMYCloseScreen;
|
||||||
|
|
||||||
|
/* Wrap the current CreateWindow function */
|
||||||
|
dPtr->CreateWindow = pScreen->CreateWindow;
|
||||||
|
pScreen->CreateWindow = DUMMYCreateWindow;
|
||||||
|
|
||||||
/* Report any unused options (only for the first generation) */
|
/* Report any unused options (only for the first generation) */
|
||||||
if (serverGeneration == 1) {
|
if (serverGeneration == 1) {
|
||||||
xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options);
|
xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options);
|
||||||
@ -753,7 +761,7 @@ DUMMYSaveScreen(ScreenPtr pScreen, int mode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Optional */
|
/* Optional */
|
||||||
static int
|
static ModeStatus
|
||||||
DUMMYValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
|
DUMMYValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
|
||||||
{
|
{
|
||||||
return(MODE_OK);
|
return(MODE_OK);
|
||||||
@ -777,3 +785,35 @@ dummyModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
|
|||||||
return(TRUE);
|
return(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Atom VFB_PROP = 0;
|
||||||
|
#define VFB_PROP_NAME "VFB_IDENT"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static Bool
|
||||||
|
DUMMYCreateWindow(WindowPtr pWin)
|
||||||
|
{
|
||||||
|
DUMMYPtr dPtr = DUMMYPTR(DUMMYScrn);
|
||||||
|
WindowPtr pWinRoot;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = dPtr->CreateWindow(pWin);
|
||||||
|
if(ret != TRUE)
|
||||||
|
return(ret);
|
||||||
|
|
||||||
|
if(dPtr->prop == FALSE) {
|
||||||
|
pWinRoot = WindowTable[DUMMYScrn->pScreen->myNum];
|
||||||
|
if (! ValidAtom(VFB_PROP))
|
||||||
|
VFB_PROP = MakeAtom(VFB_PROP_NAME, strlen(VFB_PROP_NAME), 1);
|
||||||
|
|
||||||
|
ret = ChangeWindowProperty(pWinRoot, VFB_PROP, XA_STRING,
|
||||||
|
8, PropModeReplace, (int)4, (pointer)"TRUE", FALSE);
|
||||||
|
if( ret != Success)
|
||||||
|
ErrorF("Could not set VFB root window property");
|
||||||
|
dPtr->prop = TRUE;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user