VirtualBox

Ignore:
Timestamp:
Sep 30, 2010 3:12:55 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
66324
Message:

Main: defer creation of the VMMDev instance in Console to Console::powerUpThread so that the VMMDev with the HGCM thread only gets created for session/console pairs any more which actually power up a VM; this avoids creating dozens of HGCM threads for every single session even if it never starts a VM; some more Console code cleanup while we're at it

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/VBox/Main/ConsoleImpl2.cpp

    r32780 r32851  
    495495    pConsole->mpVM = pVM;
    496496
     497    VMMDev *pVMMDev = pConsole->m_pVMMDev;
     498    Assert(pVMMDev);
     499
    497500    ComPtr<IMachine> pMachine = pConsole->machine();
    498501
     
    18111814        InsertConfigString(pLunL0, "Driver",               "HGCM");
    18121815        InsertConfigNode(pLunL0,   "Config", &pCfg);
    1813         VMMDev *pVMMDev = pConsole->mVMMDev;
    18141816        InsertConfigInteger(pCfg,  "Object", (uintptr_t)pVMMDev);
    18151817
     
    21452147            {
    21462148                /* Load the service */
    2147                 rc = pConsole->mVMMDev->hgcmLoadService("VBoxSharedClipboard", "VBoxSharedClipboard");
     2149                rc = pVMMDev->hgcmLoadService("VBoxSharedClipboard", "VBoxSharedClipboard");
    21482150
    21492151                if (RT_FAILURE(rc))
     
    21892191                    }
    21902192
    2191                     pConsole->mVMMDev->hgcmHostCall("VBoxSharedClipboard", VBOX_SHARED_CLIPBOARD_HOST_FN_SET_MODE, 1, &parm);
     2193                    pVMMDev->hgcmHostCall("VBoxSharedClipboard", VBOX_SHARED_CLIPBOARD_HOST_FN_SET_MODE, 1, &parm);
    21922194
    21932195                    Log(("Set VBoxSharedClipboard mode\n"));
     
    22072209            {
    22082210                /* Load the service */
    2209                 rc = pConsole->mVMMDev->hgcmLoadService("VBoxSharedCrOpenGL", "VBoxSharedCrOpenGL");
     2211                rc = pVMMDev->hgcmLoadService("VBoxSharedCrOpenGL", "VBoxSharedCrOpenGL");
    22102212                if (RT_FAILURE(rc))
    22112213                {
     
    22252227                    parm.u.pointer.size = sizeof(IConsole *);
    22262228
    2227                     rc = pConsole->mVMMDev->hgcmHostCall("VBoxSharedCrOpenGL", SHCRGL_HOST_FN_SET_CONSOLE,
    2228                                                         SHCRGL_CPARMS_SET_CONSOLE, &parm);
     2229                    rc = pVMMDev->hgcmHostCall("VBoxSharedCrOpenGL", SHCRGL_HOST_FN_SET_CONSOLE, SHCRGL_CPARMS_SET_CONSOLE, &parm);
    22292230                    if (!RT_SUCCESS(rc))
    22302231                        AssertMsgFailed(("SHCRGL_HOST_FN_SET_CONSOLE failed with %Rrc\n", rc));
     
    22322233                    parm.u.pointer.addr = pVM;
    22332234                    parm.u.pointer.size = sizeof(pVM);
    2234                     rc = pConsole->mVMMDev->hgcmHostCall("VBoxSharedCrOpenGL", SHCRGL_HOST_FN_SET_VM,
    2235                                                         SHCRGL_CPARMS_SET_VM, &parm);
     2235                    rc = pVMMDev->hgcmHostCall("VBoxSharedCrOpenGL", SHCRGL_HOST_FN_SET_VM, SHCRGL_CPARMS_SET_VM, &parm);
    22362236                    if (!RT_SUCCESS(rc))
    22372237                        AssertMsgFailed(("SHCRGL_HOST_FN_SET_VM failed with %Rrc\n", rc));
     
    41874187    parms[3].u.pointer.size = 0;  /* We don't actually care. */
    41884188
    4189     pVMMDev->hgcmHostCall ("VBoxGuestPropSvc", guestProp::SET_PROPS_HOST, 4,
    4190                            &parms[0]);
     4189    pVMMDev->hgcmHostCall("VBoxGuestPropSvc",
     4190                          guestProp::SET_PROPS_HOST,
     4191                          4,
     4192                          &parms[0]);
    41914193}
    41924194
     
    41944196 * Set a single guest property
    41954197 */
    4196 static void configSetProperty(VMMDev * const pVMMDev, const char *pszName,
    4197                               const char *pszValue, const char *pszFlags)
     4198static void configSetProperty(VMMDev * const pVMMDev,
     4199                              const char *pszName,
     4200                              const char *pszValue,
     4201                              const char *pszFlags)
    41984202{
    41994203    VBOXHGCMSVCPARM parms[4];
     
    42514255    AssertReturn(pvConsole, VERR_GENERAL_FAILURE);
    42524256    ComObjPtr<Console> pConsole = static_cast<Console *>(pvConsole);
     4257    AssertReturn(pConsole->m_pVMMDev, VERR_GENERAL_FAILURE);
    42534258
    42544259    /* Load the service */
    4255     int rc = pConsole->mVMMDev->hgcmLoadService("VBoxGuestPropSvc", "VBoxGuestPropSvc");
     4260    int rc = pConsole->m_pVMMDev->hgcmLoadService("VBoxGuestPropSvc", "VBoxGuestPropSvc");
    42564261
    42574262    if (RT_FAILURE(rc))
     
    42714276
    42724277        /* Sysprep execution by VBoxService. */
    4273         configSetProperty(pConsole->mVMMDev,
     4278        configSetProperty(pConsole->m_pVMMDev,
    42744279                          "/VirtualBox/HostGuest/SysprepExec", "",
    42754280                          "TRANSIENT, RDONLYGUEST");
    4276         configSetProperty(pConsole->mVMMDev,
     4281        configSetProperty(pConsole->m_pVMMDev,
    42774282                          "/VirtualBox/HostGuest/SysprepArgs", "",
    42784283                          "TRANSIENT, RDONLYGUEST");
     
    43274332            }
    43284333            if (RT_SUCCESS(rc))
    4329                 configSetProperties(pConsole->mVMMDev,
     4334                configSetProperties(pConsole->m_pVMMDev,
    43304335                                    (void *)papszNames,
    43314336                                    (void *)papszValues,
     
    43554360         */
    43564361        /* Set the VBox version string as a guest property */
    4357         configSetProperty(pConsole->mVMMDev, "/VirtualBox/HostInfo/VBoxVer",
     4362        configSetProperty(pConsole->m_pVMMDev, "/VirtualBox/HostInfo/VBoxVer",
    43584363                          VBOX_VERSION_STRING, "TRANSIENT, RDONLYGUEST");
    43594364        /* Set the VBox SVN revision as a guest property */
    4360         configSetProperty(pConsole->mVMMDev, "/VirtualBox/HostInfo/VBoxRev",
     4365        configSetProperty(pConsole->m_pVMMDev, "/VirtualBox/HostInfo/VBoxRev",
    43614366                          RTBldCfgRevisionStr(), "TRANSIENT, RDONLYGUEST");
    43624367
     
    43934398
    43944399    /* Load the service */
    4395     int rc = pConsole->mVMMDev->hgcmLoadService("VBoxGuestControlSvc", "VBoxGuestControlSvc");
     4400    int rc = pConsole->m_pVMMDev->hgcmLoadService("VBoxGuestControlSvc", "VBoxGuestControlSvc");
    43964401
    43974402    if (RT_FAILURE(rc))
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