示例#1
0
int CrFbDisplayWindow::fbSync()
{
    int rc = CrFbDisplayBase::fbSync();
    if (!RT_SUCCESS(rc))
    {
        WARN(("err"));
        return rc;
    }

    HCR_FRAMEBUFFER hFb = getFramebuffer();

    mu32Screen = CrFbGetScreenInfo(hFb)->u32ViewIndex;

    rc = windowSync();
    if (!RT_SUCCESS(rc))
    {
        WARN(("windowSync failed %d", rc));
        return rc;
    }

    if (CrFbHas3DData(hFb))
    {
        if (mpWindow && mpWindow->GetParentId())
        {
            rc = mpWindow->Create();
            if (!RT_SUCCESS(rc))
            {
                WARN(("err"));
                return rc;
            }
        }
    }

    return VINF_SUCCESS;
}
void CrFbDisplayWindowRootVr::rootVrTranslateForPos()
{
    const RTRECT *pRect = getViewportRect();
    const struct VBVAINFOSCREEN* pScreen = CrFbGetScreenInfo(getFramebuffer());
    int32_t x = pScreen->i32OriginX;
    int32_t y = pScreen->i32OriginY;
    int32_t dx = cr_server.RootVrCurPoint.x - x;
    int32_t dy = cr_server.RootVrCurPoint.y - y;

    cr_server.RootVrCurPoint.x = x;
    cr_server.RootVrCurPoint.y = y;

    VBoxVrListTranslate(&cr_server.RootVr, dx, dy);
}