mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-05-05 09:58:21 +02:00
xf86/xv: Only register PostValidateTree hook when there is work to do
If none of Xv ports were affected by window tree modifications we don't want scan the port list. To avoid useless scanning of port list PostValidateTree hook is only registered when ClipNotify was called for any port. Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com> Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
This commit is contained in:
parent
ddf32df5cc
commit
5d020c3135
1 changed files with 11 additions and 7 deletions
|
|
@ -100,6 +100,8 @@ static void xf86XVWindowExposures(WindowPtr pWin, RegionPtr r1, RegionPtr r2);
|
|||
static void xf86XVPostValidateTree(WindowPtr pWin, WindowPtr pLayerWin, VTKind kind);
|
||||
static void xf86XVClipNotify(WindowPtr pWin, int dx, int dy);
|
||||
|
||||
#define PostValidateTreeUndefined ((PostValidateTreeProcPtr)-1)
|
||||
|
||||
/* ScrnInfoRec functions */
|
||||
|
||||
static Bool xf86XVEnterVT(int, int);
|
||||
|
|
@ -283,7 +285,7 @@ xf86XVScreenInit(
|
|||
|
||||
ScreenPriv->DestroyWindow = pScreen->DestroyWindow;
|
||||
ScreenPriv->WindowExposures = pScreen->WindowExposures;
|
||||
ScreenPriv->PostValidateTree = pScreen->PostValidateTree;
|
||||
ScreenPriv->PostValidateTree = PostValidateTreeUndefined;
|
||||
ScreenPriv->ClipNotify = pScreen->ClipNotify;
|
||||
ScreenPriv->EnterVT = pScrn->EnterVT;
|
||||
ScreenPriv->LeaveVT = pScrn->LeaveVT;
|
||||
|
|
@ -292,7 +294,6 @@ xf86XVScreenInit(
|
|||
|
||||
pScreen->DestroyWindow = xf86XVDestroyWindow;
|
||||
pScreen->WindowExposures = xf86XVWindowExposures;
|
||||
pScreen->PostValidateTree = xf86XVPostValidateTree;
|
||||
pScreen->ClipNotify = xf86XVClipNotify;
|
||||
pScrn->EnterVT = xf86XVEnterVT;
|
||||
pScrn->LeaveVT = xf86XVLeaveVT;
|
||||
|
|
@ -1165,12 +1166,11 @@ xf86XVPostValidateTree(WindowPtr pWin, WindowPtr pLayerWin, VTKind kind)
|
|||
|
||||
xf86XVReputOrStopAllPorts(pScrn, TRUE);
|
||||
|
||||
if (ScreenPriv->PostValidateTree) {
|
||||
pScreen->PostValidateTree = ScreenPriv->PostValidateTree;
|
||||
pScreen->PostValidateTree = ScreenPriv->PostValidateTree;
|
||||
if (pScreen->PostValidateTree) {
|
||||
(*pScreen->PostValidateTree)(pWin, pLayerWin, kind);
|
||||
ScreenPriv->PostValidateTree = pScreen->PostValidateTree;
|
||||
pScreen->PostValidateTree = xf86XVPostValidateTree;
|
||||
}
|
||||
ScreenPriv->PostValidateTree = PostValidateTreeUndefined;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -1247,6 +1247,11 @@ xf86XVClipNotify(WindowPtr pWin, int dx, int dy)
|
|||
|
||||
pPriv->clipChanged = TRUE;
|
||||
|
||||
if (ScreenPriv->PostValidateTree == PostValidateTreeUndefined) {
|
||||
ScreenPriv->PostValidateTree = pScreen->PostValidateTree;
|
||||
pScreen->PostValidateTree = xf86XVPostValidateTree;
|
||||
}
|
||||
|
||||
WinPriv = WinPriv->next;
|
||||
}
|
||||
|
||||
|
|
@ -1274,7 +1279,6 @@ xf86XVCloseScreen(int i, ScreenPtr pScreen)
|
|||
|
||||
pScreen->DestroyWindow = ScreenPriv->DestroyWindow;
|
||||
pScreen->WindowExposures = ScreenPriv->WindowExposures;
|
||||
pScreen->PostValidateTree = ScreenPriv->PostValidateTree;
|
||||
pScreen->ClipNotify = ScreenPriv->ClipNotify;
|
||||
|
||||
pScrn->EnterVT = ScreenPriv->EnterVT;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue