VirtualBox

Changeset 51484 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jun 2, 2014 10:41:25 AM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
94086
Message:

FE/Qt: Runtime UI: Removing Quartz2D frame-buffer code; also removing code related to render-mode definition.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk

    r51474 r51484  
    8080VirtualBox_DEFS           =
    8181VirtualBox_DEFS.debug     = VBOX_CHECK_STATE # QT_FATAL_ASSERT
    82 VirtualBox_DEFS.darwin    = VBOX_GUI_USE_QUARTZ2D VBOX_WITH_TRANSLUCENT_SEAMLESS
     82VirtualBox_DEFS.darwin    = VBOX_WITH_TRANSLUCENT_SEAMLESS
    8383VirtualBox_DEFS.win       = UNICODE QT_DLL
    8484ifdef VBOX_WITH_ICHAT_THEATER
     
    729729        src/platform/darwin/UICocoaDockIconPreview.mm \
    730730        src/platform/darwin/UIWindowMenuManager.cpp \
    731         src/runtime/UIFrameBufferQuartz2D.cpp
    732731
    733732if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris) # X11
     
    974973                '-DMAC_OS_X_VERSION_MIN_REQUIRED=1050' \
    975974                '-DMAC_OS_X_VERSION_MAX_ALLOWED=1050' \
    976                 '-DVBOX_GUI_USE_QUARTZ2D' \
    977975                '-o' $@ $<
    978976endif
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxAboutDlg.cpp

    r51474 r51484  
    109109    setWindowTitle(tr("VirtualBox - About"));
    110110    QString strAboutText =  tr("VirtualBox Graphical User Interface");
    111 #ifdef DEBUG
    112     strAboutText += QString(" (%1)").arg(gpConverter->toInternalString(gEDataManager->renderMode(vboxGlobal().managedVMUuid())));
    113 #endif /* DEBUG */
    114111#ifdef VBOX_BLEEDING_EDGE
    115112    QString strVersionText = "EXPERIMENTAL build %1 - " + QString(VBOX_BLEEDING_EDGE);
  • trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h

    r51476 r51484  
    7272#endif /* VBOX_WITH_DEBUGGER_GUI */
    7373template<> bool canConvert<RuntimeMenuHelpActionType>();
    74 template<> bool canConvert<RenderMode>();
    7574template<> bool canConvert<UIVisualStateType>();
    7675template<> bool canConvert<DetailsElementType>();
     
    129128template<> QString toInternalString(const RuntimeMenuHelpActionType &runtimeMenuHelpActionType);
    130129template<> RuntimeMenuHelpActionType fromInternalString<RuntimeMenuHelpActionType>(const QString &strRuntimeMenuHelpActionType);
    131 template<> QString toInternalString(const RenderMode &renderMode);
    132 template<> RenderMode fromInternalString<RenderMode>(const QString &strRenderMode);
    133130template<> QString toInternalString(const UIVisualStateType &visualStateType);
    134131template<> UIVisualStateType fromInternalString<UIVisualStateType>(const QString &strVisualStateType);
  • trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp

    r51407 r51484  
    4545#endif /* VBOX_WITH_DEBUGGER_GUI */
    4646template<> bool canConvert<RuntimeMenuHelpActionType>() { return true; }
    47 template<> bool canConvert<RenderMode>() { return true; }
    4847template<> bool canConvert<UIVisualStateType>() { return true; }
    4948template<> bool canConvert<DetailsElementType>() { return true; }
     
    677676}
    678677
    679 /* QString <= RenderMode: */
    680 template<> QString toInternalString(const RenderMode &renderMode)
    681 {
    682     QString strResult;
    683     switch (renderMode)
    684     {
    685         case RenderMode_QImage:   strResult = "QImage"; break;
    686 #ifdef VBOX_GUI_USE_QUARTZ2D
    687         case RenderMode_Quartz2D: strResult = "Quartz2D"; break;
    688 #endif /* VBOX_GUI_USE_QUARTZ2D */
    689         default:
    690         {
    691             AssertMsgFailed(("No text for render-mode=%d", renderMode));
    692             break;
    693         }
    694     }
    695     return strResult;
    696 }
    697 
    698 /* RenderMode <= QString: */
    699 template<> RenderMode fromInternalString<RenderMode>(const QString &strRenderMode)
    700 {
    701     /* Here we have some fancy stuff allowing us
    702      * to search through the keys using 'case-insensitive' rule: */
    703     QStringList keys;   QList<RenderMode> values;
    704     keys << "QImage";   values << RenderMode_QImage;
    705 #ifdef VBOX_GUI_USE_QUARTZ2D
    706     keys << "Quartz2D"; values << RenderMode_Quartz2D;
    707 #endif /* VBOX_GUI_USE_QUARTZ2D */
    708     /* QImage mode for unknown words: */
    709     if (!keys.contains(strRenderMode, Qt::CaseInsensitive))
    710         return RenderMode_QImage;
    711     /* Corresponding mode for known words: */
    712     return values.at(keys.indexOf(QRegExp(strRenderMode, Qt::CaseInsensitive)));
    713 }
    714 
    715678/* QString <= UIVisualStateType: */
    716679template<> QString toInternalString(const UIVisualStateType &visualStateType)
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp

    r51446 r51484  
    6464
    6565/* Runtime UI definitions: */
    66 const char* UIExtraDataDefs::GUI_RenderMode = "GUI/RenderMode";
    6766#ifndef Q_WS_MAC
    6867const char* UIExtraDataDefs::GUI_MachineWindowIcons = "GUI/MachineWindowIcons";
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h

    r51446 r51484  
    7272
    7373    /* Runtime UI declarations: */
    74     extern const char* GUI_RenderMode;
    7574#ifndef Q_WS_MAC
    7675    extern const char* GUI_MachineWindowIcons;
     
    338337};
    339338
    340 /** Runtime UI: Rendering modes. */
    341 enum RenderMode
    342 {
    343     RenderMode_Invalid,
    344     RenderMode_QImage,
    345 #ifdef VBOX_GUI_USE_QUARTZ2D
    346     RenderMode_Quartz2D
    347 #endif /* VBOX_GUI_USE_QUARTZ2D */
    348 };
    349 
    350339/** Runtime UI: Visual-state types. */
    351340enum UIVisualStateType
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp

    r51455 r51484  
    311311}
    312312
    313 RenderMode UIExtraDataManager::renderMode(const QString &strId) const
    314 {
    315     return gpConverter->fromInternalString<RenderMode>(extraDataString(GUI_RenderMode, strId));
    316 }
    317 
    318313QRect UIExtraDataManager::selectorWindowGeometry(QWidget *pHintWidget /* = 0 */)
    319314{
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h

    r51455 r51484  
    137137    /** Defines selector-window geometry to passed @a geometry which is @a fMaximized. */
    138138    void setSelectorWindowGeometry(const QRect &geometry, bool fMaximized);
    139 
    140     /** Returns render-mode for machine with passed @a strId. */
    141     RenderMode renderMode(const QString &strId) const;
    142139
    143140    /** Returns whether this machine started for the first time. */
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp

    r51478 r51484  
    3636#include "UIFrameBuffer.h"
    3737#include "UIFrameBufferQImage.h"
    38 #ifdef VBOX_GUI_USE_QUARTZ2D
    39 # include "UIFrameBufferQuartz2D.h"
    40 #endif /* VBOX_GUI_USE_QUARTZ2D */
    4138#include "VBoxFBOverlay.h"
    4239#include "UISession.h"
     
    466463void UIMachineView::prepareFrameBuffer()
    467464{
    468     /* Prepare frame-buffer depending on render-mode: */
    469     RenderMode rm = gEDataManager->renderMode(vboxGlobal().managedVMUuid());
    470     switch (rm)
    471     {
    472         case RenderMode_QImage:
    473         {
    474             UIFrameBuffer *pFrameBuffer = uisession()->frameBuffer(screenId());
    475             if (pFrameBuffer)
    476             {
    477                 pFrameBuffer->setView(this);
    478                 /* Mark framebuffer as used again: */
    479                 LogRelFlow(("UIMachineView::prepareFrameBuffer: Start EMT callbacks accepting for screen: %d.\n", screenId()));
    480                 pFrameBuffer->setMarkAsUnused(false);
    481                 uisession()->setFrameBuffer(screenId(), pFrameBuffer);
    482             }
    483             else
    484             {
     465    /* Prepare frame-buffer: */
     466    UIFrameBuffer *pFrameBuffer = uisession()->frameBuffer(screenId());
     467    if (pFrameBuffer)
     468    {
     469        pFrameBuffer->setView(this);
     470        /* Mark framebuffer as used again: */
     471        LogRelFlow(("UIMachineView::prepareFrameBuffer: Start EMT callbacks accepting for screen: %d.\n", screenId()));
     472        pFrameBuffer->setMarkAsUnused(false);
     473        uisession()->setFrameBuffer(screenId(), pFrameBuffer);
     474    }
     475    else
     476    {
    485477# ifdef VBOX_WITH_VIDEOHWACCEL
    486                 if (m_fAccelerate2DVideo)
    487                 {
    488                     /** these two additional template args is a workaround to
    489                      * this [VBox|UI] duplication
    490                      * @todo: they are to be removed once VBox stuff is gone */
    491                     pFrameBuffer = new VBoxOverlayFrameBuffer<UIFrameBufferQImage, UIMachineView, UIResizeEvent>(this, &session(), (uint32_t)screenId());
    492                 }
    493                 else
    494                     pFrameBuffer = new UIFrameBufferQImage(this);
     478        if (m_fAccelerate2DVideo)
     479        {
     480            /** these two additional template args is a workaround to
     481             * this [VBox|UI] duplication
     482             * @todo: they are to be removed once VBox stuff is gone */
     483            pFrameBuffer = new VBoxOverlayFrameBuffer<UIFrameBufferQImage, UIMachineView, UIResizeEvent>(this, &session(), (uint32_t)screenId());
     484        }
     485        else
     486            pFrameBuffer = new UIFrameBufferQImage(this);
    495487# else /* VBOX_WITH_VIDEOHWACCEL */
    496                 pFrameBuffer = new UIFrameBufferQImage(this);
     488        pFrameBuffer = new UIFrameBufferQImage(this);
    497489# endif /* !VBOX_WITH_VIDEOHWACCEL */
    498                 pFrameBuffer->setHiDPIOptimizationType(uisession()->hiDPIOptimizationType());
    499                 uisession()->setFrameBuffer(screenId(), pFrameBuffer);
    500             }
    501             m_pFrameBuffer = pFrameBuffer;
    502             break;
    503         }
    504 
    505 #ifdef VBOX_GUI_USE_QUARTZ2D
    506         case RenderMode_Quartz2D:
    507         {
    508             /* Indicate that we are doing all drawing stuff ourself: */
    509             viewport()->setAttribute(Qt::WA_PaintOnScreen);
    510             UIFrameBuffer *pFrameBuffer = uisession()->frameBuffer(screenId());
    511             if (pFrameBuffer)
    512             {
    513                 pFrameBuffer->setView(this);
    514                 /* Mark framebuffer as used again: */
    515                 LogRelFlow(("UIMachineView::prepareFrameBuffer: Start EMT callbacks accepting for screen: %d.\n", screenId()));
    516                 pFrameBuffer->setMarkAsUnused(false);
    517                 uisession()->setFrameBuffer(screenId(), pFrameBuffer);
    518             }
    519             else
    520             {
    521 # ifdef VBOX_WITH_VIDEOHWACCEL
    522                 if (m_fAccelerate2DVideo)
    523                 {
    524                     /** these two additional template args is a workaround to
    525                      * this [VBox|UI] duplication
    526                      * @todo: they are to be removed once VBox stuff is gone */
    527                     pFrameBuffer = new VBoxOverlayFrameBuffer<UIFrameBufferQuartz2D, UIMachineView, UIResizeEvent>(this, &session(), (uint32_t)screenId());
    528                 }
    529                 else
    530                     pFrameBuffer = new UIFrameBufferQuartz2D(this);
    531 # else /* VBOX_WITH_VIDEOHWACCEL */
    532                 pFrameBuffer = new UIFrameBufferQuartz2D(this);
    533 # endif /* !VBOX_WITH_VIDEOHWACCEL */
    534                 uisession()->setFrameBuffer(screenId(), pFrameBuffer);
    535             }
    536             m_pFrameBuffer = pFrameBuffer;
    537             break;
    538         }
    539 #endif /* VBOX_GUI_USE_QUARTZ2D */
    540 
    541         default:
    542             AssertReleaseMsgFailed(("Render mode must be valid: %d\n", rm));
    543             LogRel(("Invalid render mode: %d\n", rm));
    544             qApp->exit(1);
    545             break;
    546     }
     490        pFrameBuffer->setHiDPIOptimizationType(uisession()->hiDPIOptimizationType());
     491        uisession()->setFrameBuffer(screenId(), pFrameBuffer);
     492    }
     493    m_pFrameBuffer = pFrameBuffer;
    547494
    548495    /* If frame-buffer was prepared: */
     
    952899CGImageRef UIMachineView::vmContentImage()
    953900{
     901    /* Use pause-image if exists: */
    954902    if (!m_pauseShot.isNull())
    955     {
    956         CGImageRef pauseImg = ::darwinToCGImageRef(&m_pauseShot);
    957         /* Use the pause image as background */
    958         return pauseImg;
    959     }
    960     else
    961     {
    962 # ifdef VBOX_GUI_USE_QUARTZ2D
    963         if (gEDataManager->renderMode(vboxGlobal().managedVMUuid()) == RenderMode_Quartz2D)
    964         {
    965             /* If the render mode is Quartz2D we could use the CGImageRef
    966              * of the framebuffer for the dock icon creation. This saves
    967              * some conversion time. */
    968             CGImageRef image = static_cast<UIFrameBufferQuartz2D*>(m_pFrameBuffer)->imageRef();
    969             CGImageRetain(image); /* Retain it, cause the consumer will release it. */
    970             return image;
    971         }
    972 # endif /* VBOX_GUI_USE_QUARTZ2D */
    973         /* In image mode we have to create the image ref out of the
    974          * framebuffer */
    975         return frameBuffertoCGImageRef(m_pFrameBuffer);
    976     }
    977     return 0;
     903        return darwinToCGImageRef(&m_pauseShot);
     904
     905    /* Create the image ref out of the frame-buffer: */
     906    return frameBuffertoCGImageRef(m_pFrameBuffer);
    978907}
    979908
     
    11241053void UIMachineView::paintEvent(QPaintEvent *pPaintEvent)
    11251054{
    1126     if (m_pauseShot.isNull())
    1127     {
    1128         /* Delegate the paint function to the VBoxFrameBuffer interface: */
    1129         if (m_pFrameBuffer)
    1130             m_pFrameBuffer->paintEvent(pPaintEvent);
     1055    /* Use pause-image if exists: */
     1056    if (!m_pauseShot.isNull())
     1057    {
     1058        /* We have a snapshot for the paused state: */
     1059        QRect rect = pPaintEvent->rect().intersect(viewport()->rect());
     1060        /* We have to disable paint on screen if we are using the regular painter: */
     1061        bool fPaintOnScreen = viewport()->testAttribute(Qt::WA_PaintOnScreen);
     1062        viewport()->setAttribute(Qt::WA_PaintOnScreen, false);
     1063        QPainter painter(viewport());
     1064        painter.drawPixmap(rect, m_pauseShot, QRect(rect.x() + contentsX(), rect.y() + contentsY(),
     1065                                                    rect.width(), rect.height()));
     1066        /* Restore the attribute to it's previous state: */
     1067        viewport()->setAttribute(Qt::WA_PaintOnScreen, fPaintOnScreen);
    11311068#ifdef Q_WS_MAC
    1132         /* Update the dock icon if we are in the running state */
    1133         if (uisession()->isRunning())
    1134             updateDockIcon();
     1069        /* Update the dock icon: */
     1070        updateDockIcon();
    11351071#endif /* Q_WS_MAC */
    11361072        return;
    11371073    }
    11381074
    1139 #ifdef VBOX_GUI_USE_QUARTZ2D
    1140     if (gEDataManager->renderMode(vboxGlobal().managedVMUuid()) == RenderMode_Quartz2D && m_pFrameBuffer)
    1141     {
     1075    /* Delegate the paint function to the UIFrameBuffer interface: */
     1076    if (m_pFrameBuffer)
    11421077        m_pFrameBuffer->paintEvent(pPaintEvent);
    1143         updateDockIcon();
    1144     }
    1145     else
    1146 #endif /* VBOX_GUI_USE_QUARTZ2D */
    1147     {
    1148         /* We have a snapshot for the paused state: */
    1149         QRect r = pPaintEvent->rect().intersect(viewport()->rect());
    1150         /* We have to disable paint on screen if we are using the regular painter: */
    1151         bool paintOnScreen = viewport()->testAttribute(Qt::WA_PaintOnScreen);
    1152         viewport()->setAttribute(Qt::WA_PaintOnScreen, false);
    1153         QPainter pnt(viewport());
    1154         pnt.drawPixmap(r, m_pauseShot, QRect(r.x() + contentsX(), r.y() + contentsY(), r.width(), r.height()));
    1155         /* Restore the attribute to its previous state: */
    1156         viewport()->setAttribute(Qt::WA_PaintOnScreen, paintOnScreen);
    11571078#ifdef Q_WS_MAC
     1079    /* Update the dock icon if we are in the running state: */
     1080    if (uisession()->isRunning())
    11581081        updateDockIcon();
    11591082#endif /* Q_WS_MAC */
    1160     }
    11611083}
    11621084
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h

    r51476 r51484  
    269269    friend class UIFrameBuffer;
    270270    friend class UIFrameBufferQImage;
    271 #ifdef VBOX_GUI_USE_QUARTZ2D
    272     friend class UIFrameBufferQuartz2D;
    273 #endif /* VBOX_GUI_USE_QUARTZ2D */
    274271    template<class, class, class> friend class VBoxOverlayFrameBuffer;
    275272};
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineViewScale.cpp

    r48950 r51484  
    3131#include "UIFrameBuffer.h"
    3232#include "UIFrameBufferQImage.h"
    33 #ifdef VBOX_GUI_USE_QUARTZ2D
    34 # include "UIFrameBufferQuartz2D.h"
    35 #endif /* VBOX_GUI_USE_QUARTZ2D */
    3633
    3734/* COM includes: */
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