int CrFbDisplayBase::fbSynchAddAllEntries() { VBOXVR_SCR_COMPOSITOR_CONST_ITERATOR Iter; const VBOXVR_SCR_COMPOSITOR_ENTRY *pEntry; CrVrScrCompositorConstIterInit(CrFbGetCompositor(mpFb), &Iter); int rc = VINF_SUCCESS; CrFbVisitCreatedEntries(mpFb, entriesCreateCb, this); while ((pEntry = CrVrScrCompositorConstIterNext(&Iter)) != NULL) { HCR_FRAMEBUFFER_ENTRY hEntry = CrFbEntryFromCompositorEntry(pEntry); rc = EntryAdded(mpFb, hEntry); if (!RT_SUCCESS(rc)) { WARN(("err")); EntryDestroyed(mpFb, hEntry); break; } } return rc; }
bool CrFbDisplayWindow::isVisible() { HCR_FRAMEBUFFER hFb = getFramebuffer(); if (!hFb) return false; const struct VBOXVR_SCR_COMPOSITOR* pCompositor = CrFbGetCompositor(hFb); return !CrVrScrCompositorIsEmpty(pCompositor); }
int CrFbDisplayWindow::windowSetCompositor(bool fSet) { if (!mpWindow) return VINF_SUCCESS; if (fSet) { const struct VBOXVR_SCR_COMPOSITOR* pCompositor = CrFbGetCompositor(getFramebuffer()); return mpWindow->SetCompositor(pCompositor); } return mpWindow->SetCompositor(NULL); }
int CrFbDisplayWindowRootVr::synchCompositorRegions() { int rc; rootVrTranslateForPos(); /* ensure the rootvr compositor does not hold any data, * i.e. cleanup all rootvr entries data */ CrVrScrCompositorClear(&mCompositor); rc = CrVrScrCompositorIntersectedList(CrFbGetCompositor(getFramebuffer()), &cr_server.RootVr, &mCompositor, rootVrGetCEntry, this, NULL); if (!RT_SUCCESS(rc)) { WARN(("CrVrScrCompositorIntersectedList failed, rc %d", rc)); return rc; } return getWindow()->SetVisibleRegionsChanged(); }
int CrFbDisplayWindowRootVr::compositorMarkUpdated() { CrVrScrCompositorClear(&mCompositor); int rc = CrVrScrCompositorRectSet(&mCompositor, CrVrScrCompositorRectGet(CrFbGetCompositor(getFramebuffer())), NULL); if (!RT_SUCCESS(rc)) { WARN(("err")); return rc; } rc = setRegionsChanged(); if (!RT_SUCCESS(rc)) { WARN(("screenChanged failed %d", rc)); return rc; } return VINF_SUCCESS; }
const struct RTRECT* CrFbDisplayWindow::getRect() { const struct VBOXVR_SCR_COMPOSITOR* pCompositor = CrFbGetCompositor(getFramebuffer()); return CrVrScrCompositorRectGet(pCompositor); }