VirtualBox

Changeset 83380 in vbox


Ignore:
Timestamp:
Mar 24, 2020 2:10:43 PM (5 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9686. Moving RAM usage query function to a common code area for possible reuse.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/monitor
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/UIMonitorCommon.cpp

    r83375 r83380  
    2626/* COM includes: */
    2727#include "CMachineDebugger.h"
     28#include "CPerformanceCollector.h"
    2829
    2930/* static */
     
    106107    return xmlData;
    107108}
     109
     110/* static */
     111void UIMonitorCommon::getRAMLoad(CPerformanceCollector &comPerformanceCollector, QVector<QString> &nameList,
     112                                 QVector<CUnknown>& objectList, quint64 &iOutTotalRAM, quint64 &iOutFreeRAM)
     113{
     114    iOutTotalRAM = 0;
     115    iOutFreeRAM = 0;
     116    QVector<QString>  aReturnNames;
     117    QVector<CUnknown>  aReturnObjects;
     118    QVector<QString>  aReturnUnits;
     119    QVector<ULONG>  aReturnScales;
     120    QVector<ULONG>  aReturnSequenceNumbers;
     121    QVector<ULONG>  aReturnDataIndices;
     122    QVector<ULONG>  aReturnDataLengths;
     123    /* Make a query to CPerformanceCollector to fetch some metrics (e.g RAM usage): */
     124    QVector<LONG> returnData = comPerformanceCollector.QueryMetricsData(nameList,
     125                                                                        objectList,
     126                                                                        aReturnNames,
     127                                                                        aReturnObjects,
     128                                                                        aReturnUnits,
     129                                                                        aReturnScales,
     130                                                                        aReturnSequenceNumbers,
     131                                                                        aReturnDataIndices,
     132                                                                        aReturnDataLengths);
     133    /* Parse the result we get from CPerformanceCollector to get respective values: */
     134    for (int i = 0; i < aReturnNames.size(); ++i)
     135    {
     136        if (aReturnDataLengths[i] == 0)
     137            continue;
     138        /* Read the last of the return data disregarding the rest since we are caching the data in GUI side: */
     139        float fData = returnData[aReturnDataIndices[i] + aReturnDataLengths[i] - 1] / (float)aReturnScales[i];
     140        if (aReturnNames[i].contains("RAM", Qt::CaseInsensitive) && !aReturnNames[i].contains(":"))
     141        {
     142            if (aReturnNames[i].contains("Total", Qt::CaseInsensitive))
     143                iOutTotalRAM = (quint64)fData;
     144            if (aReturnNames[i].contains("Free", Qt::CaseInsensitive))
     145                iOutFreeRAM = (quint64)fData;
     146        }
     147    }
     148}
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/UIMonitorCommon.h

    r83347 r83380  
    4646        static void getVMMExitCount(CMachineDebugger &debugger, quint64 &uOutVMMExitCount);
    4747    /** @} */
     48        static void getRAMLoad(CPerformanceCollector &comPerformanceCollector, QVector<QString> &nameList,
     49                               QVector<CUnknown>& objectList, quint64 &iOutTotalRAM, quint64 &iOutFreeRAM);
    4850
    4951private:
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/performance/UIPerformanceMonitor.cpp

    r83346 r83380  
    948948        return;
    949949    ++m_iTimeStep;
    950     QVector<QString> allNames;// = new ArrayList<IUnknown>();
    951     QVector<CUnknown> allObjects;// = new ArrayList<IUnknown>();
    952     QVector<QString>  aReturnNames;
    953     QVector<CUnknown>  aReturnObjects;
    954     QVector<QString>  aReturnUnits;
    955     QVector<ULONG>  aReturnScales;
    956     QVector<ULONG>  aReturnSequenceNumbers;
    957     QVector<ULONG>  aReturnDataIndices;
    958     QVector<ULONG>  aReturnDataLengths;
    959     /* Make a query to CPerformanceCollector to fetch some metrics (e.g RAM usage): */
    960     QVector<LONG> returnData = m_performanceMonitor.QueryMetricsData(m_nameList,
    961                                                                      m_objectList,
    962                                                                      aReturnNames,
    963                                                                      aReturnObjects,
    964                                                                      aReturnUnits,
    965                                                                      aReturnScales,
    966                                                                      aReturnSequenceNumbers,
    967                                                                      aReturnDataIndices,
    968                                                                      aReturnDataLengths);
    969     quint64 iTotalRAM = 0;
    970     quint64 iFreeRAM = 0;
    971     /* Parse the result we get from CPerformanceCollector to get respective values: */
    972     for (int i = 0; i < aReturnNames.size(); ++i)
    973     {
    974         if (aReturnDataLengths[i] == 0)
    975             continue;
    976         /* Read the last of the return data disregarding the rest since we are caching the data in GUI side: */
    977         float fData = returnData[aReturnDataIndices[i] + aReturnDataLengths[i] - 1] / (float)aReturnScales[i];
    978         if (aReturnNames[i].contains("RAM", Qt::CaseInsensitive) && !aReturnNames[i].contains(":"))
    979         {
    980             if (aReturnNames[i].contains("Total", Qt::CaseInsensitive))
    981                 iTotalRAM = (quint64)fData;
    982             if (aReturnNames[i].contains("Free", Qt::CaseInsensitive))
    983                 iFreeRAM = (quint64)fData;
    984         }
    985     }
    986     if (m_metrics.contains(m_strRAMMetricName))
    987         updateRAMGraphsAndMetric(iTotalRAM, iFreeRAM);
     950
     951   if (m_metrics.contains(m_strRAMMetricName))
     952   {
     953       quint64 iTotalRAM = 0;
     954       quint64 iFreeRAM = 0;
     955       UIMonitorCommon::getRAMLoad(m_performanceMonitor, m_nameList, m_objectList, iTotalRAM, iFreeRAM);
     956       updateRAMGraphsAndMetric(iTotalRAM, iFreeRAM);
     957   }
    988958
    989959    /* Update the CPU load chart with values we get from IMachineDebugger::getCPULoad(..): */
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/resource/UIResourceMonitor.cpp

    r83379 r83380  
    302302{
    303303    Q_UNUSED(parent);
    304     // int iCount = 0;
    305     // for (int i = 0; i < m_columnShown.size(); ++i)
    306     //     if (m_columnShown[i])
    307     //         ++iCount;
    308     // printf("column count %d\n", iCount);
    309     // return iCount;
    310304    return VMResouceMonitorColumn_Max;
    311305}
     
    485479    if (m_pModel)
    486480        m_pModel->setColumnCaptions(m_columnCaptions);
    487 
    488481}
    489482
     
    593586        return;
    594587    QMenu menu;
    595 
    596588    for (int i = 0; i < VMResouceMonitorColumn_Max; ++i)
    597589    {
     
    603595        if (i < m_columnShown.size())
    604596            pAction->setChecked(m_columnShown[i]);
     597        if (i == (int)VMResouceMonitorColumn_Name)
     598            pAction->setEnabled(false);
    605599        connect(pAction, &QAction::triggered, this, &UIResourceMonitorWidget::sltHandleColumnAction);
    606600    }
     
    693687void UIResourceMonitor::finalize()
    694688{
    695     /* Apply language settings: */
    696689    retranslateUi();
    697690}
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