VirtualBox

Ignore:
Timestamp:
Jul 25, 2013 7:12:24 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
87551
Message:

Main,Frontends: Second step of USB controller rework. There is one controller instance for every USB controller now. Adapt frontends and testsuite to work with the changed API

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp

    r47376 r47401  
    15121512        QString item;
    15131513
    1514         CUSBController ctl = aMachine.GetUSBController();
    15151514        CUSBDeviceFilters flts = aMachine.GetUSBDeviceFilters();
    1516         if (   !ctl.isNull()
    1517             && !flts.isNull()
    1518             && ctl.GetProxyAvailable())
     1515        if (   !flts.isNull()
     1516            && aMachine.GetUSBProxyAvailable())
    15191517        {
    15201518            /* the USB controller may be unavailable (i.e. in VirtualBox OSE) */
    15211519
    1522             if (ctl.GetEnabled())
     1520            ULONG cOhciCtls = aMachine.GetUSBControllerCountByType(KUSBControllerType_OHCI);
     1521
     1522            if (cOhciCtls)
    15231523            {
    15241524                CUSBDeviceFilterVector coll = flts.GetDeviceFilters();
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp

    r47149 r47401  
    3939#include "CNetworkAdapter.h"
    4040#include "CUSBController.h"
     41#include "CUSBDeviceFilters.h"
    4142#include "CUSBDevice.h"
    4243#include "CSharedFolder.h"
     
    388389        QString strFullData;
    389390
    390         const CUSBController &usbctl = machine.GetUSBController();
    391         setState(!usbctl.isNull() && usbctl.GetEnabled() && usbctl.GetProxyAvailable() ? KDeviceActivity_Idle : KDeviceActivity_Null);
    392         if (!usbctl.isNull() && usbctl.GetEnabled())
     391
     392        /*
     393         * Check whether there is at least one OHCI USB controllers with
     394         * an available proxy.
     395         */
     396        const CUSBDeviceFilters &filters = machine.GetUSBDeviceFilters();
     397        ULONG cOhciCtls = machine.GetUSBControllerCountByType(KUSBControllerType_OHCI);
     398        bool fUSBEnabled = !filters.isNull() && cOhciCtls && machine.GetUSBProxyAvailable();
     399
     400        setState(fUSBEnabled ? KDeviceActivity_Idle : KDeviceActivity_Null);
     401        if (fUSBEnabled)
    393402        {
    394403            const CConsole &console = m_session.GetConsole();
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp

    r47396 r47401  
    6868#include "CVRDEServer.h"
    6969#include "CUSBController.h"
     70#include "CUSBDeviceFilters.h"
    7071#include "CSnapshot.h"
    7172
     
    12961297    /* USB stuff: */
    12971298    {
    1298         /* Get USB controller: */
    1299         const CUSBController &usbController = machine.GetUSBController();
    1300         bool fUSBControllerEnabled = !usbController.isNull() && usbController.GetEnabled() && usbController.GetProxyAvailable();
     1299        /*
     1300         * Check whether there is at least one OHCI USB controllers with
     1301         * an available proxy.
     1302         */
     1303        const CUSBDeviceFilters &filters = machine.GetUSBDeviceFilters();
     1304        ULONG cOhciCtls = machine.GetUSBControllerCountByType(KUSBControllerType_OHCI);
     1305        bool fUSBEnabled = !filters.isNull() && cOhciCtls && machine.GetUSBProxyAvailable();
     1306
    13011307        /* Show/Hide USB menu depending on controller availability, activity and USB-proxy presence: */
    1302         gActionPool->action(UIActionIndexRuntime_Menu_USBDevices)->setVisible(fUSBControllerEnabled);
     1308        gActionPool->action(UIActionIndexRuntime_Menu_USBDevices)->setVisible(fUSBEnabled);
    13031309    }
    13041310}
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp

    r46831 r47401  
    4747#include "CMediumAttachment.h"
    4848#include "CUSBController.h"
     49#include "CUSBDeviceFilters.h"
    4950
    5051UIMachineWindowNormal::UIMachineWindowNormal(UIMachineLogic *pMachineLogic, ulong uScreenId)
     
    488489        if (indicatorsPool()->indicator(IndicatorType_USB))
    489490        {
    490             const CUSBController &usbController = m.GetUSBController();
    491             if (    usbController.isNull()
    492                 || !usbController.GetEnabled()
    493                 || !usbController.GetProxyAvailable())
     491            const CUSBDeviceFilters &filters = m.GetUSBDeviceFilters();
     492            ULONG cOhciCtls = m.GetUSBControllerCountByType(KUSBControllerType_OHCI);
     493            bool fUSBEnabled = !filters.isNull() && cOhciCtls && m.GetUSBProxyAvailable();
     494
     495            if (!fUSBEnabled)
    494496            {
    495497                /* Hide USB menu: */
     
    499501            {
    500502                /* Toggle USB LED: */
    501                 indicatorsPool()->indicator(IndicatorType_USB)->setState(
    502                     usbController.GetEnabled() ? KDeviceActivity_Idle : KDeviceActivity_Null);
     503                indicatorsPool()->indicator(IndicatorType_USB)->setState(KDeviceActivity_Idle);
    503504            }
    504505        }
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElements.cpp

    r47376 r47401  
    889889        {
    890890            /* Iterate over all the USB filters: */
    891             const CUSBController &ctl = machine().GetUSBController();
    892             if (!ctl.isNull() && ctl.GetProxyAvailable())
     891            const CUSBDeviceFilters &filters = machine().GetUSBDeviceFilters();
     892            if (!filters.isNull() && machine().GetUSBProxyAvailable())
    893893            {
    894894                const CUSBDeviceFilters &flts = machine().GetUSBDeviceFilters();
    895                 if (!flts.isNull() && ctl.GetEnabled())
     895                if (!flts.isNull() && machine().GetUSBControllerCountByType(KUSBControllerType_OHCI))
    896896                {
    897897                    const CUSBDeviceFilterVector &coll = flts.GetDeviceFilters();
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsSet.cpp

    r45287 r47401  
    2929/* COM includes: */
    3030#include "CUSBController.h"
     31#include "CUSBDeviceFilters.h"
    3132
    3233UIGDetailsSet::UIGDetailsSet(UIGDetailsItem *pParent)
     
    9697
    9798    /* Fetch USB controller restrictions: */
    98     const CUSBController &ctl = m_machine.GetUSBController();
    99     if (ctl.isNull() || !ctl.GetProxyAvailable())
     99    const CUSBDeviceFilters &filters = m_machine.GetUSBDeviceFilters();
     100    if (filters.isNull() || !m_machine.GetUSBProxyAvailable())
    100101    {
    101102        QString strElementTypeOpened = gpConverter->toInternalString(DetailsElementType_USB);
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp

    r47263 r47401  
    858858        if (pSystemPage && pSystemPage->isHIDEnabled())
    859859        {
    860             CUSBController controller = m_machine.GetUSBController();
    861             if (!controller.isNull())
    862                 controller.SetEnabled(true);
     860            ULONG cOhciCtls = m_machine.GetUSBControllerCountByType(KUSBControllerType_OHCI);
     861            if (!cOhciCtls)
     862                m_machine.AddUSBController("OHCI", KUSBControllerType_OHCI);
    863863        }
    864864
     
    11241124            if (!isPageAvailable(MachineSettingsPageType_Ports))
    11251125                return false;
     1126            /* Check if USB is implemented: */
     1127            if (!m_machine.GetUSBProxyAvailable())
     1128                return false;
    11261129            /* Get the USB controller object: */
    1127             CUSBController controller = m_machine.GetUSBController();
     1130            CUSBControllerVector controllerColl = m_machine.GetUSBControllers();
    11281131            /* Show the machine error message if any: */
    1129             if (!m_machine.isReallyOk() && !controller.isNull() && controller.GetEnabled())
     1132            if (   !m_machine.isReallyOk()
     1133                && controllerColl.size() > 0
     1134                && m_machine.GetUSBControllerCountByType(KUSBControllerType_OHCI))
    11301135                msgCenter().warnAboutUnaccessibleUSB(m_machine, parentWidget());
    1131             /* Check if USB is implemented: */
    1132             if (controller.isNull() || !controller.GetProxyAvailable())
    1133                 return false;
    11341136            break;
    11351137        }
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp

    r47376 r47401  
    294294
    295295            /* Check if controller is valid: */
    296             const CUSBController &controller = m_machine.GetUSBController();
    297             if (!controller.isNull())
     296            const CUSBDeviceFilters &filters = m_machine.GetUSBDeviceFilters();
     297            if (!filters.isNull())
    298298            {
    299299                /* Gather USB values: */
    300                 usbData.m_fUSBEnabled = controller.GetEnabled();
    301                 usbData.m_fEHCIEnabled = controller.GetEnabledEHCI();
     300                usbData.m_fUSBEnabled = m_machine.GetUSBControllerCountByType(KUSBControllerType_OHCI) > 0;
     301                usbData.m_fEHCIEnabled = m_machine.GetUSBControllerCountByType(KUSBControllerType_EHCI) > 0;
    302302
    303303                /* For each USB filter: */
    304                 const CUSBDeviceFilters &filters = m_machine.GetUSBDeviceFilters();
    305                 if (!filters.isNull())
     304                const CUSBDeviceFilterVector &coll = filters.GetDeviceFilters();
     305                for (int iFilterIndex = 0; iFilterIndex < coll.size(); ++iFilterIndex)
    306306                {
    307                     const CUSBDeviceFilterVector &coll = filters.GetDeviceFilters();
    308                     for (int iFilterIndex = 0; iFilterIndex < coll.size(); ++iFilterIndex)
     307                    /* Prepare USB filter data: */
     308                    UIDataSettingsMachineUSBFilter usbFilterData;
     309
     310                    /* Check if filter is valid: */
     311                    const CUSBDeviceFilter &filter = coll[iFilterIndex];
     312                    if (!filter.isNull())
    309313                    {
    310                         /* Prepare USB filter data: */
    311                         UIDataSettingsMachineUSBFilter usbFilterData;
    312 
    313                         /* Check if filter is valid: */
    314                         const CUSBDeviceFilter &filter = coll[iFilterIndex];
    315                         if (!filter.isNull())
    316                         {
    317                             usbFilterData.m_fActive = filter.GetActive();
    318                             usbFilterData.m_strName = filter.GetName();
    319                             usbFilterData.m_strVendorId = filter.GetVendorId();
    320                             usbFilterData.m_strProductId = filter.GetProductId();
    321                             usbFilterData.m_strRevision = filter.GetRevision();
    322                             usbFilterData.m_strManufacturer = filter.GetManufacturer();
    323                             usbFilterData.m_strProduct = filter.GetProduct();
    324                             usbFilterData.m_strSerialNumber = filter.GetSerialNumber();
    325                             usbFilterData.m_strPort = filter.GetPort();
    326                             usbFilterData.m_strRemote = filter.GetRemote();
    327                         }
    328 
    329                         /* Cache USB filter data: */
    330                         m_cache.child(iFilterIndex).cacheInitialData(usbFilterData);
     314                        usbFilterData.m_fActive = filter.GetActive();
     315                        usbFilterData.m_strName = filter.GetName();
     316                        usbFilterData.m_strVendorId = filter.GetVendorId();
     317                        usbFilterData.m_strProductId = filter.GetProductId();
     318                        usbFilterData.m_strRevision = filter.GetRevision();
     319                        usbFilterData.m_strManufacturer = filter.GetManufacturer();
     320                        usbFilterData.m_strProduct = filter.GetProduct();
     321                        usbFilterData.m_strSerialNumber = filter.GetSerialNumber();
     322                        usbFilterData.m_strPort = filter.GetPort();
     323                        usbFilterData.m_strRemote = filter.GetRemote();
    331324                    }
     325
     326                    /* Cache USB filter data: */
     327                    m_cache.child(iFilterIndex).cacheInitialData(usbFilterData);
    332328                }
    333329            }
     
    491487            {
    492488                /* Check if controller is valid: */
    493                 CUSBController controller = m_machine.GetUSBController();
    494                 if (!controller.isNull())
     489                CUSBDeviceFilters filters = m_machine.GetUSBDeviceFilters();
     490                if (!filters.isNull())
    495491                {
    496492                    /* Get USB data from cache: */
    497                     CUSBDeviceFilters filters = m_machine.GetUSBDeviceFilters();
     493
    498494                    const UIDataSettingsMachineUSB &usbData = m_cache.data();
    499495                    /* Store USB data: */
    500496                    if (isMachineOffline())
    501497                    {
    502                         controller.SetEnabled(usbData.m_fUSBEnabled);
    503                         controller.SetEnabledEHCI(usbData.m_fEHCIEnabled);
     498                        ULONG cOhciCtls = m_machine.GetUSBControllerCountByType(KUSBControllerType_OHCI);
     499                        ULONG cEhciCtls = m_machine.GetUSBControllerCountByType(KUSBControllerType_EHCI);
     500
     501                        if (!cOhciCtls && usbData.m_fUSBEnabled)
     502                            m_machine.AddUSBController("OHCI", KUSBControllerType_OHCI);
     503                        else if (cOhciCtls && !usbData.m_fUSBEnabled)
     504                            m_machine.RemoveUSBController("OHCI");
     505
     506                        if (!cEhciCtls && usbData.m_fEHCIEnabled)
     507                            m_machine.AddUSBController("EHCI", KUSBControllerType_EHCI);
     508                        else if (cEhciCtls && !usbData.m_fEHCIEnabled)
     509                            m_machine.RemoveUSBController("EHCI");
    504510                    }
    505511                    /* Store USB filters data: */
    506                     if (   isMachineInValidMode()
    507                         && !filters.isNull())
     512                    if (isMachineInValidMode())
    508513                    {
    509514                        /* For each USB filter data set: */
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.cpp

    r45316 r47401  
    3030#include "CAudioAdapter.h"
    3131#include "CUSBController.h"
     32#include "CUSBDeviceFilters.h"
    3233#include "CExtPackManager.h"
    3334#include "CStorageController.h"
     
    9495
    9596    /* Enable the OHCI and EHCI controller by default for new VMs. (new in 2.2): */
    96     CUSBController usbController = m_machine.GetUSBController();
    97     if (!usbController.isNull() && type.GetRecommendedUSB() && usbController.GetProxyAvailable())
    98     {
    99         usbController.SetEnabled(true);
     97    CUSBDeviceFilters usbDeviceFilters = m_machine.GetUSBDeviceFilters();
     98    bool fOhciEnabled = false;
     99    if (!usbDeviceFilters.isNull() && type.GetRecommendedUSB() && m_machine.GetUSBProxyAvailable())
     100    {
     101        m_machine.AddUSBController("OHCI", KUSBControllerType_OHCI);
     102        fOhciEnabled = true;
    100103        /* USB 2.0 is only available if the proper ExtPack is installed.
    101104         * Note. Configuring EHCI here and providing messages about
     
    105108        CExtPackManager manager = vboxGlobal().virtualBox().GetExtensionPackManager();
    106109        if (manager.IsExtPackUsable(GUI_ExtPackName))
    107             usbController.SetEnabledEHCI(true);
     110            m_machine.AddUSBController("EHCI", KUSBControllerType_EHCI);
    108111    }
    109112
     
    162165        m_machine.SetKeyboardHIDType(KKeyboardHIDType_USBKeyboard);
    163166        m_machine.SetPointingHIDType(KPointingHIDType_USBMouse);
    164         if (!usbController.isNull())
    165             usbController.SetEnabled(true);
     167        if (!fOhciEnabled && !usbDeviceFilters.isNull())
     168            m_machine.AddUSBController("OHCI", KUSBControllerType_OHCI);
    166169    }
    167170
     
    169172    {
    170173        m_machine.SetPointingHIDType(KPointingHIDType_USBTablet);
    171         if (!usbController.isNull())
    172             usbController.SetEnabled(true);
     174        if (!fOhciEnabled && !usbDeviceFilters.isNull())
     175            m_machine.AddUSBController("OHCI", KUSBControllerType_OHCI);
    173176    }
    174177
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