summaryrefslogtreecommitdiff
path: root/hw/kdrive/src/kdrive.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/kdrive/src/kdrive.c')
-rw-r--r--hw/kdrive/src/kdrive.c59
1 files changed, 40 insertions, 19 deletions
diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c
index 46f468a12..feeccf80e 100644
--- a/hw/kdrive/src/kdrive.c
+++ b/hw/kdrive/src/kdrive.c
@@ -97,13 +97,12 @@ KdOsFuncs *kdOsFuncs;
void
KdDisableScreen (DrvScreenPtr pScreen)
{
- KdScreenPriv(pScreen);
-
+ KdDrvScreenPriv(pScreen);
if (!pScreenPriv->enabled)
return;
//TODOif (!pScreenPriv->closed)
SetRootClip (pScreen->pScreen, FALSE);
- KdDisableColormap (pScreen);
+ // KdDisableColormap (pScreen);
if (!pScreenPriv->screen->dumb && pScreenPriv->card->cfuncs->disableAccel)
(*pScreenPriv->card->cfuncs->disableAccel) (pScreen);
if (!pScreenPriv->screen->softCursor && pScreenPriv->card->cfuncs->disableCursor)
@@ -170,7 +169,7 @@ KdDisableScreens (void)
Bool
KdEnableScreen (DrvScreenPtr pScreen)
{
- KdScreenPriv (pScreen);
+ KdDrvScreenPriv (pScreen);
if (pScreenPriv->enabled)
return TRUE;
@@ -184,7 +183,7 @@ KdEnableScreen (DrvScreenPtr pScreen)
(*pScreenPriv->card->cfuncs->enableCursor) (pScreen);
if (!pScreenPriv->screen->dumb && pScreenPriv->card->cfuncs->enableAccel)
(*pScreenPriv->card->cfuncs->enableAccel) (pScreen);
- KdEnableColormap (pScreen);
+ // KdEnableColormap (pScreen);
SetRootClip (pScreen->pScreen, TRUE);
if (pScreenPriv->card->cfuncs->dpms)
(*pScreenPriv->card->cfuncs->dpms) (pScreen, pScreenPriv->dpmsState);
@@ -723,9 +722,9 @@ KdOsInit (KdOsFuncs *pOsFuncs)
}
Bool
-KdAllocatePrivates (DrvScreenPtr pScreen)
+KdAllocatePrivates (ScreenPtr pScreen)
{
- KdPrivDrvScreenPtr pScreenPriv;
+ KdPrivScreenPtr pScreenPriv;
if (kdGeneration != serverGeneration)
kdGeneration = serverGeneration;
@@ -738,9 +737,24 @@ KdAllocatePrivates (DrvScreenPtr pScreen)
}
Bool
+KdDrvAllocatePrivates (DrvScreenPtr pScreen)
+{
+ KdPrivDrvScreenPtr pScreenPriv;
+
+ if (kdGeneration != serverGeneration)
+ kdGeneration = serverGeneration;
+
+ pScreenPriv = calloc(1, sizeof (*pScreenPriv));
+ if (!pScreenPriv)
+ return FALSE;
+ KdSetDrvScreenPriv (pScreen, pScreenPriv);
+ return TRUE;
+}
+
+Bool
KdCreateScreenResources (DrvScreenPtr pScreen)
{
- KdScreenPriv(pScreen);
+ KdDrvScreenPriv(pScreen);
KdCardInfo *card = pScreenPriv->card;
Bool ret;
@@ -759,7 +773,7 @@ KdCreateScreenResources (DrvScreenPtr pScreen)
Bool
KdCloseScreen (DrvScreenPtr pScreen)
{
- KdScreenPriv(pScreen);
+ KdDrvScreenPriv(pScreen);
KdDrvScreenInfo *screen = pScreenPriv->screen;
KdCardInfo *card = pScreenPriv->card;
Bool ret;
@@ -826,7 +840,7 @@ KdCloseScreen (DrvScreenPtr pScreen)
Bool
KdSaveScreen (DrvScreenPtr pScreen, int on)
{
- KdScreenPriv(pScreen);
+ KdDrvScreenPriv(pScreen);
int dpmsState;
#if 0
@@ -880,7 +894,7 @@ KdCreateWindow (WindowPtr pWin)
void
KdSetSubpixelOrder (DrvScreenPtr pScreen, Rotation randr)
{
- KdScreenPriv(pScreen);
+ KdDrvScreenPriv(pScreen);
KdDrvScreenInfo *screen = pScreenPriv->screen;
int subpixel_order = screen->subpixel_order;
Rotation subpixel_dir;
@@ -951,7 +965,7 @@ KdDrvScreenInit(KdDrvScreenInfo *screen, int argc, char **argv)
Bool rotated = (screen->randr & (RR_Rotate_90|RR_Rotate_270)) != 0;
int width, height, *width_mmp, *height_mmp;
- KdAllocatePrivates (pScreen);
+ KdDrvAllocatePrivates (pScreen);
pScreenPriv = KdGetDrvScreenPriv(pScreen);
@@ -997,9 +1011,6 @@ KdDrvScreenInit(KdDrvScreenInfo *screen, int argc, char **argv)
/*
* Set colormap functions
*/
- pScreen->InstallColormap = KdInstallColormap;
- pScreen->UninstallColormap = KdUninstallColormap;
- pScreen->ListInstalledColormaps = KdListInstalledColormaps;
pScreen->StoreColors = KdStoreColors;
@@ -1099,7 +1110,7 @@ KdDrvScreenInit(KdDrvScreenInfo *screen, int argc, char **argv)
pScreenPriv->enabled = TRUE;
if (!screen->softCursor && card->cfuncs->enableCursor)
(*card->cfuncs->enableCursor) (pScreen);
- KdEnableColormap (pScreen);
+ // KdEnableColormap (pScreen);
if (!screen->dumb && card->cfuncs->enableAccel)
(*card->cfuncs->enableAccel) (pScreen);
}
@@ -1197,6 +1208,8 @@ KdScreenInit(int index, ScreenPtr pScreen,
Bool rotated;
int width, height;
+ KdAllocatePrivates (pScreen);
+
if (!impedSetupScreen(index, pScreen))
return FALSE;
@@ -1217,17 +1230,23 @@ KdScreenInit(int index, ScreenPtr pScreen,
width = first->height;
height = first->width;
}
+
+ pScreen->InstallColormap = KdInstallColormap;
+ pScreen->UninstallColormap = KdUninstallColormap;
+ pScreen->ListInstalledColormaps = KdListInstalledColormaps;
+
if (!impedFinishScreenInit(pScreen, first->fb.frameBuffer, width, height,
75, 75,
first->fb.pixelStride, first->fb.bitsPerPixel))
return FALSE;
- if (!miCreateDefColormap (pScreen)) {
- return FALSE;
- }
+
pScreen->SaveScreen = KdSaveScreen;
if (first->softCursor)
miDCInitialize(pScreen, &kdPointerScreenFuncs);
+ if (!miCreateDefColormap (pScreen)) {
+ return FALSE;
+ }
}
static void
@@ -1314,6 +1333,8 @@ KdInitOutput (ScreenInfo *pScreenInfo,
if (!dixRegisterPrivateKey(&kdDrvScreenPrivateKeyRec, PRIVATE_DRV_SCREEN, 0))
return FALSE;
+ if (!dixRegisterPrivateKey(&kdScreenPrivateKeyRec, PRIVATE_SCREEN, 0))
+ return FALSE;
if (!kdCardInfo)
{