VirtualBox

Changeset 53499 in vbox


Ignore:
Timestamp:
Dec 10, 2014 1:49:03 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
97236
Message:

FE/Qt: 6278: Support for scaled video-output: Seamless mode: Visual regions to be adjusted the proper way.

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

Legend:

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

    r53497 r53499  
    6363    , m_fAutoEnabled(false)
    6464    , m_dScaleFactor(gEDataManager->scaleFactor(vboxGlobal().managedVMUuid()))
     65    , m_transform(QTransform().scale(m_dScaleFactor, m_dScaleFactor))
    6566    , m_fUseUnscaledHiDPIOutput(gEDataManager->useUnscaledHiDPIOutput(vboxGlobal().managedVMUuid()))
    6667    , m_hiDPIOptimizationType(HiDPIOptimizationType_None)
     
    472473        rect.setRight(rects->xRight - 1);
    473474        rect.setBottom(rects->yBottom - 1);
    474         /* Tune according scale-factor: */
    475         rect.moveTo(rect.topLeft() * m_dScaleFactor);
    476         rect.setSize(rect.size() * m_dScaleFactor + QSize(1, 1));
    477475        /* Append region: */
    478476        region += rect;
    479477        ++rects;
    480478    }
     479    /* Tune according scale-factor: */
     480    if (m_dScaleFactor != 1.0)
     481        region = m_transform.map(region);
    481482
    482483    if (m_fUpdatesAllowed)
     
    772773    /* Fetch new scale-factor: */
    773774    m_dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid());
     775    m_transform = QTransform().scale(m_dScaleFactor, m_dScaleFactor);
    774776}
    775777
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.h

    r53461 r53499  
    2121#include <QRegion>
    2222#include <QImage>
     23#include <QTransform>
    2324
    2425/* GUI includes: */
     
    293294    /** Holds the scale-factor used by the scaled-size. */
    294295    double m_dScaleFactor;
     296    /** Holds the coordinate-system for the scale-factor above. */
     297    QTransform m_transform;
    295298    /** Holds the frame-buffer's scaled-size. */
    296299    QSize m_scaledSize;
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp

    r53461 r53499  
    242242            /* Assign new frame-buffer logical-size taking the scale-factor into account: */
    243243            const double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid());
    244             frameBuffer()->setScaledSize(dScaleFactor == 1 ? QSize() : QSize(iWidth * dScaleFactor, iHeight * dScaleFactor));
     244            frameBuffer()->setScaledSize(dScaleFactor == 1.0 ? QSize() : QSize(iWidth * dScaleFactor, iHeight * dScaleFactor));
    245245        }
    246246
     
    296296    /* Take the scale-factor into account: */
    297297    const double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid());
    298     if (dScaleFactor == 1)
     298    if (dScaleFactor == 1.0)
    299299    {
    300300        /* Adjust corresponding viewport part: */
     
    509509# endif /* !VBOX_WITH_VIDEOHWACCEL */
    510510        m_pFrameBuffer->setHiDPIOptimizationType(uisession()->hiDPIOptimizationType());
    511         m_pFrameBuffer->setScaledSize(dScaleFactor == 1 ? QSize() :
     511        m_pFrameBuffer->setScaledSize(dScaleFactor == 1.0 ? QSize() :
    512512                                      QSize(m_pFrameBuffer->width() * dScaleFactor,
    513513                                            m_pFrameBuffer->height() * dScaleFactor));
     
    11661166        QPainter painter(viewport());
    11671167        /* Take the scale-factor into account: */
    1168         if (gEDataManager->scaleFactor(vboxGlobal().managedVMUuid()) == 1)
     1168        if (gEDataManager->scaleFactor(vboxGlobal().managedVMUuid()) == 1.0)
    11691169            painter.drawPixmap(rect, pausePixmap(), QRect(rect.x() + contentsX(), rect.y() + contentsY(),
    11701170                                                          rect.width(), rect.height()));
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