Compare commits
2 Commits
pr/damage-
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
d403cbd25c | ||
|
a46fd9f16e |
|
@ -370,6 +370,23 @@ ddxProcessArgument(int argc, char **argv, int i)
|
||||||
return KdProcessArgument(argc, argv, i);
|
return KdProcessArgument(argc, argv, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
EphyrInit(void)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* make sure at least one screen
|
||||||
|
* has been added to the system.
|
||||||
|
*/
|
||||||
|
if (!KdCardInfoLast()) {
|
||||||
|
processScreenArg("640x480", NULL);
|
||||||
|
}
|
||||||
|
return hostx_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
KdOsFuncs EphyrOsFuncs = {
|
||||||
|
.Init = EphyrInit,
|
||||||
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
OsVendorInit(void)
|
OsVendorInit(void)
|
||||||
{
|
{
|
||||||
|
@ -381,12 +398,7 @@ OsVendorInit(void)
|
||||||
if (hostx_want_host_cursor())
|
if (hostx_want_host_cursor())
|
||||||
ephyrFuncs.initCursor = &ephyrCursorInit;
|
ephyrFuncs.initCursor = &ephyrCursorInit;
|
||||||
|
|
||||||
if (serverGeneration == 1) {
|
KdOsInit(&EphyrOsFuncs);
|
||||||
if (!KdCardInfoLast()) {
|
|
||||||
processScreenArg("640x480", NULL);
|
|
||||||
}
|
|
||||||
hostx_init();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
KdCardFuncs ephyrFuncs = {
|
KdCardFuncs ephyrFuncs = {
|
||||||
|
|
|
@ -91,6 +91,14 @@ const char *kdGlobalXkbLayout = NULL;
|
||||||
const char *kdGlobalXkbVariant = NULL;
|
const char *kdGlobalXkbVariant = NULL;
|
||||||
const char *kdGlobalXkbOptions = NULL;
|
const char *kdGlobalXkbOptions = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Carry arguments from InitOutput through driver initialization
|
||||||
|
* to KdScreenInit
|
||||||
|
*/
|
||||||
|
|
||||||
|
KdOsFuncs *kdOsFuncs = NULL;
|
||||||
|
|
||||||
void
|
void
|
||||||
KdDisableScreen(ScreenPtr pScreen)
|
KdDisableScreen(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
|
@ -517,6 +525,19 @@ KdProcessArgument(int argc, char **argv, int i)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
KdOsInit(KdOsFuncs * pOsFuncs)
|
||||||
|
{
|
||||||
|
kdOsFuncs = pOsFuncs;
|
||||||
|
if (pOsFuncs) {
|
||||||
|
if (serverGeneration == 1) {
|
||||||
|
KdDoSwitchCmd("start");
|
||||||
|
if (pOsFuncs->Init)
|
||||||
|
(*pOsFuncs->Init) ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
KdAllocatePrivates(ScreenPtr pScreen)
|
KdAllocatePrivates(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
|
|
|
@ -278,6 +278,16 @@ int KdAddConfigKeyboard(char *pointer);
|
||||||
int KdAddKeyboard(KdKeyboardInfo * ki);
|
int KdAddKeyboard(KdKeyboardInfo * ki);
|
||||||
void KdRemoveKeyboard(KdKeyboardInfo * ki);
|
void KdRemoveKeyboard(KdKeyboardInfo * ki);
|
||||||
|
|
||||||
|
typedef struct _KdOsFuncs {
|
||||||
|
int (*Init) (void); /* Only called when the X server is started, when serverGeneration == 1 */
|
||||||
|
void (*Enable) (void);
|
||||||
|
Bool (*SpecialKey) (KeySym);
|
||||||
|
void (*Disable) (void);
|
||||||
|
void (*Fini) (void);
|
||||||
|
void (*pollEvents) (void);
|
||||||
|
void (*Bell) (int, int, int);
|
||||||
|
} KdOsFuncs;
|
||||||
|
|
||||||
typedef struct _KdPointerMatrix {
|
typedef struct _KdPointerMatrix {
|
||||||
int matrix[2][3];
|
int matrix[2][3];
|
||||||
} KdPointerMatrix;
|
} KdPointerMatrix;
|
||||||
|
@ -289,6 +299,8 @@ extern DevPrivateKeyRec kdScreenPrivateKeyRec;
|
||||||
extern Bool kdEmulateMiddleButton;
|
extern Bool kdEmulateMiddleButton;
|
||||||
extern Bool kdDisableZaphod;
|
extern Bool kdDisableZaphod;
|
||||||
|
|
||||||
|
extern KdOsFuncs *kdOsFuncs;
|
||||||
|
|
||||||
#define KdGetScreenPriv(pScreen) ((KdPrivScreenPtr) \
|
#define KdGetScreenPriv(pScreen) ((KdPrivScreenPtr) \
|
||||||
dixLookupPrivate(&(pScreen)->devPrivates, kdScreenPrivateKey))
|
dixLookupPrivate(&(pScreen)->devPrivates, kdScreenPrivateKey))
|
||||||
#define KdSetScreenPriv(pScreen,v) \
|
#define KdSetScreenPriv(pScreen,v) \
|
||||||
|
@ -345,6 +357,9 @@ void
|
||||||
int
|
int
|
||||||
KdProcessArgument(int argc, char **argv, int i);
|
KdProcessArgument(int argc, char **argv, int i);
|
||||||
|
|
||||||
|
void
|
||||||
|
KdOsInit(KdOsFuncs * pOsFuncs);
|
||||||
|
|
||||||
void
|
void
|
||||||
KdOsAddInputDrivers(void);
|
KdOsAddInputDrivers(void);
|
||||||
|
|
||||||
|
|
|
@ -1714,8 +1714,7 @@ DamageCreate(DamageReportFunc damageReport,
|
||||||
pDamage->damageDestroy = damageDestroy;
|
pDamage->damageDestroy = damageDestroy;
|
||||||
pDamage->pScreen = pScreen;
|
pDamage->pScreen = pScreen;
|
||||||
|
|
||||||
if (pScrPriv->funcs.Create)
|
(*pScrPriv->funcs.Create) (pDamage);
|
||||||
pScrPriv->funcs.Create (pDamage);
|
|
||||||
|
|
||||||
return pDamage;
|
return pDamage;
|
||||||
}
|
}
|
||||||
|
@ -1756,8 +1755,7 @@ DamageRegister(DrawablePtr pDrawable, DamagePtr pDamage)
|
||||||
pDamage->isWindow = FALSE;
|
pDamage->isWindow = FALSE;
|
||||||
pDamage->pDrawable = pDrawable;
|
pDamage->pDrawable = pDrawable;
|
||||||
damageInsertDamage(getDrawableDamageRef(pDrawable), pDamage);
|
damageInsertDamage(getDrawableDamageRef(pDrawable), pDamage);
|
||||||
if (pScrPriv->funcs.Register)
|
(*pScrPriv->funcs.Register) (pDrawable, pDamage);
|
||||||
pScrPriv->funcs.Register (pDrawable, pDamage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1776,8 +1774,7 @@ DamageUnregister(DamagePtr pDamage)
|
||||||
|
|
||||||
damageScrPriv(pScreen);
|
damageScrPriv(pScreen);
|
||||||
|
|
||||||
if (pScrPriv->funcs.Unregister)
|
(*pScrPriv->funcs.Unregister) (pDrawable, pDamage);
|
||||||
pScrPriv->funcs.Unregister (pDrawable, pDamage);
|
|
||||||
|
|
||||||
if (pDrawable->type == DRAWABLE_WINDOW) {
|
if (pDrawable->type == DRAWABLE_WINDOW) {
|
||||||
WindowPtr pWindow = (WindowPtr) pDrawable;
|
WindowPtr pWindow = (WindowPtr) pDrawable;
|
||||||
|
@ -1820,10 +1817,7 @@ DamageDestroy(DamagePtr pDamage)
|
||||||
|
|
||||||
if (pDamage->damageDestroy)
|
if (pDamage->damageDestroy)
|
||||||
(*pDamage->damageDestroy) (pDamage, pDamage->closure);
|
(*pDamage->damageDestroy) (pDamage, pDamage->closure);
|
||||||
|
(*pScrPriv->funcs.Destroy) (pDamage);
|
||||||
if (pScrPriv->funcs.Destroy)
|
|
||||||
pScrPriv->funcs.Destroy (pDamage);
|
|
||||||
|
|
||||||
RegionUninit(&pDamage->damage);
|
RegionUninit(&pDamage->damage);
|
||||||
RegionUninit(&pDamage->pendingDamage);
|
RegionUninit(&pDamage->pendingDamage);
|
||||||
free(pDamage);
|
free(pDamage);
|
||||||
|
|
|
@ -46,21 +46,6 @@ typedef void (*DamageScreenRegisterFunc) (DrawablePtr, DamagePtr);
|
||||||
typedef void (*DamageScreenUnregisterFunc) (DrawablePtr, DamagePtr);
|
typedef void (*DamageScreenUnregisterFunc) (DrawablePtr, DamagePtr);
|
||||||
typedef void (*DamageScreenDestroyFunc) (DamagePtr);
|
typedef void (*DamageScreenDestroyFunc) (DamagePtr);
|
||||||
|
|
||||||
/* @public
|
|
||||||
*
|
|
||||||
* @brief Driver callbacks for getting notified on several damage calls
|
|
||||||
*
|
|
||||||
* The pointer to this struct can be obtained via DamageGetScreenFuncs().
|
|
||||||
* Drivers can inject themselves here, in order to get notified on
|
|
||||||
* DamageCreate(), DamageRegister(), DamageUnregister(), DamageDestroy().
|
|
||||||
*
|
|
||||||
* The fields may be assigned to NULL, if no action at all is wanted.
|
|
||||||
* (by default assigned to default implementations)
|
|
||||||
*
|
|
||||||
* This should ONLY be touched by video drivers, nobody else.
|
|
||||||
*
|
|
||||||
* So far the only one using it is the proprietary NVidia driver.
|
|
||||||
*/
|
|
||||||
typedef struct _damageScreenFuncs {
|
typedef struct _damageScreenFuncs {
|
||||||
DamageScreenCreateFunc Create;
|
DamageScreenCreateFunc Create;
|
||||||
DamageScreenRegisterFunc Register;
|
DamageScreenRegisterFunc Register;
|
||||||
|
|
Loading…
Reference in New Issue