VirtualBox

Changeset 53859 in vbox


Ignore:
Timestamp:
Jan 19, 2015 3:15:32 PM (10 years ago)
Author:
vboxsync
Message:

FE/Qt: 6278: Support for scaled video-output: Managing frame-buffer scaled-size from within the machine-view through scale-factor API.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/runtime
Files:
3 edited

Legend:

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

    r53522 r53859  
    766766#endif /* VBOX_WITH_VIDEOHWACCEL */
    767767
     768void UIFrameBuffer::setScaleFactor(double dScaleFactor)
     769{
     770    /* Remember new scale-factor: */
     771    m_dScaleFactor = dScaleFactor;
     772
     773    /* Update scaled-size according scale-factor: */
     774    setScaledSize(m_dScaleFactor == 1.0 ? QSize() : QSize(m_iWidth * dScaleFactor, m_iHeight * dScaleFactor));
     775
     776    /* Update coordinate-system: */
     777    updateCoordinateSystem();
     778}
     779
    768780void UIFrameBuffer::setBackingScaleFactor(double dBackingScaleFactor)
    769781{
    770782    /* Remember new backing-scale-factor: */
    771783    m_dBackingScaleFactor = dBackingScaleFactor;
    772 
    773     /* Update coordinate-system: */
    774     updateCoordinateSystem();
    775 }
    776 
    777 void UIFrameBuffer::sltHandleScaleFactorChange(const QString &strMachineID)
    778 {
    779     /* Skip unrelated machine IDs: */
    780     if (strMachineID != vboxGlobal().managedVMUuid())
    781         return;
    782 
    783     /* Fetch new scale-factor: */
    784     m_dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid());
    785784
    786785    /* Update coordinate-system: */
     
    820819
    821820    /* Extra-data manager connections: */
    822     connect(gEDataManager, SIGNAL(sigScaleFactorChange(const QString&)),
    823             this, SLOT(sltHandleScaleFactorChange(const QString&)));
    824821#ifdef Q_WS_MAC
    825822    connect(gEDataManager, SIGNAL(sigUnscaledHiDPIOutputModeChange(const QString&)),
     
    841838
    842839    /* Extra-data manager connections: */
    843     disconnect(gEDataManager, SIGNAL(sigScaleFactorChange(const QString&)),
    844                this, SLOT(sltHandleScaleFactorChange(const QString&)));
    845840#ifdef Q_WS_MAC
    846841    disconnect(gEDataManager, SIGNAL(sigUnscaledHiDPIOutputModeChange(const QString&)),
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.h

    r53803 r53859  
    183183    void unlock() const { RTCritSectLeave(&m_critSect); }
    184184
    185     /** Returns the scale-factor used by the scaled-size. */
    186     double scaleFactor() const { return m_dScaleFactor; }
    187185    /** Returns the frame-buffer's scaled-size. */
    188186    QSize scaledSize() const { return m_scaledSize; }
     
    224222    void setHiDPIOptimizationType(HiDPIOptimizationType optimizationType) { m_hiDPIOptimizationType = optimizationType; }
    225223
     224    /** Returns the scale-factor used by the frame-buffer. */
     225    double scaleFactor() const { return m_dScaleFactor; }
     226    /** Define the scale-factor used by the frame-buffer. */
     227    void setScaleFactor(double dScaleFactor);
     228
    226229    /** Return backing scale factor used by HiDPI frame-buffer. */
    227230    double backingScaleFactor() const { return m_dBackingScaleFactor; }
     
    230233
    231234protected slots:
    232 
    233     /** Handles the scale-factor change. */
    234     void sltHandleScaleFactorChange(const QString &strMachineID);
    235235
    236236#ifdef RT_OS_DARWIN
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp

    r53857 r53859  
    239239            /* Assign new frame-buffer logical-size taking the scale-factor into account: */
    240240            const double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid());
    241             frameBuffer()->setScaledSize(dScaleFactor == 1.0 ? QSize() : QSize(iWidth * dScaleFactor, iHeight * dScaleFactor));
     241            frameBuffer()->setScaleFactor(dScaleFactor);
    242242            display().NotifyScaleFactorChange(m_uScreenId,
    243243                                              (uint32_t)(dScaleFactor * VBOX_OGL_SCALE_FACTOR_MULTIPLIER),
     
    511511# endif /* !VBOX_WITH_VIDEOHWACCEL */
    512512        m_pFrameBuffer->setHiDPIOptimizationType(uisession()->hiDPIOptimizationType());
    513         m_pFrameBuffer->setScaledSize(dScaleFactor == 1.0 ? QSize() :
    514                                       QSize(m_pFrameBuffer->width() * dScaleFactor,
    515                                             m_pFrameBuffer->height() * dScaleFactor));
     513        m_pFrameBuffer->setScaleFactor(dScaleFactor);
    516514        display().NotifyScaleFactorChange(m_uScreenId,
    517515                                          (uint32_t)(dScaleFactor * VBOX_OGL_SCALE_FACTOR_MULTIPLIER),
     
    559557    {
    560558        frameBuffer()->resizeEvent(size.width(), size.height());
    561         frameBuffer()->setScaledSize(dScaleFactor == 1 ? QSize() :
    562                                      QSize(frameBuffer()->width() * dScaleFactor,
    563                                            frameBuffer()->height() * dScaleFactor));
     559        frameBuffer()->setScaleFactor(dScaleFactor);
    564560        display().NotifyScaleFactorChange(m_uScreenId,
    565561                                          (uint32_t)(dScaleFactor * VBOX_OGL_SCALE_FACTOR_MULTIPLIER),
Note: See TracChangeset for help on using the changeset viewer.

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