Lines Matching defs:pCompositor

34 static int crVrScrCompositorRectsAssignBuffer(PVBOXVR_SCR_COMPOSITOR pCompositor, uint32_t cRects)
38 if (pCompositor->cRectsBuffer >= cRects)
40 pCompositor->cRects = cRects;
44 if (pCompositor->cRectsBuffer)
46 Assert(pCompositor->paSrcRects);
47 RTMemFree(pCompositor->paSrcRects);
48 pCompositor->paSrcRects = NULL;
49 Assert(pCompositor->paDstRects);
50 RTMemFree(pCompositor->paDstRects);
51 pCompositor->paDstRects = NULL;
52 Assert(pCompositor->paDstUnstretchedRects);
53 RTMemFree(pCompositor->paDstUnstretchedRects);
54 pCompositor->paDstUnstretchedRects = NULL;
58 Assert(!pCompositor->paSrcRects);
59 Assert(!pCompositor->paDstRects);
60 Assert(!pCompositor->paDstUnstretchedRects);
63 pCompositor->paSrcRects = (PRTRECT)RTMemAlloc(sizeof(*pCompositor->paSrcRects) * cRects);
64 if (pCompositor->paSrcRects)
66 pCompositor->paDstRects = (PRTRECT)RTMemAlloc(sizeof(*pCompositor->paDstRects) * cRects);
67 if (pCompositor->paDstRects)
69 pCompositor->paDstUnstretchedRects = (PRTRECT)RTMemAlloc(sizeof(*pCompositor->paDstUnstretchedRects) * cRects);
70 if (pCompositor->paDstUnstretchedRects)
72 pCompositor->cRects = cRects;
73 pCompositor->cRectsBuffer = cRects;
77 RTMemFree(pCompositor->paDstRects);
78 pCompositor->paDstRects = NULL;
84 RTMemFree(pCompositor->paSrcRects);
85 pCompositor->paSrcRects = NULL;
92 pCompositor->cRects = VBOXVR_SCR_COMPOSITOR_RECTS_UNDEFINED;
93 pCompositor->cRectsBuffer = 0;
98 static void crVrScrCompositorRectsInvalidate(PVBOXVR_SCR_COMPOSITOR pCompositor)
100 pCompositor->cRects = VBOXVR_SCR_COMPOSITOR_RECTS_UNDEFINED;
103 static DECLCALLBACK(bool) crVrScrCompositorRectsCounterCb(PVBOXVR_COMPOSITOR pCompositor, PVBOXVR_COMPOSITOR_ENTRY pEntry,
124 PVBOXVR_SCR_COMPOSITOR pCompositor = VBOXVR_SCR_COMPOSITOR_FROM_COMPOSITOR(pCCompositor);
151 if (pCompositor->StretchX != 1. || pCompositor->StretchY != 1.)
155 if (pCompositor->StretchX != 1.)
157 pEntry->paDstRects[i].xLeft = (int32_t)(pEntry->paDstUnstretchedRects[i].xLeft * pCompositor->StretchX);
158 pEntry->paDstRects[i].xRight = (int32_t)(pEntry->paDstUnstretchedRects[i].xRight * pCompositor->StretchX);
160 if (pCompositor->StretchY != 1.)
162 pEntry->paDstRects[i].yTop = (int32_t)(pEntry->paDstUnstretchedRects[i].yTop * pCompositor->StretchY);
163 pEntry->paDstRects[i].yBottom = (int32_t)(pEntry->paDstUnstretchedRects[i].yBottom * pCompositor->StretchY);
174 bool canZeroX = (pCompositor->StretchX < 1.);
175 bool canZeroY = (pCompositor->StretchY < 1.);
202 pCompositor->cRects -= cDiff;
218 PVBOXVR_SCR_COMPOSITOR pCompositor = const_cast<PVBOXVR_SCR_COMPOSITOR>(pcCompositor);
220 if (pCompositor->cRects != VBOXVR_SCR_COMPOSITOR_RECTS_UNDEFINED)
224 VBoxVrCompositorVisit(&pCompositor->Compositor, crVrScrCompositorRectsCounterCb, &cRects);
228 pCompositor->cRects = 0;
232 int rc = crVrScrCompositorRectsAssignBuffer(pCompositor, cRects);
237 AssignerData.paSrcRects = pCompositor->paSrcRects;
238 AssignerData.paDstRects = pCompositor->paDstRects;
239 AssignerData.paDstUnstretchedRects = pCompositor->paDstUnstretchedRects;
240 AssignerData.cRects = pCompositor->cRects;
241 VBoxVrCompositorVisit(&pCompositor->Compositor, crVrScrCompositorRectsAssignerCb, &AssignerData);
247 static int crVrScrCompositorEntryRegionsAdd(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry,
253 int rc = VBoxVrCompositorEntryRegionsAdd(&pCompositor->Compositor, pEntry ? &pEntry->Ce : NULL, cRegions,
264 crVrScrCompositorRectsInvalidate(pCompositor);
269 CrVrScrCompositorEntrySetAllChanged(pCompositor, true);
282 static int crVrScrCompositorEntryRegionsSet(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry,
286 int rc = VBoxVrCompositorEntryRegionsSet(&pCompositor->Compositor, &pEntry->Ce, cRegions, paRegions, &fChanged);
295 CrVrScrCompositorEntrySetAllChanged(pCompositor, true);
303 crVrScrCompositorRectsInvalidate(pCompositor);
312 static int crVrScrCompositorEntryPositionSet(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry,
321 int rc = VBoxVrCompositorEntryRegionsTranslate(&pCompositor->Compositor, &pEntry->Ce, pPos->x - pEntry->Rect.xLeft,
329 crVrScrCompositorRectsInvalidate(pCompositor);
341 static int crVrScrCompositorEntryEnsureRegionsBounds(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry,
345 Rect.xLeft = RT_MAX(pCompositor->Rect.xLeft, pEntry->Rect.xLeft);
346 Rect.yTop = RT_MAX(pCompositor->Rect.yTop, pEntry->Rect.yTop);
347 Rect.xRight = RT_MIN(pCompositor->Rect.xRight, pEntry->Rect.xRight);
348 Rect.yBottom = RT_MIN(pCompositor->Rect.yBottom, pEntry->Rect.yBottom);
354 int rc = CrVrScrCompositorEntryRegionsIntersect(pCompositor, pEntry, 1, &Rect, &fChanged);
363 VBOXVREGDECL(int) CrVrScrCompositorEntryRegionsAdd(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry,
374 rc = crVrScrCompositorEntryPositionSet(pCompositor, pEntry, pPos, &fPosChanged);
407 rc = crVrScrCompositorEntryRegionsAdd(pCompositor, pEntry, cRegions, paRegions, ppReplacedScrEntry, &fChangeFlags);
417 rc = crVrScrCompositorEntryEnsureRegionsBounds(pCompositor, pEntry, &fAdjusted);
463 VBOXVREGDECL(int) CrVrScrCompositorEntryRectSet(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry,
472 int rc = crVrScrCompositorEntryPositionSet(pCompositor, pEntry, &Point, &fChanged);
484 rc = crVrScrCompositorEntryEnsureRegionsBounds(pCompositor, pEntry, NULL);
494 VBOXVREGDECL(int) CrVrScrCompositorEntryTexAssign(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry,
508 VBOXVREGDECL(int) CrVrScrCompositorEntryRegionsSet(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry,
516 int rc = CrVrScrCompositorEntryRemove(pCompositor, pEntry);
525 rc = crVrScrCompositorEntryPositionSet(pCompositor, pEntry, pPos, &fPosChanged);
558 rc = crVrScrCompositorEntryRegionsSet(pCompositor, pEntry, cRegions, paRegions, &fChanged);
563 rc = crVrScrCompositorEntryEnsureRegionsBounds(pCompositor, pEntry, NULL);
583 VBOXVREGDECL(int) CrVrScrCompositorEntryListIntersect(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry,
587 int rc = VBoxVrCompositorEntryListIntersect(&pCompositor->Compositor, &pEntry->Ce, pList2, &fChanged);
597 crVrScrCompositorRectsInvalidate(pCompositor);
606 VBOXVREGDECL(int) CrVrScrCompositorEntryRegionsIntersect(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry,
610 int rc = VBoxVrCompositorEntryRegionsIntersect(&pCompositor->Compositor, &pEntry->Ce, cRegions, paRegions, &fChanged);
618 crVrScrCompositorRectsInvalidate(pCompositor);
626 VBOXVREGDECL(int) CrVrScrCompositorEntryListIntersectAll(PVBOXVR_SCR_COMPOSITOR pCompositor, PCVBOXVR_LIST pList2, bool *pfChanged)
629 CrVrScrCompositorIterInit(pCompositor, &Iter);
637 int tmpRc = CrVrScrCompositorEntryListIntersect(pCompositor, pEntry, pList2, &fTmpChanged);
655 VBOXVREGDECL(int) CrVrScrCompositorEntryRegionsIntersectAll(PVBOXVR_SCR_COMPOSITOR pCompositor, uint32_t cRegions,
659 CrVrScrCompositorIterInit(pCompositor, &Iter);
667 int tmpRc = CrVrScrCompositorEntryRegionsIntersect(pCompositor, pEntry, cRegions, paRegions, &fTmpChanged);
685 VBOXVREGDECL(int) CrVrScrCompositorEntryPosSet(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry,
688 int rc = crVrScrCompositorEntryPositionSet(pCompositor, pEntry, pPos, NULL);
695 rc = crVrScrCompositorEntryEnsureRegionsBounds(pCompositor, pEntry, NULL);
706 VBOXVREGDECL(int) CrVrScrCompositorEntryRegionsGet(PCVBOXVR_SCR_COMPOSITOR pCompositor,
713 int rc = crVrScrCompositorRectsCheckInit(pCompositor);
721 Assert(pCompositor->cRects != VBOXVR_SCR_COMPOSITOR_RECTS_UNDEFINED);
734 VBOXVREGDECL(uint32_t) CrVrScrCompositorEntryFlagsCombinedGet(PCVBOXVR_SCR_COMPOSITOR pCompositor,
737 return CRBLT_FOP_COMBINE(pCompositor->fFlags, pEntry->fFlags);
766 VBOXVREGDECL(int) CrVrScrCompositorEntryRemove(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry)
768 if (!VBoxVrCompositorEntryRemove(&pCompositor->Compositor, &pEntry->Ce))
774 crVrScrCompositorRectsInvalidate(pCompositor);
778 VBOXVREGDECL(bool) CrVrScrCompositorEntryReplace(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry,
783 if (!VBoxVrCompositorEntryReplace(&pCompositor->Compositor, &pEntry->Ce, &pNewEntry->Ce))
793 static DECLCALLBACK(void) crVrScrCompositorEntryReleasedCB(PCVBOXVR_COMPOSITOR pCompositor,
817 PVBOXVR_SCR_COMPOSITOR pCConpositor = VBOXVR_SCR_COMPOSITOR_FROM_COMPOSITOR(pCompositor);
822 VBOXVREGDECL(int) CrVrScrCompositorRectSet(PVBOXVR_SCR_COMPOSITOR pCompositor, PCRTRECT pRect, bool *pfChanged)
824 if (!memcmp(&pCompositor->Rect, pRect, sizeof(pCompositor->Rect)))
831 pCompositor->Rect = *pRect;
834 CrVrScrCompositorIterInit(pCompositor, &Iter);
838 int rc = crVrScrCompositorEntryEnsureRegionsBounds(pCompositor, pEntry, NULL);
849 VBOXVREGDECL(void) CrVrScrCompositorInit(PVBOXVR_SCR_COMPOSITOR pCompositor, PCRTRECT pRect)
851 memset(pCompositor, 0, sizeof(*pCompositor));
852 VBoxVrCompositorInit(&pCompositor->Compositor, crVrScrCompositorEntryReleasedCB);
853 pCompositor->fFlags = CRBLT_F_LINEAR | CRBLT_F_INVERT_YCOORDS;
855 pCompositor->Rect = *pRect;
857 pCompositor->StretchX = 1.0;
858 pCompositor->StretchY = 1.0;
862 VBOXVREGDECL(void) CrVrScrCompositorRegionsClear(PVBOXVR_SCR_COMPOSITOR pCompositor, bool *pfChanged)
865 CrVrScrCompositorEntrySetAllChanged(pCompositor, true);
866 VBoxVrCompositorRegionsClear(&pCompositor->Compositor, pfChanged);
867 crVrScrCompositorRectsInvalidate(pCompositor);
870 VBOXVREGDECL(void) CrVrScrCompositorClear(PVBOXVR_SCR_COMPOSITOR pCompositor)
872 CrVrScrCompositorRegionsClear(pCompositor, NULL);
873 if (pCompositor->paDstRects)
875 RTMemFree(pCompositor->paDstRects);
876 pCompositor->paDstRects = NULL;
878 if (pCompositor->paSrcRects)
880 RTMemFree(pCompositor->paSrcRects);
881 pCompositor->paSrcRects = NULL;
883 if (pCompositor->paDstUnstretchedRects)
885 RTMemFree(pCompositor->paDstUnstretchedRects);
886 pCompositor->paDstUnstretchedRects = NULL;
889 pCompositor->cRects = 0;
890 pCompositor->cRectsBuffer = 0;
893 VBOXVREGDECL(void) CrVrScrCompositorEntrySetAllChanged(PVBOXVR_SCR_COMPOSITOR pCompositor, bool fChanged)
897 CrVrScrCompositorIterInit(pCompositor, &CIter);
906 VBOXVREGDECL(void) CrVrScrCompositorSetStretching(PVBOXVR_SCR_COMPOSITOR pCompositor, float StretchX, float StretchY)
908 if (pCompositor->StretchX == StretchX && pCompositor->StretchY == StretchY)
911 pCompositor->StretchX = StretchX;
912 pCompositor->StretchY = StretchY;
913 crVrScrCompositorRectsInvalidate(pCompositor);
914 CrVrScrCompositorEntrySetAllChanged(pCompositor, true);
919 VBOXVREGDECL(int) CrVrScrCompositorRegionsGet(PCVBOXVR_SCR_COMPOSITOR pCompositor, uint32_t *pcRegions,
923 int rc = crVrScrCompositorRectsCheckInit(pCompositor);
930 Assert(pCompositor->cRects != VBOXVR_SCR_COMPOSITOR_RECTS_UNDEFINED);
932 *pcRegions = pCompositor->cRects;
934 *ppaSrcRegions = pCompositor->paSrcRects;
936 *ppaDstRegions = pCompositor->paDstRects;
938 *ppaDstUnstretchedRects = pCompositor->paDstUnstretchedRects;
953 PVBOXVR_SCR_COMPOSITOR pCompositor = VBOXVR_SCR_COMPOSITOR_FROM_COMPOSITOR(pCCompositor);
955 return pData->pfnVisitor(pCompositor, pEntry, pData->pvVisitor);
958 VBOXVREGDECL(void) CrVrScrCompositorVisit(PVBOXVR_SCR_COMPOSITOR pCompositor, PFNVBOXVRSCRCOMPOSITOR_VISITOR pfnVisitor,
964 VBoxVrCompositorVisit(&pCompositor->Compositor, crVrScrCompositorVisitCb, &Data);
967 VBOXVREGDECL(int) CrVrScrCompositorClone(PCVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR pDstCompositor,
971 CrVrScrCompositorInit(pDstCompositor, CrVrScrCompositorRectGet(pCompositor));
974 CrVrScrCompositorConstIterInit(pCompositor, &CIter);
982 rc = CrVrScrCompositorEntryRegionsGet(pCompositor, pEntry, &cRects, NULL, NULL, &paRects);
1007 VBOXVREGDECL(int) CrVrScrCompositorIntersectList(PVBOXVR_SCR_COMPOSITOR pCompositor, PCVBOXVR_LIST pVr, bool *pfChanged)
1011 CrVrScrCompositorIterInit(pCompositor, &CIter);
1019 rc = CrVrScrCompositorEntryListIntersect(pCompositor, pEntry, pVr, &fCurChanged);
1035 VBOXVREGDECL(int) CrVrScrCompositorIntersectedList(PCVBOXVR_SCR_COMPOSITOR pCompositor, PCVBOXVR_LIST pVr,
1040 int rc = CrVrScrCompositorClone(pCompositor, pDstCompositor, pfnEntryFor, pvEntryFor);