VirtualBox

Ignore:
Timestamp:
Feb 6, 2015 6:49:01 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
98075
Message:

FE/Qt: Runtime UI: UIFrameBuffer refactoring for 6278 and 3635 (step 2): Separate performRescale interface to handle scaling stuff.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp

    r54100 r54104  
    183183    const bool fUseUnscaledHiDPIOutput = gEDataManager->useUnscaledHiDPIOutput(vboxGlobal().managedVMUuid());
    184184    frameBuffer()->setUseUnscaledHiDPIOutput(fUseUnscaledHiDPIOutput);
     185
     186    /* Perform frame-buffer rescaling: */
     187    frameBuffer()->performRescale();
    185188}
    186189
     
    234237                                   frameBuffer()->height() != (ulong)iHeight;
    235238
    236         /* Adjust 'scale' mode to current machine-view size: */
     239        /* Perform frame-buffer mode-change: */
     240        frameBuffer()->handleNotifyChange(iWidth, iHeight);
     241
     242        /* For 'scale' mode: */
    237243        if (visualStateType() == UIVisualStateType_Scale)
    238244        {
     
    240246            frameBuffer()->setScaledSize(size());
    241247        }
    242 
    243         /* Perform frame-buffer mode-change: */
    244         frameBuffer()->handleNotifyChange(iWidth, iHeight);
    245 
    246         /* Scale-mode doesn't need this.. */
    247         if (visualStateType() != UIVisualStateType_Scale)
     248        /* For other than 'scale' mode: */
     249        else
    248250        {
    249251            /* Adjust maximum-size restriction for machine-view: */
     
    267269                machineWindow()->normalizeGeometry(true /* adjust position */);
    268270        }
     271
     272        /* Perform frame-buffer rescaling: */
     273        frameBuffer()->performRescale();
    269274
    270275#ifdef Q_WS_MAC
     
    362367                                      (uint32_t)(dScaleFactor * VBOX_OGL_SCALE_FACTOR_MULTIPLIER));
    363368
    364     /* Adjust frame-buffer, machine-window and guest-screen size if necessary: */
    365     sltHandleNotifyChange(frameBuffer()->width(), frameBuffer()->height());
    366     frameBuffer()->performResize(frameBuffer()->width(), frameBuffer()->height());
    367     machineWindow()->normalizeGeometry(true /* adjust position */);
     369    /* Handle scale attributes change: */
     370    handleScaleChange();
     371    /* Adjust guest-screen size: */
    368372    adjustGuestScreenSize();
    369373
     
    383387    frameBuffer()->setUseUnscaledHiDPIOutput(fUseUnscaledHiDPIOutput);
    384388
    385     /* Adjust frame-buffer, machine-window and guest-screen size if necessary: */
    386     sltHandleNotifyChange(frameBuffer()->width(), frameBuffer()->height());
    387     frameBuffer()->performResize(frameBuffer()->width(), frameBuffer()->height());
    388     machineWindow()->normalizeGeometry(true /* adjust position */);
     389    /* Handle scale attributes change: */
     390    handleScaleChange();
     391    /* Adjust guest-screen size: */
    389392    adjustGuestScreenSize();
    390393
     
    558561        m_pFrameBuffer->setUseUnscaledHiDPIOutput(fUseUnscaledHiDPIOutput);
    559562
     563        /* Perform frame-buffer rescaling: */
     564        m_pFrameBuffer->performRescale();
     565
    560566        /* Associate uisession with frame-buffer finally: */
    561567        uisession()->setFrameBuffer(screenId(), m_pFrameBuffer);
     
    598604        }
    599605
    600         /* If we have a valid size, resize the framebuffer. */
     606        /* If we have a valid size, resize/rescale the frame-buffer. */
    601607        if (size.width() > 0 && size.height() > 0)
     608        {
    602609            frameBuffer()->performResize(size.width(), size.height());
     610            frameBuffer()->performRescale();
     611        }
    603612    }
    604613}
     
    844853    /* Return size: */
    845854    return size;
     855}
     856
     857void UIMachineView::handleScaleChange()
     858{
     859    LogRel(("UIMachineView::handleScaleChange: Screen=%d.\n",
     860            (unsigned long)m_uScreenId));
     861
     862    /* If machine-window is visible: */
     863    if (uisession()->isScreenVisible(m_uScreenId))
     864    {
     865        /* For 'scale' mode: */
     866        if (visualStateType() == UIVisualStateType_Scale)
     867        {
     868            /* Assign new frame-buffer logical-size: */
     869            frameBuffer()->setScaledSize(size());
     870        }
     871        /* For other than 'scale' mode: */
     872        else
     873        {
     874            /* Adjust maximum-size restriction for machine-view: */
     875            setMaximumSize(sizeHint());
     876
     877            /* Disable the resize hint override hack: */
     878            m_sizeHintOverride = QSize(-1, -1);
     879
     880            /* Force machine-window update own layout: */
     881            QCoreApplication::sendPostedEvents(0, QEvent::LayoutRequest);
     882
     883            /* Update machine-view sliders: */
     884            updateSliders();
     885
     886            /* By some reason Win host forgets to update machine-window central-widget
     887             * after main-layout was updated, let's do it for all the hosts: */
     888            machineWindow()->centralWidget()->update();
     889
     890            /* Normalize 'normal' machine-window geometry: */
     891            if (visualStateType() == UIVisualStateType_Normal)
     892                machineWindow()->normalizeGeometry(true /* adjust position */);
     893        }
     894
     895        /* Perform frame-buffer rescaling: */
     896        frameBuffer()->performRescale();
     897    }
     898
     899    LogRelFlow(("UIMachineView::handleScaleChange: Complete for Screen=%d.\n",
     900                (unsigned long)m_uScreenId));
    846901}
    847902
     
    12331288            case QEvent::Move:
    12341289            {
    1235                 /* Update backing-scale-factor for underlying frame-buffer: */
    12361290                if (m_pFrameBuffer)
     1291                {
     1292                    /* Update backing-scale-factor for underlying frame-buffer: */
    12371293                    m_pFrameBuffer->setBackingScaleFactor(darwinBackingScaleFactor(machineWindow()));
     1294                    /* Perform frame-buffer rescaling: */
     1295                    m_pFrameBuffer->performRescale();
     1296                }
    12381297                break;
    12391298            }
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette