VirtualBox

Changeset 53957 in vbox


Ignore:
Timestamp:
Jan 26, 2015 11:07:46 AM (10 years ago)
Author:
vboxsync
Message:

FE/Qt: 6278: Support for scaled video-output: Cleanup/Optimize update routine a bit.

File:
1 edited

Legend:

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

    r53931 r53957  
    285285{
    286286    /* Prepare corresponding viewport part: */
    287     QRect rect;
     287    QRect rect(iX, iY, iWidth, iHeight);
    288288
    289289    /* Take the scale-factor into account: */
    290290    const double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid());
    291     if (dScaleFactor == 1.0)
    292     {
    293         /* Adjust corresponding viewport part: */
    294         rect.moveTo(iX - contentsX(),
    295                     iY - contentsY());
    296         rect.setSize(QSize(iWidth,
    297                            iHeight));
    298     }
    299     else
    300     {
    301         /* Adjust corresponding viewport part: */
    302         rect.moveTo(iX * dScaleFactor - 1 - contentsX(),
    303                     iY * dScaleFactor - 1 - contentsY());
    304         rect.setSize(QSize(iWidth  * dScaleFactor + 2 * dScaleFactor + 1,
    305                            iHeight * dScaleFactor + 2 * dScaleFactor + 1));
    306     }
     291    if (dScaleFactor != 1.0)
     292    {
     293        rect.moveTo(floor((double)rect.x() * dScaleFactor) - 1,
     294                    floor((double)rect.y() * dScaleFactor) - 1);
     295        rect.setSize(QSize(ceil((double)rect.width()  * dScaleFactor) + 2,
     296                           ceil((double)rect.height() * dScaleFactor) + 2));
     297    }
     298
     299    /* Shift has to be scaled by the backing-scale-factor
     300     * but not scaled by the scale-factor. */
     301    rect.translate(-contentsX(), -contentsY());
    307302
    308303#ifdef Q_WS_MAC
     
    313308        if (dBackingScaleFactor > 1.0)
    314309        {
    315             rect.moveTo(rect.x() / dBackingScaleFactor - 1,
    316                         rect.y() / dBackingScaleFactor - 1);
    317             rect.setSize(QSize(rect.width()  / dBackingScaleFactor + 2,
    318                                rect.height() / dBackingScaleFactor + 2));
     310            rect.moveTo(floor((double)rect.x() / dBackingScaleFactor) - 1,
     311                        floor((double)rect.y() / dBackingScaleFactor) - 1);
     312            rect.setSize(QSize(ceil((double)rect.width()  / dBackingScaleFactor) + 2,
     313                               ceil((double)rect.height() / dBackingScaleFactor) + 2));
    319314        }
    320315    }
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