VirtualBox

Changeset 53861 in vbox


Ignore:
Timestamp:
Jan 19, 2015 6:36:27 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
97695
Message:

FE/Qt: Mac OS X: 6278: Support for unscaled HiDPI (Retina) video-output: Managing frame-buffer stuff from within the machine-view through corresponding API.

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp

    r53462 r53861  
    35883588        else if (strKey == GUI_ScaleFactor)
    35893589            emit sigScaleFactorChange(strMachineID);
    3590 #ifdef RT_OS_DARWIN
    35913590        else if (strKey == GUI_HiDPI_UnscaledOutput)
    35923591            emit sigUnscaledHiDPIOutputModeChange(strMachineID);
    3593 #endif /* RT_OS_DARWIN */
    35943592    }
    35953593
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h

    r53461 r53861  
    7979    void sigScaleFactorChange(const QString &strMachineID);
    8080
     81    /** Notifies about unscaled HiDPI output mode change. */
     82    void sigUnscaledHiDPIOutputModeChange(const QString &strMachineID);
     83
    8184#ifdef RT_OS_DARWIN
    82     /** Mac OS X: Notifies about unscaled HiDPI output mode change. */
    83     void sigUnscaledHiDPIOutputModeChange(const QString &strMachineID);
    84 
    8585    /** Mac OS X: Notifies about 'presentation mode' status change. */
    8686    void sigPresentationModeChange(bool fEnabled);
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp

    r53860 r53861  
    790790}
    791791
    792 #ifdef RT_OS_DARWIN
    793 void UIFrameBuffer::sltHandleUnscaledHiDPIOutputModeChange(const QString &strMachineID)
    794 {
    795     /* Skip unrelated machine IDs: */
    796     if (strMachineID != vboxGlobal().managedVMUuid())
    797         return;
    798 
    799     /* Fetch new unscaled HiDPI output mode value: */
    800     m_fUseUnscaledHiDPIOutput = gEDataManager->useUnscaledHiDPIOutput(vboxGlobal().managedVMUuid());
     792void UIFrameBuffer::setUseUnscaledHiDPIOutput(bool fUseUnscaledHiDPIOutput)
     793{
     794    /* Remember new use-unscaled-HiDPI-output value: */
     795    m_fUseUnscaledHiDPIOutput = fUseUnscaledHiDPIOutput;
    801796
    802797    /* Update coordinate-system: */
    803798    updateCoordinateSystem();
    804799}
    805 #endif /* RT_OS_DARWIN */
    806800
    807801void UIFrameBuffer::prepareConnections()
     
    820814            m_pMachineView, SLOT(sltHandle3DOverlayVisibilityChange(bool)),
    821815            Qt::QueuedConnection);
    822 
    823     /* Extra-data manager connections: */
    824 #ifdef Q_WS_MAC
    825     connect(gEDataManager, SIGNAL(sigUnscaledHiDPIOutputModeChange(const QString&)),
    826             this, SLOT(sltHandleUnscaledHiDPIOutputModeChange(const QString&)));
    827 #endif /* Q_WS_MAC */
    828816}
    829817
     
    839827    disconnect(this, SIGNAL(sigNotifyAbout3DOverlayVisibilityChange(bool)),
    840828               m_pMachineView, SLOT(sltHandle3DOverlayVisibilityChange(bool)));
    841 
    842     /* Extra-data manager connections: */
    843 #ifdef Q_WS_MAC
    844     disconnect(gEDataManager, SIGNAL(sigUnscaledHiDPIOutputModeChange(const QString&)),
    845                this, SLOT(sltHandleUnscaledHiDPIOutputModeChange(const QString&)));
    846 #endif /* Q_WS_MAC */
    847829}
    848830
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.h

    r53860 r53861  
    226226    /** Returns whether frame-buffer should use unscaled HiDPI output. */
    227227    bool useUnscaledHiDPIOutput() const { return m_fUseUnscaledHiDPIOutput; }
     228    /** Defines whether frame-buffer should use unscaled HiDPI output. */
     229    void setUseUnscaledHiDPIOutput(bool fUseUnscaledHiDPIOutput);
    228230
    229231    /** Return HiDPI frame-buffer optimization type. */
     
    231233    /** Define HiDPI frame-buffer optimization type: */
    232234    void setHiDPIOptimizationType(HiDPIOptimizationType optimizationType) { m_hiDPIOptimizationType = optimizationType; }
    233 
    234 protected slots:
    235 
    236 #ifdef RT_OS_DARWIN
    237     /** Mac OS X: Handles the unscaled HiDPI output mode change. */
    238     void sltHandleUnscaledHiDPIOutputModeChange(const QString &strMachineID);
    239 #endif /* RT_OS_DARWIN */
    240235
    241236protected:
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp

    r53859 r53861  
    234234            frameBuffer()->setScaledSize(size());
    235235        }
    236         /* Adjust other modes to current NotifyChange event size: */
    237         else
    238         {
    239             /* Assign new frame-buffer logical-size taking the scale-factor into account: */
    240             const double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid());
    241             frameBuffer()->setScaleFactor(dScaleFactor);
    242             display().NotifyScaleFactorChange(m_uScreenId,
    243                                               (uint32_t)(dScaleFactor * VBOX_OGL_SCALE_FACTOR_MULTIPLIER),
    244                                               (uint32_t)(dScaleFactor * VBOX_OGL_SCALE_FACTOR_MULTIPLIER));
    245         }
    246236
    247237        /* Perform frame-buffer mode-change: */
     
    355345        return;
    356346
     347    /* Take the scale-factor into account: */
     348    const double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid());
     349    frameBuffer()->setScaleFactor(dScaleFactor);
     350    display().NotifyScaleFactorChange(m_uScreenId,
     351                                      (uint32_t)(dScaleFactor * VBOX_OGL_SCALE_FACTOR_MULTIPLIER),
     352                                      (uint32_t)(dScaleFactor * VBOX_OGL_SCALE_FACTOR_MULTIPLIER));
     353
    357354    /* Adjust frame-buffer, machine-window and guest-screen size if necessary: */
    358355    sltHandleNotifyChange(frameBuffer()->width(), frameBuffer()->height());
     
    362359}
    363360
    364 #ifdef RT_OS_DARWIN
    365361void UIMachineView::sltHandleUnscaledHiDPIOutputModeChange(const QString &strMachineID)
    366362{
     
    368364    if (strMachineID != vboxGlobal().managedVMUuid())
    369365        return;
     366
     367    /* Take unscaled HiDPI output mode into account: */
     368    const bool fUseUnscaledHiDPIOutput = gEDataManager->useUnscaledHiDPIOutput(vboxGlobal().managedVMUuid());
     369    frameBuffer()->setUseUnscaledHiDPIOutput(fUseUnscaledHiDPIOutput);
    370370
    371371    /* Adjust frame-buffer, machine-window and guest-screen size if necessary: */
     
    375375    adjustGuestScreenSize();
    376376}
    377 #endif /* RT_OS_DARWIN */
    378377
    379378void UIMachineView::sltMachineStateChanged()
     
    478477void UIMachineView::prepareFrameBuffer()
    479478{
    480     /* Take scale-factor into account: */
     479    /* Take scale-factor and unscaled video output mode into account: */
    481480    const double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid());
     481    const bool fUseUnscaledHiDPIOutput = gEDataManager->useUnscaledHiDPIOutput(vboxGlobal().managedVMUuid());
    482482
    483483    /* Prepare frame-buffer: */
     
    515515                                          (uint32_t)(dScaleFactor * VBOX_OGL_SCALE_FACTOR_MULTIPLIER),
    516516                                          (uint32_t)(dScaleFactor * VBOX_OGL_SCALE_FACTOR_MULTIPLIER));
     517        m_pFrameBuffer->setUseUnscaledHiDPIOutput(fUseUnscaledHiDPIOutput);
    517518        uisession()->setFrameBuffer(screenId(), m_pFrameBuffer);
    518519    }
     
    561562                                          (uint32_t)(dScaleFactor * VBOX_OGL_SCALE_FACTOR_MULTIPLIER),
    562563                                          (uint32_t)(dScaleFactor * VBOX_OGL_SCALE_FACTOR_MULTIPLIER));
     564        frameBuffer()->setUseUnscaledHiDPIOutput(fUseUnscaledHiDPIOutput);
    563565    }
    564566}
     
    604606    connect(gEDataManager, SIGNAL(sigScaleFactorChange(const QString&)),
    605607            this, SLOT(sltHandleScaleFactorChange(const QString&)));
    606 #ifdef Q_WS_MAC
    607608    /* Unscaled HiDPI output mode change: */
    608609    connect(gEDataManager, SIGNAL(sigUnscaledHiDPIOutputModeChange(const QString&)),
    609610            this, SLOT(sltHandleUnscaledHiDPIOutputModeChange(const QString&)));
    610 #endif /* Q_WS_MAC */
    611611}
    612612
     
    11361136            case QEvent::Move:
    11371137            {
    1138                 /* Update backing scale factor for underlying frame-buffer: */
     1138                /* Update backing-scale-factor for underlying frame-buffer: */
    11391139                if (m_pFrameBuffer)
    11401140                    m_pFrameBuffer->setBackingScaleFactor(darwinBackingScaleFactor(machineWindow()));
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h

    r53461 r53861  
    117117    void sltHandleScaleFactorChange(const QString &strMachineID);
    118118
    119 #ifdef RT_OS_DARWIN
    120     /** Mac OS X: Handles the unscaled HiDPI output mode change. */
     119    /** Handles the unscaled HiDPI output mode change. */
    121120    void sltHandleUnscaledHiDPIOutputModeChange(const QString &strMachineID);
    122 #endif /* RT_OS_DARWIN */
    123121
    124122    /* Console callback handlers: */
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