summaryrefslogtreecommitdiff
path: root/src/VBox/Main/include/ConsoleImpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Main/include/ConsoleImpl.h')
-rw-r--r--src/VBox/Main/include/ConsoleImpl.h201
1 files changed, 120 insertions, 81 deletions
diff --git a/src/VBox/Main/include/ConsoleImpl.h b/src/VBox/Main/include/ConsoleImpl.h
index 72066ad5..5e5cb696 100644
--- a/src/VBox/Main/include/ConsoleImpl.h
+++ b/src/VBox/Main/include/ConsoleImpl.h
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2005-2012 Oracle Corporation
+ * Copyright (C) 2005-2014 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -32,11 +32,9 @@ class OUSBDevice;
class RemoteUSBDevice;
class SharedFolder;
class VRDEServerInfo;
+class EmulatedUSB;
class AudioSniffer;
class Nvram;
-#ifdef VBOX_WITH_USB_VIDEO
-class UsbWebcamInterface;
-#endif
#ifdef VBOX_WITH_USB_CARDREADER
class UsbCardReader;
#endif
@@ -48,6 +46,8 @@ COM_STRUCT_OR_CLASS(IEventListener);
#ifdef VBOX_WITH_EXTPACK
class ExtPackManager;
#endif
+class VMMDevMouseInterface;
+class DisplayMouseInterface;
#include <VBox/RemoteDesktop/VRDE.h>
#include <VBox/vmm/pdmdrv.h>
@@ -88,10 +88,21 @@ typedef struct VUSBIRHCONFIG *PVUSBIRHCONFIG;
// Console
///////////////////////////////////////////////////////////////////////////////
+class ConsoleMouseInterface
+{
+public:
+ virtual VMMDevMouseInterface *getVMMDevMouseInterface() = 0;
+ virtual DisplayMouseInterface *getDisplayMouseInterface() = 0;
+ virtual void onMouseCapabilityChange(BOOL supportsAbsolute,
+ BOOL supportsRelative,
+ BOOL supportsMT,
+ BOOL needsHostCursor) = 0;
+};
+
/** IConsole implementation class */
class ATL_NO_VTABLE Console :
public VirtualBoxBase,
- VBOX_SCRIPTABLE_IMPL(IConsole)
+ VBOX_SCRIPTABLE_IMPL(IConsole), public ConsoleMouseInterface
{
Q_OBJECT
@@ -133,6 +144,7 @@ public:
STDMETHOD(COMGETTER(AttachedPCIDevices))(ComSafeArrayOut(IPCIDeviceAttachment *, aAttachments));
STDMETHOD(COMGETTER(UseHostClipboard))(BOOL *aUseHostClipboard);
STDMETHOD(COMSETTER(UseHostClipboard))(BOOL aUseHostClipboard);
+ STDMETHOD(COMGETTER(EmulatedUSB))(IEmulatedUSB **aEmulatedUSB);
// IConsole methods
STDMETHOD(PowerUp)(IProgress **aProgress);
@@ -200,12 +212,15 @@ public:
HRESULT onClipboardModeChange(ClipboardMode_T aClipboardMode);
HRESULT onDragAndDropModeChange(DragAndDropMode_T aDragAndDropMode);
HRESULT onVRDEServerChange(BOOL aRestart);
+ HRESULT onVideoCaptureChange();
HRESULT onUSBControllerChange();
HRESULT onSharedFolderChange(BOOL aGlobal);
HRESULT onUSBDeviceAttach(IUSBDevice *aDevice, IVirtualBoxErrorInfo *aError, ULONG aMaskedIfs);
HRESULT onUSBDeviceDetach(IN_BSTR aId, IVirtualBoxErrorInfo *aError);
HRESULT onBandwidthGroupChange(IBandwidthGroup *aBandwidthGroup);
- HRESULT onStorageDeviceChange(IMediumAttachment *aMediumAttachment, BOOL aRemove);
+ HRESULT onStorageDeviceChange(IMediumAttachment *aMediumAttachment, BOOL aRemove, BOOL aSilent);
+ HRESULT onExtraDataChange(IN_BSTR aMachineId, IN_BSTR aKey, IN_BSTR aVal);
+
HRESULT getGuestProperty(IN_BSTR aKey, BSTR *aValue, LONG64 *aTimestamp, BSTR *aFlags);
HRESULT setGuestProperty(IN_BSTR aKey, IN_BSTR aValue, IN_BSTR aFlags);
HRESULT enumerateGuestProperties(IN_BSTR aPatterns,
@@ -215,10 +230,8 @@ public:
ComSafeArrayOut(BSTR, aFlags));
HRESULT onlineMergeMedium(IMediumAttachment *aMediumAttachment,
ULONG aSourceIdx, ULONG aTargetIdx,
- IMedium *aSource, IMedium *aTarget,
- BOOL aMergeForward, IMedium *aParentForTarget,
- ComSafeArrayIn(IMedium *, aChildrenToReparent),
IProgress *aProgress);
+ int hgcmLoadService(const char *pszServiceLibrary, const char *pszServiceName);
VMMDev *getVMMDev() { return m_pVMMDev; }
AudioSniffer *getAudioSniffer() { return mAudioSniffer; }
#ifdef VBOX_WITH_EXTPACK
@@ -238,28 +251,34 @@ public:
void VRDPInterceptClipboard(uint32_t u32ClientId);
void processRemoteUSBDevices(uint32_t u32ClientId, VRDEUSBDEVICEDESC *pDevList, uint32_t cbDevList, bool fDescExt);
- void reportGuestStatistics(ULONG aValidStats, ULONG aCpuUser,
+ void reportVmStatistics(ULONG aValidStats, ULONG aCpuUser,
ULONG aCpuKernel, ULONG aCpuIdle,
ULONG aMemTotal, ULONG aMemFree,
ULONG aMemBalloon, ULONG aMemShared,
ULONG aMemCache, ULONG aPageTotal,
ULONG aAllocVMM, ULONG aFreeVMM,
- ULONG aBalloonedVMM, ULONG aSharedVMM)
+ ULONG aBalloonedVMM, ULONG aSharedVMM,
+ ULONG aVmNetRx, ULONG aVmNetTx)
{
- mControl->ReportGuestStatistics(aValidStats, aCpuUser, aCpuKernel, aCpuIdle,
- aMemTotal, aMemFree, aMemBalloon, aMemShared,
- aMemCache, aPageTotal, aAllocVMM, aFreeVMM,
- aBalloonedVMM, aSharedVMM);
+ mControl->ReportVmStatistics(aValidStats, aCpuUser, aCpuKernel, aCpuIdle,
+ aMemTotal, aMemFree, aMemBalloon, aMemShared,
+ aMemCache, aPageTotal, aAllocVMM, aFreeVMM,
+ aBalloonedVMM, aSharedVMM, aVmNetRx, aVmNetTx);
}
void enableVMMStatistics(BOOL aEnable);
+ HRESULT pause(Reason_T aReason);
+ HRESULT resume(Reason_T aReason);
+ HRESULT saveState(Reason_T aReason, IProgress **aProgress);
+
// callback callers (partly; for some events console callbacks are notified
// directly from IInternalSessionControl event handlers declared above)
void onMousePointerShapeChange(bool fVisible, bool fAlpha,
uint32_t xHot, uint32_t yHot,
uint32_t width, uint32_t height,
ComSafeArrayIn(uint8_t, aShape));
- void onMouseCapabilityChange(BOOL supportsAbsolute, BOOL supportsRelative, BOOL needsHostCursor);
+ void onMouseCapabilityChange(BOOL supportsAbsolute, BOOL supportsRelative,
+ BOOL supportsMT, BOOL needsHostCursor);
void onStateChange(MachineState_T aMachineState);
void onAdditionsStateChange();
void onAdditionsOutdated();
@@ -281,10 +300,16 @@ public:
HRESULT onNATRedirectRuleChange(ULONG ulInstance, BOOL aNatRuleRemove,
NATProtocol_T aProto, IN_BSTR aHostIp, LONG aHostPort, IN_BSTR aGuestIp, LONG aGuestPort);
+ // Mouse interface
+ VMMDevMouseInterface *getVMMDevMouseInterface();
+ DisplayMouseInterface *getDisplayMouseInterface();
+
+ EmulatedUSB *getEmulatedUSB(void) { return mEmulatedUSB; }
+
private:
/**
- * Base template for AutoVMCaller and SaveVMPtr. Template arguments
+ * Base template for AutoVMCaller and SafeVMPtr. Template arguments
* have the same meaning as arguments of Console::addVMCaller().
*/
template <bool taQuiet = false, bool taAllowNullVM = false>
@@ -328,15 +353,15 @@ private:
#if 0
/**
- * Helper class that protects sections of code using the mpVM pointer by
+ * Helper class that protects sections of code using the mpUVM pointer by
* automatically calling addVMCaller() on construction and
* releaseVMCaller() on destruction. Intended for Console methods dealing
- * with mpVM. The usage pattern is:
+ * with mpUVM. The usage pattern is:
* <code>
* AutoVMCaller autoVMCaller(this);
* if (FAILED(autoVMCaller.rc())) return autoVMCaller.rc();
* ...
- * VMR3ReqCall (mpVM, ...
+ * VMR3ReqCall (mpUVM, ...
* </code>
*
* @note Temporarily locks the argument for writing.
@@ -375,56 +400,52 @@ private:
typedef AutoVMCallerBase<true, true> AutoVMCallerQuietWeak;
/**
- * Base template for SaveVMPtr and SaveVMPtrQuiet.
+ * Base template for SafeVMPtr and SafeVMPtrQuiet.
*/
template<bool taQuiet = false>
class SafeVMPtrBase : public AutoVMCallerBase<taQuiet, true>
{
typedef AutoVMCallerBase<taQuiet, true> Base;
public:
- SafeVMPtrBase(Console *aThat) : Base(aThat), mpVM(NULL), mpUVM(NULL)
+ SafeVMPtrBase(Console *aThat) : Base(aThat), mpUVM(NULL)
{
if (SUCCEEDED(Base::mRC))
- Base::mRC = aThat->safeVMPtrRetainer(&mpVM, &mpUVM, taQuiet);
+ Base::mRC = aThat->safeVMPtrRetainer(&mpUVM, taQuiet);
}
~SafeVMPtrBase()
{
if (SUCCEEDED(Base::mRC))
release();
}
- /** Smart SaveVMPtr to PVM cast operator */
- operator PVM() const { return mpVM; }
- /** Direct PVM access for printf()-like functions */
- PVM raw() const { return mpVM; }
- /** Direct PUVM access for printf()-like functions */
+ /** Direct PUVM access. */
PUVM rawUVM() const { return mpUVM; }
/** Release the handles. */
void release()
{
AssertReturnVoid(SUCCEEDED(Base::mRC));
- Base::mThat->safeVMPtrReleaser(&mpVM, &mpUVM);
+ Base::mThat->safeVMPtrReleaser(&mpUVM);
Base::releaseCaller();
}
private:
- PVM mpVM;
PUVM mpUVM;
DECLARE_CLS_COPY_CTOR_ASSIGN_NOOP(SafeVMPtrBase)
};
public:
- /**
- * Helper class that safely manages the Console::mpVM pointer
+ /*
+ * Helper class that safely manages the Console::mpUVM pointer
* by calling addVMCaller() on construction and releaseVMCaller() on
* destruction. Intended for Console children. The usage pattern is:
* <code>
- * Console::SaveVMPtr pVM(mParent);
- * if (FAILED(pVM.rc())) return pVM.rc();
+ * Console::SafeVMPtr ptrVM(mParent);
+ * if (!ptrVM.isOk())
+ * return ptrVM.rc();
* ...
- * VMR3ReqCall(pVM, ...
+ * VMR3ReqCall(ptrVM.rawUVM(), ...
* ...
- * printf("%p\n", pVM.raw());
+ * printf("%p\n", ptrVM.rawUVM());
* </code>
*
* @note Temporarily locks the argument for writing.
@@ -434,11 +455,11 @@ public:
typedef SafeVMPtrBase<false> SafeVMPtr;
/**
- * A deviation of SaveVMPtr that doesn't set the error info on failure.
+ * A deviation of SafeVMPtr that doesn't set the error info on failure.
* Intended for pieces of code that don't need to return the VM access
* failure to the caller. The usage pattern is:
* <code>
- * Console::SaveVMPtrQuiet pVM(mParent);
+ * Console::SafeVMPtrQuiet pVM(mParent);
* if (pVM.rc())
* VMR3ReqCall(pVM, ...
* return S_OK;
@@ -487,8 +508,8 @@ private:
HRESULT addVMCaller(bool aQuiet = false, bool aAllowNullVM = false);
void releaseVMCaller();
- HRESULT safeVMPtrRetainer(PVM *a_ppVM, PUVM *a_ppUVM, bool aQuiet);
- void safeVMPtrReleaser(PVM *a_ppVM, PUVM *a_ppUVM);
+ HRESULT safeVMPtrRetainer(PUVM *a_ppUVM, bool aQuiet);
+ void safeVMPtrReleaser(PUVM *a_ppUVM);
HRESULT consoleInitReleaseLog(const ComPtr<IMachine> aMachine);
@@ -519,10 +540,20 @@ private:
HRESULT createSharedFolder(const Utf8Str &strName, const SharedFolderData &aData);
HRESULT removeSharedFolder(const Utf8Str &strName);
- static DECLCALLBACK(int) configConstructor(PVM pVM, void *pvConsole);
- int configConstructorInner(PVM pVM, AutoWriteLock *pAlock);
- int configCfgmOverlay(PVM pVM, IVirtualBox *pVirtualBox, IMachine *pMachine);
+ HRESULT suspendBeforeConfigChange(PUVM pUVM, AutoWriteLock *pAlock, bool *pfResume);
+ void resumeAfterConfigChange(PUVM pUVM);
+ static DECLCALLBACK(int) configConstructor(PUVM pUVM, PVM pVM, void *pvConsole);
+ int configConstructorInner(PUVM pUVM, PVM pVM, AutoWriteLock *pAlock);
+ int configCfgmOverlay(PCFGMNODE pRoot, IVirtualBox *pVirtualBox, IMachine *pMachine);
+ int configDumpAPISettingsTweaks(IVirtualBox *pVirtualBox, IMachine *pMachine);
+
+ int configGraphicsController(PCFGMNODE pDevices,
+ const GraphicsControllerType_T graphicsController,
+ BusAssignmentManager *pBusMgr,
+ const ComPtr<IMachine> &pMachine,
+ const ComPtr<IBIOSSettings> &biosSettings,
+ bool fHMEnabled);
int configMediumAttachment(PCFGMNODE pCtlInst,
const char *pcszDevice,
unsigned uInstance,
@@ -538,8 +569,9 @@ private:
bool fAttachDetach,
bool fForceUnmount,
bool fHotplug,
- PVM pVM,
- DeviceType_T *paLedDevType);
+ PUVM pUVM,
+ DeviceType_T *paLedDevType,
+ PCFGMNODE *ppLunL0);
int configMedium(PCFGMNODE pLunL0,
bool fPassthrough,
DeviceType_T enmType,
@@ -553,8 +585,8 @@ private:
IMedium *pMedium,
MachineState_T aMachineState,
HRESULT *phrc);
- static DECLCALLBACK(int) reconfigureMediumAttachment(Console *pConsole,
- PVM pVM,
+ static DECLCALLBACK(int) reconfigureMediumAttachment(Console *pThis,
+ PUVM pUVM,
const char *pcszDevice,
unsigned uInstance,
StorageBus_T enmBus,
@@ -567,7 +599,7 @@ private:
MachineState_T aMachineState,
HRESULT *phrc);
static DECLCALLBACK(int) changeRemovableMedium(Console *pThis,
- PVM pVM,
+ PUVM pUVM,
const char *pcszDevice,
unsigned uInstance,
StorageBus_T enmBus,
@@ -575,7 +607,7 @@ private:
IMediumAttachment *aMediumAtt,
bool fForce);
- HRESULT attachRawPCIDevices(PVM pVM, BusAssignmentManager *BusMgr, PCFGMNODE pDevices);
+ HRESULT attachRawPCIDevices(PUVM pUVM, BusAssignmentManager *BusMgr, PCFGMNODE pDevices);
void attachStatusDriver(PCFGMNODE pCtlInst, PPDMLED *papLeds,
uint64_t uFirst, uint64_t uLast,
Console::MediumAttachmentMap *pmapMediumAttachments,
@@ -586,19 +618,18 @@ private:
PCFGMNODE pLunL0, PCFGMNODE pInst,
bool fAttachDetach, bool fIgnoreConnectFailure);
- static DECLCALLBACK(int) configGuestProperties(void *pvConsole, PVM pVM);
+ static DECLCALLBACK(int) configGuestProperties(void *pvConsole, PUVM pUVM);
static DECLCALLBACK(int) configGuestControl(void *pvConsole);
- static DECLCALLBACK(void) vmstateChangeCallback(PVM aVM, VMSTATE aState,
- VMSTATE aOldState, void *aUser);
- static DECLCALLBACK(int) unplugCpu(Console *pThis, PVM pVM, unsigned uCpu);
- static DECLCALLBACK(int) plugCpu(Console *pThis, PVM pVM, unsigned uCpu);
- HRESULT doMediumChange(IMediumAttachment *aMediumAttachment, bool fForce, PVM pVM);
- HRESULT doCPURemove(ULONG aCpu, PVM pVM);
- HRESULT doCPUAdd(ULONG aCpu, PVM pVM);
-
- HRESULT doNetworkAdapterChange(PVM pVM, const char *pszDevice, unsigned uInstance,
+ static DECLCALLBACK(void) vmstateChangeCallback(PUVM pUVM, VMSTATE enmState, VMSTATE enmOldState, void *pvUser);
+ static DECLCALLBACK(int) unplugCpu(Console *pThis, PUVM pUVM, VMCPUID idCpu);
+ static DECLCALLBACK(int) plugCpu(Console *pThis, PUVM pUVM, VMCPUID idCpu);
+ HRESULT doMediumChange(IMediumAttachment *aMediumAttachment, bool fForce, PUVM pUVM);
+ HRESULT doCPURemove(ULONG aCpu, PUVM pUVM);
+ HRESULT doCPUAdd(ULONG aCpu, PUVM pUVM);
+
+ HRESULT doNetworkAdapterChange(PUVM pUVM, const char *pszDevice, unsigned uInstance,
unsigned uLun, INetworkAdapter *aNetworkAdapter);
- static DECLCALLBACK(int) changeNetworkAttachment(Console *pThis, PVM pVM, const char *pszDevice,
+ static DECLCALLBACK(int) changeNetworkAttachment(Console *pThis, PUVM pUVM, const char *pszDevice,
unsigned uInstance, unsigned uLun,
INetworkAdapter *aNetworkAdapter);
@@ -609,40 +640,41 @@ private:
HRESULT attachUSBDevice(IUSBDevice *aHostDevice, ULONG aMaskedIfs);
HRESULT detachUSBDevice(const ComObjPtr<OUSBDevice> &aHostDevice);
- static DECLCALLBACK(int) usbAttachCallback(Console *that, PVM pVM, IUSBDevice *aHostDevice, PCRTUUID aUuid,
+ static DECLCALLBACK(int) usbAttachCallback(Console *that, PUVM pUVM, IUSBDevice *aHostDevice, PCRTUUID aUuid,
bool aRemote, const char *aAddress, void *pvRemoteBackend, USHORT aPortVersion, ULONG aMaskedIfs);
- static DECLCALLBACK(int) usbDetachCallback(Console *that, PVM pVM, PCRTUUID aUuid);
+ static DECLCALLBACK(int) usbDetachCallback(Console *that, PUVM pUVM, PCRTUUID aUuid);
#endif
static DECLCALLBACK(int) attachStorageDevice(Console *pThis,
- PVM pVM,
+ PUVM pUVM,
const char *pcszDevice,
unsigned uInstance,
StorageBus_T enmBus,
bool fUseHostIOCache,
- IMediumAttachment *aMediumAtt);
+ IMediumAttachment *aMediumAtt,
+ bool fSilent);
static DECLCALLBACK(int) detachStorageDevice(Console *pThis,
- PVM pVM,
+ PUVM pUVM,
const char *pcszDevice,
unsigned uInstance,
StorageBus_T enmBus,
- IMediumAttachment *aMediumAtt);
- HRESULT doStorageDeviceAttach(IMediumAttachment *aMediumAttachment, PVM pVM);
- HRESULT doStorageDeviceDetach(IMediumAttachment *aMediumAttachment, PVM pVM);
+ IMediumAttachment *aMediumAtt,
+ bool fSilent);
+ HRESULT doStorageDeviceAttach(IMediumAttachment *aMediumAttachment, PUVM pUVM, bool fSilent);
+ HRESULT doStorageDeviceDetach(IMediumAttachment *aMediumAttachment, PUVM pUVM, bool fSilent);
static DECLCALLBACK(int) fntTakeSnapshotWorker(RTTHREAD Thread, void *pvUser);
- static DECLCALLBACK(int) stateProgressCallback(PVM pVM, unsigned uPercent, void *pvUser);
+ static DECLCALLBACK(int) stateProgressCallback(PUVM pUVM, unsigned uPercent, void *pvUser);
- static DECLCALLBACK(void) genericVMSetErrorCallback(PVM pVM, void *pvUser, int rc, RT_SRC_POS_DECL,
+ static DECLCALLBACK(void) genericVMSetErrorCallback(PUVM pUVM, void *pvUser, int rc, RT_SRC_POS_DECL,
const char *pszErrorFmt, va_list va);
- static void setVMRuntimeErrorCallbackF(PVM pVM, void *pvUser, uint32_t fFatal,
- const char *pszErrorId, const char *pszFormat, ...);
- static DECLCALLBACK(void) setVMRuntimeErrorCallback(PVM pVM, void *pvUser, uint32_t fFatal,
+ void setVMRuntimeErrorCallbackF(uint32_t fFatal, const char *pszErrorId, const char *pszFormat, ...);
+ static DECLCALLBACK(void) setVMRuntimeErrorCallback(PUVM pUVM, void *pvUser, uint32_t fFatal,
const char *pszErrorId, const char *pszFormat, va_list va);
- HRESULT captureUSBDevices(PVM pVM);
+ HRESULT captureUSBDevices(PUVM pUVM);
void detachAllUSBDevices(bool aDone);
static DECLCALLBACK(int) powerUpThread(RTTHREAD Thread, void *pvUser);
@@ -654,6 +686,7 @@ private:
static DECLCALLBACK(void) vmm2User_NotifyEmtTerm(PCVMM2USERMETHODS pThis, PUVM pUVM, PUVMCPU pUVCpu);
static DECLCALLBACK(void) vmm2User_NotifyPdmtInit(PCVMM2USERMETHODS pThis, PUVM pUVM);
static DECLCALLBACK(void) vmm2User_NotifyPdmtTerm(PCVMM2USERMETHODS pThis, PUVM pUVM);
+ static DECLCALLBACK(void) vmm2User_NotifyResetTurnedIntoPowerOff(PCVMM2USERMETHODS pThis, PUVM pUVM);
static DECLCALLBACK(void *) drvStatus_QueryInterface(PPDMIBASE pInterface, const char *pszIID);
static DECLCALLBACK(void) drvStatus_UnitChanged(PPDMILEDCONNECTORS pInterface, unsigned iLUN);
@@ -695,6 +728,8 @@ private:
void guestPropertiesVRDPUpdateDisconnect(uint32_t u32ClientId);
#endif
+ bool isResetTurnedIntoPowerOff(void);
+
/** @name Teleporter support
* @{ */
static DECLCALLBACK(int) teleporterSrcThreadWrapper(RTTHREAD hThread, void *pvUser);
@@ -714,6 +749,8 @@ private:
const ComPtr<IVRDEServer> mVRDEServer;
ConsoleVRDPServer * const mConsoleVRDPServer;
+ bool mfVRDEChangeInProcess;
+ bool mfVRDEChangePending;
const ComObjPtr<Guest> mGuest;
const ComObjPtr<Keyboard> mKeyboard;
@@ -728,6 +765,7 @@ private:
#ifdef VBOX_WITH_EXTPACK
const ComObjPtr<ExtPackManager> mptrExtPackManager;
#endif
+ const ComObjPtr<EmulatedUSB> mEmulatedUSB;
USBDeviceList mUSBDevices;
RemoteUSBDeviceList mRemoteUSBDevices;
@@ -738,13 +776,13 @@ private:
/** The user mode VM handle. */
PUVM mpUVM;
- /** Holds the number of "readonly" mpVM callers (users) */
+ /** Holds the number of "readonly" mpUVM callers (users). */
uint32_t mVMCallers;
- /** Semaphore posted when the number of mpVM callers drops to zero */
+ /** Semaphore posted when the number of mpUVM callers drops to zero. */
RTSEMEVENT mVMZeroCallersSem;
- /** true when Console has entered the mpVM destruction phase */
+ /** true when Console has entered the mpUVM destruction phase. */
bool mVMDestroying : 1;
- /** true when power down is initiated by vmstateChangeCallback (EMT) */
+ /** true when power down is initiated by vmstateChangeCallback (EMT). */
bool mVMPoweredOff : 1;
/** true when vmstateChangeCallback shouldn't initiate a power down. */
bool mVMIsAlreadyPoweringOff : 1;
@@ -754,6 +792,10 @@ private:
bool mfSnapshotFolderExt4WarningShown : 1;
/** true if we already listed the disk type of the snapshot folder. */
bool mfSnapshotFolderDiskTypeShown : 1;
+ /** true if a USB controller is available (i.e. USB devices can be attached). */
+ bool mfVMHasUsbController : 1;
+ /** true if the VM power off was caused by reset. */
+ bool mfPowerOffCausedByReset : 1;
/** Pointer to the VMM -> User (that's us) callbacks. */
struct MYVMM2USERMETHODS : public VMM2USERMETHODS
@@ -772,9 +814,6 @@ private:
VMMDev * m_pVMMDev;
AudioSniffer * const mAudioSniffer;
Nvram * const mNvram;
-#ifdef VBOX_WITH_USB_VIDEO
- UsbWebcamInterface * const mUsbWebcamInterface;
-#endif
#ifdef VBOX_WITH_USB_CARDREADER
UsbCardReader * const mUsbCardReader;
#endif