diff options
author | Adam Jackson <ajax@redhat.com> | 2014-07-29 09:27:48 -0400 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2014-07-29 09:27:48 -0400 |
commit | 9f8e49e04bce04dac5effa4716e3caaa0874f848 (patch) | |
tree | d461c52ddf091a64cec3fb5f0ad3b204a353988f | |
parent | 2650c0bf05c30183d7fd31902e96260e6b8bf028 (diff) |
shadow: shadowInit -> shadowAdd/Remove
Signed-off-by: Adam Jackson <ajax@redhat.com>
-rw-r--r-- | src/trident.h | 1 | ||||
-rw-r--r-- | src/trident_driver.c | 28 |
2 files changed, 27 insertions, 2 deletions
diff --git a/src/trident.h b/src/trident.h index 752e389..a1117a0 100644 --- a/src/trident.h +++ b/src/trident.h @@ -159,6 +159,7 @@ typedef struct { #endif CloseScreenProcPtr CloseScreen; ScreenBlockHandlerProcPtr BlockHandler; + CreateScreenResourcesProcPtr CreateScreenResources; int panelWidth; int panelHeight; unsigned int (*ddc1Read)(ScrnInfoPtr); diff --git a/src/trident_driver.c b/src/trident_driver.c index 11f31eb..3f102cb 100644 --- a/src/trident_driver.c +++ b/src/trident_driver.c @@ -2764,6 +2764,24 @@ TRIDENTRestore(ScrnInfoPtr pScrn) vgaHWProtect(pScrn, FALSE); } +static Bool +TRIDENTCreateScreenResources(ScreenPtr pScreen) +{ + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + TRIDENTPtr pTrident = TRIDENTPTR(pScrn); + Bool ret; + + pScreen->CreateScreenResources = pTrident->CreateScreenResources; + ret = pScreen->CreateScreenResources(pScreen); + pTrident->CreateScreenResources = pScreen->CreateScreenResources; + pScreen->CreateScreenResources = TRIDENTCreateScreenResources; + + if (ret) + ret = shadowAdd(pScreen, pScreen->GetScreenPixmap(pScreen), + TRIDENTShadowUpdate, NULL, 0, 0); + + return ret; +} /* Mandatory */ @@ -3088,7 +3106,10 @@ TRIDENTScreenInit(SCREEN_INIT_ARGS_DECL) } else { pTrident->RefreshArea = TRIDENTRefreshArea; } - shadowInit (pScreen, TRIDENTShadowUpdate, 0); + if (!shadowSetup(pScreen)) + return FALSE; + pTrident->CreateScreenResources = pScreen->CreateScreenResources; + pScreen->CreateScreenResources = TRIDENTCreateScreenResources; } xf86DPMSInit(pScreen, (DPMSSetProcPtr)TRIDENTDisplayPowerManagementSet, 0); @@ -3276,8 +3297,11 @@ TRIDENTCloseScreen(CLOSE_SCREEN_ARGS_DECL) } if (pTrident->CursorInfoRec) xf86DestroyCursorInfoRec(pTrident->CursorInfoRec); - if (pTrident->ShadowPtr) + if (pTrident->ShadowPtr) { + shadowRemove(pScreen, pScreen->GetScreenPixmap(pScreen)); free(pTrident->ShadowPtr); + pScreen->CreateScreenResources = pTrident->CreateScreenResources; + } if (pTrident->DGAModes) free(pTrident->DGAModes); pScrn->vtSema = FALSE; |