Cygwin/X: update for changes to shadow framebuffer
Bring Cygwin/X up to date with the change to damage-based shadow framebuffer. Register the screen bitmap as the shadow framebuffer after screen resources are created. Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
This commit is contained in:
parent
35d7602830
commit
2850f26bb2
|
@ -313,6 +313,7 @@ typedef Bool (*winReleasePrimarySurfaceProcPtr)(ScreenPtr);
|
||||||
|
|
||||||
typedef Bool (*winFinishCreateWindowsWindowProcPtr)(WindowPtr pWin);
|
typedef Bool (*winFinishCreateWindowsWindowProcPtr)(WindowPtr pWin);
|
||||||
|
|
||||||
|
typedef Bool (*winCreateScreenResourcesProc)(ScreenPtr);
|
||||||
|
|
||||||
/* Typedef for DIX wrapper functions */
|
/* Typedef for DIX wrapper functions */
|
||||||
typedef int (*winDispatchProcPtr) (ClientPtr);
|
typedef int (*winDispatchProcPtr) (ClientPtr);
|
||||||
|
@ -563,6 +564,8 @@ typedef struct _winPrivScreenRec
|
||||||
winCreatePrimarySurfaceProcPtr pwinCreatePrimarySurface;
|
winCreatePrimarySurfaceProcPtr pwinCreatePrimarySurface;
|
||||||
winReleasePrimarySurfaceProcPtr pwinReleasePrimarySurface;
|
winReleasePrimarySurfaceProcPtr pwinReleasePrimarySurface;
|
||||||
|
|
||||||
|
winCreateScreenResourcesProc pwinCreateScreenResources;
|
||||||
|
|
||||||
#ifdef XWIN_MULTIWINDOW
|
#ifdef XWIN_MULTIWINDOW
|
||||||
/* Window Procedures for MultiWindow mode */
|
/* Window Procedures for MultiWindow mode */
|
||||||
winFinishCreateWindowsWindowProcPtr pwinFinishCreateWindowsWindow;
|
winFinishCreateWindowsWindowProcPtr pwinFinishCreateWindowsWindow;
|
||||||
|
|
|
@ -244,6 +244,25 @@ winScreenInit (int index,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Bool
|
||||||
|
winCreateScreenResources(ScreenPtr pScreen)
|
||||||
|
{
|
||||||
|
winScreenPriv(pScreen);
|
||||||
|
Bool result;
|
||||||
|
|
||||||
|
result = pScreenPriv->pwinCreateScreenResources(pScreen);
|
||||||
|
|
||||||
|
/* Now the screen bitmap has been wrapped in a pixmap,
|
||||||
|
add that to the Shadow framebuffer */
|
||||||
|
if (!shadowAdd(pScreen, pScreen->devPrivate,
|
||||||
|
pScreenPriv->pwinShadowUpdate, NULL, 0, 0))
|
||||||
|
{
|
||||||
|
ErrorF ("winCreateScreenResources - shadowAdd () failed\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/* See Porting Layer Definition - p. 20 */
|
/* See Porting Layer Definition - p. 20 */
|
||||||
Bool
|
Bool
|
||||||
|
@ -427,15 +446,18 @@ winFinishScreenInitFB (int index,
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
#if CYGDEBUG
|
#if CYGDEBUG
|
||||||
winDebug ("winFinishScreenInitFB - Calling shadowInit ()\n");
|
winDebug ("winFinishScreenInitFB - Calling shadowSetup ()\n");
|
||||||
#endif
|
#endif
|
||||||
if (!shadowInit (pScreen,
|
if (!shadowSetup(pScreen))
|
||||||
pScreenPriv->pwinShadowUpdate,
|
|
||||||
NULL))
|
|
||||||
{
|
{
|
||||||
ErrorF ("winFinishScreenInitFB - shadowInit () failed\n");
|
ErrorF ("winFinishScreenInitFB - shadowSetup () failed\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Wrap CreateScreenResources so we can add the screen pixmap
|
||||||
|
to the Shadow framebuffer after it's been created */
|
||||||
|
pScreenPriv->pwinCreateScreenResources = pScreen->CreateScreenResources;
|
||||||
|
pScreen->CreateScreenResources = winCreateScreenResources;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XWIN_MULTIWINDOWEXTWM
|
#ifdef XWIN_MULTIWINDOWEXTWM
|
||||||
|
|
|
@ -508,7 +508,7 @@ winShadowUpdateDD (ScreenPtr pScreen,
|
||||||
{
|
{
|
||||||
winScreenPriv(pScreen);
|
winScreenPriv(pScreen);
|
||||||
winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
|
winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
|
||||||
RegionPtr damage = &pBuf->damage;
|
RegionPtr damage = shadowDamage(pBuf);
|
||||||
HRESULT ddrval = DD_OK;
|
HRESULT ddrval = DD_OK;
|
||||||
RECT rcDest, rcSrc;
|
RECT rcDest, rcSrc;
|
||||||
POINT ptOrigin;
|
POINT ptOrigin;
|
||||||
|
|
|
@ -584,7 +584,7 @@ winShadowUpdateDDNL (ScreenPtr pScreen,
|
||||||
{
|
{
|
||||||
winScreenPriv(pScreen);
|
winScreenPriv(pScreen);
|
||||||
winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
|
winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
|
||||||
RegionPtr damage = &pBuf->damage;
|
RegionPtr damage = shadowDamage(pBuf);
|
||||||
HRESULT ddrval = DD_OK;
|
HRESULT ddrval = DD_OK;
|
||||||
RECT rcDest, rcSrc;
|
RECT rcDest, rcSrc;
|
||||||
POINT ptOrigin;
|
POINT ptOrigin;
|
||||||
|
|
|
@ -498,7 +498,7 @@ winShadowUpdateGDI (ScreenPtr pScreen,
|
||||||
{
|
{
|
||||||
winScreenPriv(pScreen);
|
winScreenPriv(pScreen);
|
||||||
winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
|
winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
|
||||||
RegionPtr damage = &pBuf->damage;
|
RegionPtr damage = shadowDamage(pBuf);
|
||||||
DWORD dwBox = REGION_NUM_RECTS (damage);
|
DWORD dwBox = REGION_NUM_RECTS (damage);
|
||||||
BoxPtr pBox = REGION_RECTS (damage);
|
BoxPtr pBox = REGION_RECTS (damage);
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user