Changeset 95423 in vbox for trunk/src/VBox
- Timestamp:
- Jun 29, 2022 11:13:40 AM (3 years ago)
- Location:
- trunk/src/VBox
- Files:
-
- 4 added
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp
r95140 r95423 435 435 { 436 436 setCurrentSubcommand(HELP_SCOPE_CONTROLVM_AUDIOIN); 437 438 ComPtr<IAudioSettings> audioSettings; 439 CHECK_ERROR_BREAK(sessionMachine, COMGETTER(AudioSettings)(audioSettings.asOutParam())); 437 440 ComPtr<IAudioAdapter> adapter; 438 CHECK_ERROR_BREAK( sessionMachine, COMGETTER(AudioAdapter)(adapter.asOutParam()));441 CHECK_ERROR_BREAK(audioSettings, COMGETTER(Adapter)(adapter.asOutParam())); 439 442 if (adapter) 440 443 { … … 459 462 { 460 463 setCurrentSubcommand(HELP_SCOPE_CONTROLVM_AUDIOOUT); 464 465 ComPtr<IAudioSettings> audioSettings; 466 CHECK_ERROR_BREAK(sessionMachine, COMGETTER(AudioSettings)(audioSettings.asOutParam())); 461 467 ComPtr<IAudioAdapter> adapter; 462 CHECK_ERROR_BREAK( sessionMachine, COMGETTER(AudioAdapter)(adapter.asOutParam()));468 CHECK_ERROR_BREAK(audioSettings, COMGETTER(Adapter)(adapter.asOutParam())); 463 469 if (adapter) 464 470 { -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp
r95364 r95423 2144 2144 } 2145 2145 2146 ComPtr<IAudioAdapter> AudioAdapter; 2147 hrc = machine->COMGETTER(AudioAdapter)(AudioAdapter.asOutParam()); 2146 ComPtr<IAudioSettings> audioSettings; 2147 ComPtr<IAudioAdapter> audioAdapter; 2148 hrc = machine->COMGETTER(AudioSettings)(audioSettings.asOutParam()); 2149 if (SUCCEEDED(hrc)) 2150 hrc = audioSettings->COMGETTER(Adapter)(audioAdapter.asOutParam()); 2148 2151 if (SUCCEEDED(hrc)) 2149 2152 { … … 2152 2155 const char *pszCodec = Info::tr("Unknown"); 2153 2156 BOOL fEnabled; 2154 hrc = AudioAdapter->COMGETTER(Enabled)(&fEnabled);2157 hrc = audioAdapter->COMGETTER(Enabled)(&fEnabled); 2155 2158 if (SUCCEEDED(hrc) && fEnabled) 2156 2159 { 2157 2160 AudioDriverType_T enmDrvType; 2158 hrc = AudioAdapter->COMGETTER(AudioDriver)(&enmDrvType);2161 hrc = audioAdapter->COMGETTER(AudioDriver)(&enmDrvType); 2159 2162 switch (enmDrvType) 2160 2163 { … … 2225 2228 } 2226 2229 AudioControllerType_T enmCtrlType; 2227 hrc = AudioAdapter->COMGETTER(AudioController)(&enmCtrlType);2230 hrc = audioAdapter->COMGETTER(AudioController)(&enmCtrlType); 2228 2231 switch (enmCtrlType) 2229 2232 { … … 2250 2253 } 2251 2254 AudioCodecType_T enmCodecType; 2252 hrc = AudioAdapter->COMGETTER(AudioCodec)(&enmCodecType);2255 hrc = audioAdapter->COMGETTER(AudioCodec)(&enmCodecType); 2253 2256 switch (enmCodecType) 2254 2257 { … … 2281 2284 RTPrintf("\n"); 2282 2285 } 2283 SHOW_BOOLEAN_PROP(AudioAdapter, EnabledOut, "audio_out", Info::tr("Audio playback:")); 2284 SHOW_BOOLEAN_PROP(AudioAdapter, EnabledIn, "audio_in", Info::tr("Audio capture:")); 2286 SHOW_BOOLEAN_PROP(audioAdapter, EnabledOut, "audio_out", Info::tr("Audio playback:")); 2287 SHOW_BOOLEAN_PROP(audioAdapter, EnabledIn, "audio_in", Info::tr("Audio capture:")); 2288 2289 /** @todo Add printing run-time host audio device selection(s) here. */ 2285 2290 } 2286 2291 -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp
r95368 r95423 2531 2531 case MODIFYVM_AUDIOCONTROLLER: 2532 2532 { 2533 ComPtr<IAudioSettings> audioSettings; 2534 CHECK_ERROR_BREAK(sessionMachine, COMGETTER(AudioSettings)(audioSettings.asOutParam())); 2533 2535 ComPtr<IAudioAdapter> audioAdapter; 2534 sessionMachine->COMGETTER(AudioAdapter)(audioAdapter.asOutParam());2536 CHECK_ERROR_BREAK(audioSettings, COMGETTER(Adapter)(audioAdapter.asOutParam())); 2535 2537 ASSERT(audioAdapter); 2536 2538 … … 2551 2553 case MODIFYVM_AUDIOCODEC: 2552 2554 { 2555 ComPtr<IAudioSettings> audioSettings; 2556 CHECK_ERROR_BREAK(sessionMachine, COMGETTER(AudioSettings)(audioSettings.asOutParam())); 2553 2557 ComPtr<IAudioAdapter> audioAdapter; 2554 sessionMachine->COMGETTER(AudioAdapter)(audioAdapter.asOutParam());2558 CHECK_ERROR_BREAK(audioSettings, COMGETTER(Adapter)(audioAdapter.asOutParam())); 2555 2559 ASSERT(audioAdapter); 2556 2560 … … 2573 2577 case MODIFYVM_AUDIO: 2574 2578 { 2579 ComPtr<IAudioSettings> audioSettings; 2580 CHECK_ERROR_BREAK(sessionMachine, COMGETTER(AudioSettings)(audioSettings.asOutParam())); 2575 2581 ComPtr<IAudioAdapter> audioAdapter; 2576 sessionMachine->COMGETTER(AudioAdapter)(audioAdapter.asOutParam());2582 CHECK_ERROR_BREAK(audioSettings, COMGETTER(Adapter)(audioAdapter.asOutParam())); 2577 2583 ASSERT(audioAdapter); 2578 2584 /** @todo r=klaus: don't unconditionally bolt together setting the audio driver … … 2654 2660 case MODIFYVM_AUDIOIN: 2655 2661 { 2662 ComPtr<IAudioSettings> audioSettings; 2663 CHECK_ERROR_BREAK(sessionMachine, COMGETTER(AudioSettings)(audioSettings.asOutParam())); 2656 2664 ComPtr<IAudioAdapter> audioAdapter; 2657 sessionMachine->COMGETTER(AudioAdapter)(audioAdapter.asOutParam());2665 CHECK_ERROR_BREAK(audioSettings, COMGETTER(Adapter)(audioAdapter.asOutParam())); 2658 2666 ASSERT(audioAdapter); 2659 2667 … … 2664 2672 case MODIFYVM_AUDIOOUT: 2665 2673 { 2674 ComPtr<IAudioSettings> audioSettings; 2675 CHECK_ERROR_BREAK(sessionMachine, COMGETTER(AudioSettings)(audioSettings.asOutParam())); 2666 2676 ComPtr<IAudioAdapter> audioAdapter; 2667 sessionMachine->COMGETTER(AudioAdapter)(audioAdapter.asOutParam());2677 CHECK_ERROR_BREAK(audioSettings, COMGETTER(Adapter)(audioAdapter.asOutParam())); 2668 2678 ASSERT(audioAdapter); 2669 2679 -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.cpp
r95233 r95423 32 32 #include "COMEnums.h" 33 33 #include "CAudioAdapter.h" 34 #include "CAudioSettings.h" 34 35 #include "CBooleanFormValue.h" 35 36 #include "CChoiceFormValue.h" … … 581 582 } 582 583 583 const CAudioAdapter comAudio = comMachine.GetAudioAdapter(); 584 if (comAudio.GetEnabled()) 584 const CAudioSettings comAudioSettings = comMachine.GetAudioSettings(); 585 const CAudioAdapter comAdapter = comAudioSettings.GetAdapter(); 586 if (comAdapter.GetEnabled()) 585 587 { 586 588 /* Host driver: */ … … 588 590 { 589 591 const QString strAnchorType = QString("audio_host_driver_type"); 590 const KAudioDriverType enmType = comA udio.GetAudioDriver();592 const KAudioDriverType enmType = comAdapter.GetAudioDriver(); 591 593 table << UITextTableLine(QApplication::translate("UIDetails", "Host Driver", "details (audio)"), 592 594 QString("<a href=#%1,%2>%3</a>") … … 600 602 { 601 603 const QString strAnchorType = QString("audio_controller_type"); 602 const KAudioControllerType enmType = comA udio.GetAudioController();604 const KAudioControllerType enmType = comAdapter.GetAudioController(); 603 605 table << UITextTableLine(QApplication::translate("UIDetails", "Controller", "details (audio)"), 604 606 QString("<a href=#%1,%2>%3</a>") … … 613 615 { 614 616 table << UITextTableLine(QApplication::translate("UIDetails", "Audio Input", "details (audio)"), 615 comA udio.GetEnabledIn() ?617 comAdapter.GetEnabledIn() ? 616 618 QApplication::translate("UIDetails", "Enabled", "details (audio/input)") : 617 619 QApplication::translate("UIDetails", "Disabled", "details (audio/input)")); 618 620 table << UITextTableLine(QApplication::translate("UIDetails", "Audio Output", "details (audio)"), 619 comA udio.GetEnabledOut() ?621 comAdapter.GetEnabledOut() ? 620 622 QApplication::translate("UIDetails", "Enabled", "details (audio/output)") : 621 623 QApplication::translate("UIDetails", "Disabled", "details (audio/output)")); -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMachineAttributeSetter.cpp
r93115 r95423 28 28 /* COM includes: */ 29 29 #include "CAudioAdapter.h" 30 #include "CAudioSettings.h" 30 31 #include "CGraphicsAdapter.h" 31 32 #include "CNetworkAdapter.h" … … 177 178 { 178 179 /* Acquire audio adapter: */ 179 CAudioAdapter comAdapter = comMachine.GetAudioAdapter(); 180 if (!comMachine.isOk()) 180 CAudioSettings const comAudioSettings = comMachine.GetAudioSettings(); 181 CAudioAdapter comAdapter = comAudioSettings.GetAdapter(); 182 if (!comAudioSettings.isOk()) 181 183 { 182 184 UINotificationMessage::cannotAcquireMachineParameter(comMachine); … … 196 198 { 197 199 /* Acquire audio adapter: */ 198 CAudioAdapter comAdapter = comMachine.GetAudioAdapter(); 199 if (!comMachine.isOk()) 200 CAudioSettings const comAudioSettings = comMachine.GetAudioSettings(); 201 CAudioAdapter comAdapter = comAudioSettings.GetAdapter(); 202 if (!comAudioSettings.isOk()) 200 203 { 201 204 UINotificationMessage::cannotAcquireMachineParameter(comMachine); -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp
r93990 r95423 39 39 /* COM includes: */ 40 40 #include "CAudioAdapter.h" 41 #include "CAudioSettings.h" 41 42 #include "CGraphicsAdapter.h" 42 43 #include "CRecordingSettings.h" … … 419 420 420 421 /* Get audio adapter: */ 421 const CAudioAdapter comAdapter = comMachine.GetAudioAdapter(); 422 const CAudioSettings comAudioSettings = comMachine.GetAudioSettings(); 423 const CAudioAdapter comAdapter = comAudioSettings.GetAdapter(); 422 424 const bool fAudioEnabled = comAdapter.GetEnabled(); 423 425 if (fAudioEnabled) -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
r95368 r95423 76 76 /* COM includes: */ 77 77 #include "CAudioAdapter.h" 78 #include "CAudioSettings.h" 78 79 #include "CDisplay.h" 79 80 #include "CEmulatedUSB.h" … … 2182 2183 2183 2184 /* Access audio adapter: */ 2184 CAudioAdapter comAdapter = machine().GetAudioAdapter(); 2185 CAudioSettings const comAudioSettings = machine().GetAudioSettings(); 2186 CAudioAdapter comAdapter = comAudioSettings.GetAdapter(); 2185 2187 AssertMsgReturnVoid(machine().isOk() && comAdapter.isNotNull(), 2186 2188 ("Audio adapter should NOT be null!\n")); … … 2218 2220 2219 2221 /* Access audio adapter: */ 2220 CAudioAdapter comAdapter = machine().GetAudioAdapter(); 2222 CAudioSettings const comAudioSettings = machine().GetAudioSettings(); 2223 CAudioAdapter comAdapter = comAudioSettings.GetAdapter(); 2221 2224 AssertMsgReturnVoid(machine().isOk() && comAdapter.isNotNull(), 2222 2225 ("Audio adapter should NOT be null!\n")); -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
r95368 r95423 58 58 /* COM includes: */ 59 59 #include "CAudioAdapter.h" 60 #include "CAudioSettings.h" 60 61 #include "CGraphicsAdapter.h" 61 62 #include "CHostUSBDevice.h" … … 672 673 { 673 674 /* Make sure Audio adapter is present: */ 674 const CAudioAdapter comAdapter = machine().GetAudioAdapter(); 675 const CAudioSettings comAudioSettings = machine().GetAudioSettings(); 676 const CAudioAdapter comAdapter = comAudioSettings.GetAdapter(); 675 677 AssertMsgReturnVoid(machine().isOk() && comAdapter.isNotNull(), 676 678 ("Audio adapter should NOT be null!\n")); … … 1263 1265 /* Devices options: */ 1264 1266 { 1265 const CAudioAdapter comAudio = m_machine.GetAudioAdapter(); 1267 const CAudioSettings comAudioSettings = m_machine.GetAudioSettings(); 1268 const CAudioAdapter comAdapter = comAudioSettings.GetAdapter(); 1266 1269 actionPool()->action(UIActionIndexRT_M_Devices_M_Audio_T_Output)->blockSignals(true); 1267 actionPool()->action(UIActionIndexRT_M_Devices_M_Audio_T_Output)->setChecked(comA udio.GetEnabledOut());1270 actionPool()->action(UIActionIndexRT_M_Devices_M_Audio_T_Output)->setChecked(comAdapter.GetEnabledOut()); 1268 1271 actionPool()->action(UIActionIndexRT_M_Devices_M_Audio_T_Output)->blockSignals(false); 1269 1272 actionPool()->action(UIActionIndexRT_M_Devices_M_Audio_T_Input)->blockSignals(true); 1270 actionPool()->action(UIActionIndexRT_M_Devices_M_Audio_T_Input)->setChecked(comA udio.GetEnabledIn());1273 actionPool()->action(UIActionIndexRT_M_Devices_M_Audio_T_Input)->setChecked(comAdapter.GetEnabledIn()); 1271 1274 actionPool()->action(UIActionIndexRT_M_Devices_M_Audio_T_Input)->blockSignals(false); 1272 1275 } … … 2113 2116 { 2114 2117 /* Check whether audio controller is enabled. */ 2115 const CAudioAdapter &comAdapter = machine().GetAudioAdapter(); 2118 const CAudioSettings comAudioSettings = machine().GetAudioSettings(); 2119 const CAudioAdapter comAdapter = comAudioSettings.GetAdapter(); 2116 2120 if (comAdapter.isNull() || !comAdapter.GetEnabled()) 2117 2121 restrictionForDevices = (UIExtraDataMetaDefs::RuntimeMenuDevicesActionType)(restrictionForDevices | UIExtraDataMetaDefs::RuntimeMenuDevicesActionType_Audio); -
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsAudio.cpp
r94708 r95423 26 26 /* COM includes: */ 27 27 #include "CAudioAdapter.h" 28 #include "CAudioSettings.h" 28 29 29 30 … … 103 104 104 105 /* Check whether adapter is valid: */ 105 const CAudioAdapter &comAdapter = m_machine.GetAudioAdapter(); 106 const CAudioSettings &comAudioSettings = m_machine.GetAudioSettings(); 107 const CAudioAdapter &comAdapter = comAudioSettings.GetAdapter(); 106 108 if (!comAdapter.isNull()) 107 109 { … … 250 252 251 253 /* Get audio adapter for further activities: */ 252 CAudioAdapter comAdapter = m_machine.GetAudioAdapter(); 254 const CAudioSettings comAudioSettings = m_machine.GetAudioSettings(); 255 256 CAudioAdapter comAdapter = comAudioSettings.GetAdapter(); 253 257 fSuccess = m_machine.isOk() && comAdapter.isNotNull(); 254 258 -
trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotDetailsWidget.cpp
r93996 r95423 47 47 /* COM includes: */ 48 48 #include "CAudioAdapter.h" 49 #include "CAudioSettings.h" 49 50 #include "CRecordingSettings.h" 50 51 #include "CRecordingScreenSettings.h" … … 1816 1817 QStringList aReport; 1817 1818 /* Acquire audio adapter: */ 1818 const CAudioAdapter &comAdapter = comMachine.GetAudioAdapter(); 1819 const CAudioSettings comAudioSettings = comMachine.GetAudioSettings(); 1820 const CAudioAdapter &comAdapter = comAudioSettings.GetAdapter(); 1819 1821 if (comAdapter.GetEnabled()) 1820 1822 { -
trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.cpp
r95166 r95423 34 34 /* COM includes: */ 35 35 #include "CAudioAdapter.h" 36 #include "CAudioSettings.h" 36 37 #include "CBIOSSettings.h" 37 38 #include "CGraphicsAdapter.h" … … 282 283 283 284 /* Selecting recommended Audio Controller: */ 284 m_machine.GetAudioAdapter().SetAudioController(comGuestType.GetRecommendedAudioController()); 285 CAudioSettings const comAudioSettings = m_machine.GetAudioSettings(); 286 CAudioAdapter comAdapter = comAudioSettings.GetAdapter(); 287 comAdapter.SetAudioController(comGuestType.GetRecommendedAudioController()); 285 288 /* And the Audio Codec: */ 286 m_machine.GetAudioAdapter().SetAudioCodec(comGuestType.GetRecommendedAudioCodec());289 comAdapter.SetAudioCodec(comGuestType.GetRecommendedAudioCodec()); 287 290 /* Enabling audio by default: */ 288 m_machine.GetAudioAdapter().SetEnabled(true);289 m_machine.GetAudioAdapter().SetEnabledOut(true);291 comAdapter.SetEnabled(true); 292 comAdapter.SetEnabledOut(true); 290 293 291 294 /* Enable the OHCI and EHCI controller by default for new VMs. (new in 2.2): */ -
trunk/src/VBox/Main/Makefile.kmk
r95274 r95423 612 612 src-server/ApplianceImplImport.cpp \ 613 613 src-server/AudioAdapterImpl.cpp \ 614 src-server/AudioSettingsImpl.cpp \ 614 615 src-server/BandwidthControlImpl.cpp \ 615 616 src-server/BandwidthGroupImpl.cpp \ … … 634 635 src-server/HostDnsService.cpp \ 635 636 src-server/HostImpl.cpp \ 637 src-server/HostAudioDeviceImpl.cpp \ 636 638 src-server/HostNetworkInterfaceImpl.cpp \ 637 639 src-server/HostPower.cpp \ -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r95386 r95423 6590 6590 <interface 6591 6591 name="IMachine" extends="$unknown" 6592 uuid=" 42643361-11f7-40b4-8d66-79029838b1f1"6592 uuid="9fbd57c7-e1b2-4baa-bbfb-ae831c06f32b" 6593 6593 wsmap="managed" 6594 6594 rest="managed" … … 6960 6960 </attribute> 6961 6961 6962 <attribute name="audioAdapter" type="IAudioAdapter" readonly="yes"> 6963 <desc>Associated audio adapter, always present.</desc> 6962 <attribute name="audioSettings" type="IAudioSettings" readonly="yes"> 6963 <desc> 6964 The machine's audio settings. 6965 </desc> 6964 6966 </attribute> 6965 6967 … … 11739 11741 <interface 11740 11742 name="IHost" extends="$unknown" 11741 uuid=" fc0759a6-a5e2-41e1-93ca-64776335eb2d"11743 uuid="e54f6256-97a7-4947-8a78-10c013ddf4b8" 11742 11744 wsmap="managed" 11743 11745 rest="managed" … … 11762 11764 <attribute name="floppyDrives" type="IMedium" readonly="yes" safearray="yes"> 11763 11765 <desc>List of floppy drives available on the host.</desc> 11766 </attribute> 11767 11768 <attribute name="audioDevices" type="IHostAudioDevice" readonly="yes" safearray="yes"> 11769 <desc>List of audio devices currently available on the host. 11770 <result name="E_NOTIMPL"> 11771 This attribute is not implemented yet. 11772 </result> 11773 </desc> 11764 11774 </attribute> 11765 11775 … … 23353 23363 23354 23364 <enum 23365 name="AudioDirection" 23366 uuid="f27d209b-040c-4ae9-beae-85f9693ca07a" 23367 > 23368 <desc> 23369 Audio direction enumeration. 23370 </desc> 23371 23372 <const name="Unknown" value="0"> 23373 <desc>Direction cannot be determined.</desc> 23374 </const> 23375 <const name="In" value="1"> 23376 <desc>Input (Recording).</desc> 23377 </const> 23378 <const name="Out" value="2"> 23379 <desc>Output (Playback).</desc> 23380 </const> 23381 <const name="Duplex" value="3"> 23382 <desc>Duplex (Recording + Playback).</desc> 23383 </const> 23384 </enum> 23385 23386 <enum 23387 name="AudioDeviceType" 23388 uuid="95457071-ef88-45a9-8416-fc05b08731d2" 23389 > 23390 <desc> 23391 Audio device type enumeration. 23392 </desc> 23393 23394 <const name="Unknown" value="0"> 23395 <desc>Device type is unknown / cannot be determined</desc> 23396 </const> 23397 <const name="BuiltLin" value="1"> 23398 <desc>Built-in device (cannot be removed).</desc> 23399 </const> 23400 <const name="ExternalUSB" value="2"> 23401 <desc>External device, connected via USB.</desc> 23402 </const> 23403 <const name="ExternalOther" value="3"> 23404 <desc>External device, connected via some other method.</desc> 23405 </const> 23406 </enum> 23407 23408 <enum 23409 name="AudioDeviceState" 23410 uuid="45c1b969-556a-4277-8570-b438d2ef5ebe" 23411 > 23412 <desc> 23413 Audio device state enumeration. 23414 </desc> 23415 23416 <const name="Unknown" value="0"> 23417 <desc>Device state is unknown / cannot be determined</desc> 23418 </const> 23419 <const name="Active" value="1"> 23420 <desc>Device is active and can be used.</desc> 23421 </const> 23422 <const name="Disabled" value="2"> 23423 <desc>Device is in a disabled state.</desc> 23424 </const> 23425 <const name="NotPresent" value="3"> 23426 <desc>Device is marked as not being present.</desc> 23427 </const> 23428 <const name="Unplugged" value="4"> 23429 <desc>Device has been unplugged.</desc> 23430 </const> 23431 </enum> 23432 23433 <interface 23434 name="IAudioDevice" extends="$unknown" 23435 uuid="e50cd98b-ec3f-4146-9943-863dd1233691" 23436 wsmap="managed" 23437 rest="managed" 23438 reservedMethods="4" reservedAttributes="8" 23439 > 23440 <desc> 23441 The IAudioDevice interface represents an abstract base interface for 23442 an audio device. 23443 </desc> 23444 23445 <attribute name="id" type="uuid" mod="string" readonly="yes"> 23446 <desc> 23447 Unique device ID. 23448 </desc> 23449 </attribute> 23450 23451 <attribute name="name" type="wstring"> 23452 <desc> 23453 Friendly name of the device. 23454 </desc> 23455 </attribute> 23456 <attribute name="type" type="AudioDeviceType"> 23457 <desc> 23458 Device type. 23459 </desc> 23460 </attribute> 23461 <attribute name="usage" type="AudioDirection"> 23462 <desc> 23463 Usage type of the device. 23464 </desc> 23465 </attribute> 23466 <attribute name="defaultIn" type="boolean"> 23467 <desc> 23468 Whether this device is being marked as the default input 23469 device by the host OS. 23470 </desc> 23471 </attribute> 23472 <attribute name="defaultOut" type="boolean"> 23473 <desc> 23474 Whether this device is being marked as the default output 23475 device by the host OS. 23476 </desc> 23477 </attribute> 23478 <attribute name="isHotPlug" type="boolean"> 23479 <desc> 23480 Whether this device is being marked as a hotplug device, i.e. can 23481 be removed from the system. 23482 </desc> 23483 </attribute> 23484 <attribute name="state" type="AudioDeviceState"> 23485 <desc> 23486 Current device state. 23487 </desc> 23488 </attribute> 23489 <method name="getProperty" const="yes"> 23490 <desc> 23491 Returns an audio specific property string. 23492 23493 If the requested data @a key does not exist, this function will 23494 succeed and return an empty string in the @a value argument. 23495 23496 </desc> 23497 <param name="key" type="wstring" dir="in"> 23498 <desc>Name of the key to get.</desc> 23499 </param> 23500 <param name="value" type="wstring" dir="return"> 23501 <desc>Value of the requested key.</desc> 23502 </param> 23503 </method> 23504 23505 </interface> 23506 23507 <interface 23508 name="IHostAudioDevice" extends="IAudioDevice" 23509 uuid="dc6dda3e-6b04-4203-b4c6-43906dc1695c" 23510 wsmap="managed"> 23511 <desc> 23512 Audio device provided by the host OS. 23513 </desc> 23514 <attribute name="midlDoesNotLikeEmptyInterfaces" readonly="yes" type="boolean"/> 23515 </interface> 23516 23517 <interface 23518 name="IAudioSettings" extends="$unknown" 23519 uuid="52f40b16-520e-473f-9428-3e69b0d915c3" 23520 wsmap="managed" 23521 rest="managed" 23522 reservedMethods="4" reservedAttributes="8" 23523 > 23524 <desc> 23525 The IAudioSettings interface represents the audio settings for a virtual machine. 23526 </desc> 23527 23528 <method name="getHostAudioDevice"> 23529 <desc> 23530 Returns the machine's current host audio device for the specified usage. 23531 <result name="E_NOTIMPL"> 23532 This method is not implemented yet. 23533 </result> 23534 </desc> 23535 <param name="usage" type="AudioDirection" dir="in"> 23536 <desc>Usage to retrieve audio device for.</desc> 23537 </param> 23538 <param name="device" type="IHostAudioDevice" dir="return"> 23539 <desc>Host audio device for the specified direction.</desc> 23540 </param> 23541 </method> 23542 23543 <method name="setHostAudioDevice"> 23544 <desc> 23545 Sets the machine's current host audio device for the specified usage. 23546 <result name="E_NOTIMPL"> 23547 This method is not implemented yet. 23548 </result> 23549 </desc> 23550 <param name="device" type="IHostAudioDevice" dir="in"> 23551 <desc>Sets the host audio device for the specified usage.</desc> 23552 </param> 23553 <param name="usage" type="AudioDirection" dir="in"> 23554 <desc>Usage to set audio device for.</desc> 23555 </param> 23556 </method> 23557 23558 <attribute name="adapter" type="IAudioAdapter" readonly="yes"> 23559 <desc>Associated audio adapter, always present.</desc> 23560 </attribute> 23561 23562 </interface> 23563 23564 <enum 23355 23565 name="AuthType" 23356 23566 uuid="7eef6ef6-98c2-4dc2-ab35-10d2b292028d" … … 23617 23827 <interface 23618 23828 name="IInternalSessionControl" extends="$unknown" 23619 uuid=" f4638054-f1f8-4590-941a-cdb66075c5bf"23829 uuid="a797fb40-7e04-4aa5-88c5-299aa0454577" 23620 23830 internal="yes" 23621 23831 wsmap="suppress" … … 23763 23973 </desc> 23764 23974 <param name="audioAdapter" type="IAudioAdapter" dir="in"/> 23975 </method> 23976 23977 <method name="onHostAudioDeviceChange"> 23978 <desc> 23979 Triggerd when the state of a host audio device 23980 has changed. 23981 </desc> 23982 <param name="device" type="IHostAudioDevice" dir="in" readonly="yes"> 23983 <desc>Device the state has been changed for.</desc> 23984 </param> 23985 <param name="isNew" type="boolean" dir="in" readonly="yes"> 23986 <desc>Whether this is a newly detected device or not.</desc> 23987 </param> 23988 <param name="state" type="AudioDeviceState" dir="in" readonly="yes"> 23989 <desc>The new device state.</desc> 23990 </param> 23991 <param name="errorInfo" type="IVirtualBoxErrorInfo" dir="in" readonly="yes"> 23992 <desc>Error information.</desc> 23993 </param> 23765 23994 </method> 23766 23995 … … 25813 26042 <enum 25814 26043 name="VBoxEventType" 25815 uuid=" 08cc6ebb-1e55-4b78-8fb1-1e06f5b4dbe9"26044 uuid="d9a89164-5143-49ce-b9ab-4e76edf5b93b" 25816 26045 > 25817 26046 … … 26297 26526 </desc> 26298 26527 </const> 26528 <const name="OnHostAudioDeviceChanged" value="116"> 26529 <desc> 26530 See <link to="IHostAudioDeviceChangedEvent">IHostAudioDeviceChangedEvent</link>. 26531 </desc> 26532 </const> 26299 26533 <!-- End event marker --> 26300 26534 <!-- @todo rename to 'End' as it is exclusive (we use 'last' to be inclusive). --> 26301 <const name="Last" value="11 6">26535 <const name="Last" value="117"> 26302 26536 <desc> 26303 26537 Must be last event, used for iterations and structures relying on numerical event values. … … 28111 28345 </desc> 28112 28346 </attribute> 28347 </interface> 28348 28349 <interface 28350 name="IHostAudioDeviceChangedEvent" extends="IEvent" 28351 waitable="yes" 28352 uuid="8dcc633f-7b03-4f0a-9f40-7a784dd0835a" 28353 wsmap="managed" autogen="VBoxEvent" id="OnHostAudioDeviceChangedEvent" 28354 > 28355 <desc> 28356 Notification when a host audio device state has changed. 28357 </desc> 28358 28359 <attribute name="device" type="IHostAudioDevice" readonly="yes"> 28360 <desc> 28361 Host audio device that has changed. 28362 </desc> 28363 </attribute> 28364 28365 <attribute name="new" type="boolean" readonly="yes"> 28366 <desc> 28367 @c true if the host device is a newly detected device, @c false if not. 28368 </desc> 28369 </attribute> 28370 28371 <attribute name="state" type="AudioDeviceState" readonly="yes"> 28372 <desc> 28373 New audio device state. 28374 </desc> 28375 </attribute> 28376 28377 <attribute name="error" type="IVirtualBoxErrorInfo" readonly="yes"> 28378 <desc> 28379 @c null on success or an error message object on failure. 28380 </desc> 28381 </attribute> 28382 28113 28383 </interface> 28114 28384 -
trunk/src/VBox/Main/include/AudioAdapterImpl.h
r93115 r95423 24 24 #endif 25 25 26 class AudioSettings; 27 26 28 #include "AudioAdapterWrap.h" 27 29 namespace settings … … 41 43 42 44 // public initializer/uninitializer for internal purposes only 43 HRESULT init( Machine*aParent);44 HRESULT init( Machine*aParent, AudioAdapter *aThat);45 HRESULT initCopy( Machine*aParent, AudioAdapter *aThat);45 HRESULT init(AudioSettings *aParent); 46 HRESULT init(AudioSettings *aParent, AudioAdapter *aThat); 47 HRESULT initCopy(AudioSettings *aParent, AudioAdapter *aThat); 46 48 void uninit(); 47 48 49 49 50 // public methods only for internal purposes … … 74 75 HRESULT setProperty(const com::Utf8Str &aKey, const com::Utf8Str &aValue); 75 76 76 Machine * constmParent;77 const ComObjPtr<AudioAdapter> mPeer;77 AudioSettings * const mParent; 78 const ComObjPtr<AudioAdapter> mPeer; 78 79 Backupable<settings::AudioAdapter> mData; 79 80 }; -
trunk/src/VBox/Main/include/ConsoleImpl.h
r95368 r95423 197 197 HRESULT i_onNetworkAdapterChange(INetworkAdapter *aNetworkAdapter, BOOL changeAdapter); 198 198 HRESULT i_onAudioAdapterChange(IAudioAdapter *aAudioAdapter); 199 HRESULT i_onHostAudioDeviceChange(IHostAudioDevice *aDevice, BOOL aNew, AudioDeviceState_T aState, 200 IVirtualBoxErrorInfo *aErrInfo); 199 201 HRESULT i_onSerialPortChange(ISerialPort *aSerialPort); 200 202 HRESULT i_onParallelPortChange(IParallelPort *aParallelPort); -
trunk/src/VBox/Main/include/HostImpl.h
r94643 r95423 101 101 HRESULT getDVDDrives(std::vector<ComPtr<IMedium> > &aDVDDrives); 102 102 HRESULT getFloppyDrives(std::vector<ComPtr<IMedium> > &aFloppyDrives); 103 HRESULT getAudioDevices(std::vector<ComPtr<IHostAudioDevice> > &aAudioDevices); 103 104 HRESULT getUSBDevices(std::vector<ComPtr<IHostUSBDevice> > &aUSBDevices); 104 105 HRESULT getUSBDeviceFilters(std::vector<ComPtr<IHostUSBDeviceFilter> > &aUSBDeviceFilters); -
trunk/src/VBox/Main/include/MachineImpl.h
r94782 r95423 30 30 #include "MediumLock.h" 31 31 #include "NetworkAdapterImpl.h" 32 #include "Audio AdapterImpl.h"32 #include "AudioSettingsImpl.h" 33 33 #include "SerialPortImpl.h" 34 34 #include "ParallelPortImpl.h" … … 506 506 IsModified_ParallelPorts = 0x000020, 507 507 IsModified_VRDEServer = 0x000040, 508 IsModified_Audio Adapter= 0x000080,508 IsModified_AudioSettings = 0x000080, 509 509 IsModified_USB = 0x000100, 510 510 IsModified_BIOS = 0x000200, … … 548 548 const Utf8Str & /* guest port */, LONG /* guest port */ ) { return S_OK; } 549 549 virtual HRESULT i_onAudioAdapterChange(IAudioAdapter * /* audioAdapter */) { return S_OK; } 550 virtual HRESULT i_onHostAudioDeviceChange(IHostAudioDevice *, BOOL /* new */, AudioDeviceState_T, IVirtualBoxErrorInfo *) { return S_OK; } 550 551 virtual HRESULT i_onSerialPortChange(ISerialPort * /* serialPort */) { return S_OK; } 551 552 virtual HRESULT i_onParallelPortChange(IParallelPort * /* parallelPort */) { return S_OK; } … … 820 821 const ComObjPtr<SerialPort> mSerialPorts[SchemaDefs::SerialPortCount]; 821 822 const ComObjPtr<ParallelPort> mParallelPorts[SchemaDefs::ParallelPortCount]; 822 const ComObjPtr<Audio Adapter> mAudioAdapter;823 const ComObjPtr<AudioSettings> mAudioSettings; 823 824 const ComObjPtr<USBDeviceFilters> mUSBDeviceFilters; 824 825 const ComObjPtr<BIOSSettings> mBIOSSettings; … … 957 958 HRESULT getUSBControllers(std::vector<ComPtr<IUSBController> > &aUSBControllers); 958 959 HRESULT getUSBDeviceFilters(ComPtr<IUSBDeviceFilters> &aUSBDeviceFilters); 959 HRESULT getAudio Adapter(ComPtr<IAudioAdapter> &aAudioAdapter);960 HRESULT getAudioSettings(ComPtr<IAudioSettings> &aAudioSettings); 960 961 HRESULT getStorageControllers(std::vector<ComPtr<IStorageController> > &aStorageControllers); 961 962 HRESULT getSettingsFilePath(com::Utf8Str &aSettingsFilePath); … … 1399 1400 HRESULT i_onVMProcessPriorityChange(VMProcPriority_T aPriority); 1400 1401 HRESULT i_onAudioAdapterChange(IAudioAdapter *audioAdapter); 1402 HRESULT i_onHostAudioDeviceChange(IHostAudioDevice *aDevice, BOOL aNew, AudioDeviceState_T aState, IVirtualBoxErrorInfo *aErrInfo); 1401 1403 HRESULT i_onSerialPortChange(ISerialPort *serialPort); 1402 1404 HRESULT i_onParallelPortChange(IParallelPort *parallelPort); -
trunk/src/VBox/Main/include/SessionImpl.h
r93115 r95423 91 91 BOOL aChangeAdapter); 92 92 HRESULT onAudioAdapterChange(const ComPtr<IAudioAdapter> &aAudioAdapter); 93 HRESULT onHostAudioDeviceChange(const ComPtr<IHostAudioDevice> &aDevice, 94 BOOL aNew, AudioDeviceState_T aState, 95 const ComPtr<IVirtualBoxErrorInfo> &aErrInfo); 93 96 HRESULT onSerialPortChange(const ComPtr<ISerialPort> &aSerialPort); 94 97 HRESULT onParallelPortChange(const ComPtr<IParallelPort> &aParallelPort); -
trunk/src/VBox/Main/src-client/ConsoleImpl.cpp
r95368 r95423 5239 5239 } 5240 5240 5241 /** 5242 * Called by IInternalSessionControl::OnHostAudioDeviceChange(). 5243 */ 5244 HRESULT Console::i_onHostAudioDeviceChange(IHostAudioDevice *aDevice, BOOL aNew, AudioDeviceState_T aState, 5245 IVirtualBoxErrorInfo *aErrInfo) 5246 { 5247 LogFlowThisFunc(("\n")); 5248 5249 AutoCaller autoCaller(this); 5250 AssertComRCReturnRC(autoCaller.rc()); 5251 5252 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 5253 5254 HRESULT hrc = S_OK; 5255 5256 /** @todo Implement logic here. */ 5257 5258 alock.release(); 5259 5260 /* notify console callbacks on success */ 5261 if (SUCCEEDED(hrc)) 5262 ::FireHostAudioDeviceChangedEvent(mEventSource, aDevice, aNew, aState, aErrInfo); 5263 5264 LogFlowThisFunc(("Leaving rc=%#x\n", S_OK)); 5265 return S_OK; 5266 } 5241 5267 5242 5268 /** -
trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp
r95369 r95423 3059 3059 * AC'97 ICH / SoundBlaster16 audio / Intel HD Audio. 3060 3060 */ 3061 ComPtr<IAudioSettings> audioSettings; 3062 hrc = pMachine->COMGETTER(AudioSettings)(audioSettings.asOutParam()); H(); 3063 3061 3064 BOOL fAudioEnabled = FALSE; 3062 3065 ComPtr<IAudioAdapter> audioAdapter; 3063 hrc = pMachine->COMGETTER(AudioAdapter)(audioAdapter.asOutParam()); H();3066 hrc = audioSettings->COMGETTER(Adapter)(audioAdapter.asOutParam()); H(); 3064 3067 if (audioAdapter) 3065 3068 { -
trunk/src/VBox/Main/src-client/SessionImpl.cpp
r94949 r95423 606 606 } 607 607 608 HRESULT Session::onHostAudioDeviceChange(const ComPtr<IHostAudioDevice> &aDevice, 609 BOOL aNew, AudioDeviceState_T aState, 610 const ComPtr<IVirtualBoxErrorInfo> &aErrInfo) 611 { 612 LogFlowThisFunc(("\n")); 613 614 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 615 AssertReturn(mState == SessionState_Locked, VBOX_E_INVALID_VM_STATE); 616 AssertReturn(mType == SessionType_WriteLock, VBOX_E_INVALID_OBJECT_STATE); 617 #ifndef VBOX_COM_INPROC_API_CLIENT 618 AssertReturn(mConsole, VBOX_E_INVALID_OBJECT_STATE); 619 620 return mConsole->i_onHostAudioDeviceChange(aDevice, aNew, aState, aErrInfo); 621 #else 622 RT_NOREF(aDevice, aNew, aState, aErrInfo); 623 return S_OK; 624 #endif 625 } 626 608 627 HRESULT Session::onSerialPortChange(const ComPtr<ISerialPort> &aSerialPort) 609 628 { -
trunk/src/VBox/Main/src-server/ApplianceImplExport.cpp
r93115 r95423 115 115 AutoReadLock alock1(this COMMA_LOCKVAL_SRC_POS); 116 116 117 ComPtr<IAudioAdapter> pAudioAdapter = mAudioAdapter; 117 ComPtr<IAudioAdapter> pAudioAdapter; 118 rc = mAudioSettings->COMGETTER(Adapter)(pAudioAdapter.asOutParam()); 119 if (FAILED(rc)) throw rc; 118 120 BOOL fAudioEnabled; 119 121 rc = pAudioAdapter->COMGETTER(Enabled)(&fAudioEnabled); -
trunk/src/VBox/Main/src-server/ApplianceImplImport.cpp
r94660 r95423 4487 4487 if (stack.strAudioAdapter.compare("null", Utf8Str::CaseInsensitive) != 0) 4488 4488 { 4489 ComPtr<IAudioSettings> audioSettings; 4490 rc = pNewMachine->COMGETTER(AudioSettings)(audioSettings.asOutParam()); 4491 if (FAILED(rc)) throw rc; 4489 4492 uint32_t audio = RTStrToUInt32(stack.strAudioAdapter.c_str()); // should be 0 for AC97 4490 4493 ComPtr<IAudioAdapter> audioAdapter; 4491 rc = pNewMachine->COMGETTER(AudioAdapter)(audioAdapter.asOutParam());4494 rc = audioSettings->COMGETTER(Adapter)(audioAdapter.asOutParam()); 4492 4495 if (FAILED(rc)) throw rc; 4493 4496 rc = audioAdapter->COMSETTER(Enabled)(true); -
trunk/src/VBox/Main/src-server/AudioAdapterImpl.cpp
r93115 r95423 19 19 #include "AudioAdapterImpl.h" 20 20 #include "MachineImpl.h" 21 #include "SystemPropertiesImpl.h" 22 #include "VirtualBoxImpl.h" 21 23 22 24 #include <iprt/cpp/utils.h> … … 60 62 * @param aParent Handle of the parent object. 61 63 */ 62 HRESULT AudioAdapter::init( Machine*aParent)64 HRESULT AudioAdapter::init(AudioSettings *aParent) 63 65 { 64 66 LogFlowThisFunc(("aParent=%p\n", aParent)); … … 71 73 72 74 /* Get the default audio driver out of the system properties */ 73 ComPtr<IVirtualBox> VBox; 74 HRESULT rc = aParent->COMGETTER(Parent)(VBox.asOutParam()); 75 if (FAILED(rc)) return rc; 76 ComPtr<ISystemProperties> sysProps; 77 rc = VBox->COMGETTER(SystemProperties)(sysProps.asOutParam()); 78 if (FAILED(rc)) return rc; 75 Machine *pMachine = aParent->i_getParent(); 76 ComAssertRet(pMachine, E_INVALIDARG); 77 VirtualBox *pVirtualBox = pMachine->i_getVirtualBox(); 78 ComAssertRet(pVirtualBox, E_INVALIDARG); 79 SystemProperties *pSysProps = pVirtualBox->i_getSystemProperties(); 80 ComAssertRet(pSysProps, E_INVALIDARG); 81 79 82 AudioDriverType_T defaultAudioDriver; 80 rc = sysProps->COMGETTER(DefaultAudioDriver)(&defaultAudioDriver);81 if (FAILED( rc)) returnrc;82 83 unconst(mParent) = aParent;83 HRESULT hrc = pSysProps->COMGETTER(DefaultAudioDriver)(&defaultAudioDriver); 84 if (FAILED(hrc)) return hrc; 85 86 unconst(mParent) = aParent; 84 87 /* mPeer is left null */ 85 88 86 89 mData.allocate(); 87 mData->driverType = defaultAudioDriver;88 mData->fEnabledIn = false;90 mData->driverType = defaultAudioDriver; 91 mData->fEnabledIn = false; 89 92 mData->fEnabledOut = false; 90 93 … … 105 108 * @note Locks @a aThat object for reading. 106 109 */ 107 HRESULT AudioAdapter::init( Machine*aParent, AudioAdapter *aThat)110 HRESULT AudioAdapter::init(AudioSettings *aParent, AudioAdapter *aThat) 108 111 { 109 112 LogFlowThisFunc(("aParent=%p, aThat=%p\n", aParent, aThat)); … … 137 140 * @note Locks @a aThat object for reading. 138 141 */ 139 HRESULT AudioAdapter::initCopy( Machine*aParent, AudioAdapter *aThat)142 HRESULT AudioAdapter::initCopy(AudioSettings *aParent, AudioAdapter *aThat) 140 143 { 141 144 LogFlowThisFunc(("aParent=%p, aThat=%p\n", aParent, aThat)); … … 166 169 * Called either from FinalRelease() or by the parent when it gets destroyed. 167 170 */ 168 void AudioAdapter::uninit( )171 void AudioAdapter::uninit(void) 169 172 { 170 173 LogFlowThisFunc(("\n")); … … 175 178 return; 176 179 180 unconst(mPeer) = NULL; 181 unconst(mParent) = NULL; 182 177 183 mData.free(); 178 179 unconst(mPeer) = NULL;180 unconst(mParent) = NULL;181 184 } 182 185 … … 195 198 HRESULT AudioAdapter::setEnabled(BOOL aEnabled) 196 199 { 197 /* the machine needs to be mutable */ 198 AutoMutableStateDependency adep(mParent); 199 if (FAILED(adep.rc())) return adep.rc(); 200 AutoCaller autoCaller(this); 201 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 200 202 201 203 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 205 207 mData.backup(); 206 208 mData->fEnabled = RT_BOOL(aEnabled); 207 208 209 alock.release(); 209 AutoWriteLock mlock(mParent COMMA_LOCKVAL_SRC_POS); // mParent is const, needs no locking 210 mParent->i_setModified(Machine::IsModified_AudioAdapter); 210 211 mParent->i_onSettingsChanged(); // mParent is const, needs no locking 212 mParent->i_onAdapterChanged(this); 211 213 } 212 214 … … 225 227 HRESULT AudioAdapter::setEnabledIn(BOOL aEnabled) 226 228 { 227 /* the machine needs to be mutable */228 AutoMutableOrSavedOrRunningStateDependency adep(mParent);229 if (FAILED(adep.rc())) return adep.rc(); 230 231 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 229 AutoCaller autoCaller(this); 230 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 231 232 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 233 232 234 if (RT_BOOL(aEnabled) != mData->fEnabledIn) 233 235 { … … 235 237 mData->fEnabledIn = RT_BOOL(aEnabled); 236 238 237 // leave the lock before informing callbacks238 239 alock.release(); 239 240 240 AutoWriteLock mlock(mParent COMMA_LOCKVAL_SRC_POS); 241 mParent->i_setModified(Machine::IsModified_AudioAdapter); 242 mlock.release(); 243 244 mParent->i_onAudioAdapterChange(this); 241 mParent->i_onSettingsChanged(); // mParent is const, needs no locking 242 mParent->i_onAdapterChanged(this); 245 243 } 246 244 … … 259 257 HRESULT AudioAdapter::setEnabledOut(BOOL aEnabled) 260 258 { 261 /* the machine needs to be mutable */262 AutoMutableOrSavedOrRunningStateDependency adep(mParent);263 if (FAILED(adep.rc())) return adep.rc(); 264 265 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 259 AutoCaller autoCaller(this); 260 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 261 262 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 263 266 264 if (RT_BOOL(aEnabled) != mData->fEnabledOut) 267 265 { … … 269 267 mData->fEnabledOut = RT_BOOL(aEnabled); 270 268 271 // leave the lock before informing callbacks272 269 alock.release(); 273 270 274 AutoWriteLock mlock(mParent COMMA_LOCKVAL_SRC_POS); 275 mParent->i_setModified(Machine::IsModified_AudioAdapter); 276 mlock.release(); 277 278 mParent->i_onAudioAdapterChange(this); 271 mParent->i_onSettingsChanged(); // mParent is const, needs no locking 272 mParent->i_onAdapterChanged(this); 279 273 } 280 274 … … 293 287 HRESULT AudioAdapter::setAudioDriver(AudioDriverType_T aAudioDriver) 294 288 { 295 296 /* the machine needs to be mutable */ 297 AutoMutableOrSavedStateDependency adep(mParent); 298 if (FAILED(adep.rc())) return adep.rc(); 289 AutoCaller autoCaller(this); 290 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 299 291 300 292 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 308 300 mData.backup(); 309 301 mData->driverType = aAudioDriver; 302 310 303 alock.release(); 311 AutoWriteLock mlock(mParent COMMA_LOCKVAL_SRC_POS); // mParent is const, needs no locking 312 mParent->i_ setModified(Machine::IsModified_AudioAdapter);304 305 mParent->i_onSettingsChanged(); // mParent is const, needs no locking 313 306 } 314 307 else … … 333 326 HRESULT AudioAdapter::setAudioController(AudioControllerType_T aAudioController) 334 327 { 335 /* the machine needs to be mutable */ 336 AutoMutableStateDependency adep(mParent); 337 if (FAILED(adep.rc())) return adep.rc(); 338 339 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 340 341 HRESULT rc = S_OK; 328 AutoCaller autoCaller(this); 329 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 330 331 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 332 333 HRESULT hrc = S_OK; 342 334 343 335 if (mData->controllerType != aAudioController) … … 364 356 AssertMsgFailed(("Wrong audio controller type %d\n", aAudioController)); 365 357 defaultCodec = AudioCodecType_Null; /* Shut up MSC */ 366 rc = E_FAIL; 367 } 368 if (rc == S_OK) 358 hrc = E_FAIL; 359 } 360 361 if (SUCCEEDED(hrc)) 369 362 { 370 363 mData.backup(); 371 364 mData->controllerType = aAudioController; 372 mData->codecType = defaultCodec; 365 mData->codecType = defaultCodec; 366 373 367 alock.release(); 374 AutoWriteLock mlock(mParent COMMA_LOCKVAL_SRC_POS); // mParent is const, needs no locking 375 mParent->i_ setModified(Machine::IsModified_AudioAdapter);376 } 377 } 378 379 return rc;368 369 mParent->i_onSettingsChanged(); // mParent is const, needs no locking 370 } 371 } 372 373 return hrc; 380 374 } 381 375 … … 391 385 HRESULT AudioAdapter::setAudioCodec(AudioCodecType_T aAudioCodec) 392 386 { 393 /* the machine needs to be mutable */ 394 AutoMutableStateDependency adep(mParent); 395 if (FAILED(adep.rc())) return adep.rc(); 396 397 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 398 399 HRESULT rc = S_OK; 387 AutoCaller autoCaller(this); 388 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 389 390 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 391 392 HRESULT hrc = S_OK; 400 393 401 394 /* … … 408 401 if ( (aAudioCodec != AudioCodecType_STAC9700) 409 402 && (aAudioCodec != AudioCodecType_AD1980)) 410 rc = E_INVALIDARG;403 hrc = E_INVALIDARG; 411 404 break; 412 405 } … … 415 408 { 416 409 if (aAudioCodec != AudioCodecType_SB16) 417 rc = E_INVALIDARG;410 hrc = E_INVALIDARG; 418 411 break; 419 412 } … … 422 415 { 423 416 if (aAudioCodec != AudioCodecType_STAC9221) 424 rc = E_INVALIDARG;417 hrc = E_INVALIDARG; 425 418 break; 426 419 } … … 429 422 AssertMsgFailed(("Wrong audio controller type %d\n", 430 423 mData->controllerType)); 431 rc = E_FAIL;432 } 433 434 if (!SUCCEEDED( rc))435 return setError( rc,424 hrc = E_FAIL; 425 } 426 427 if (!SUCCEEDED(hrc)) 428 return setError(hrc, 436 429 tr("Invalid audio codec type %d"), 437 430 aAudioCodec); … … 441 434 mData.backup(); 442 435 mData->codecType = aAudioCodec; 436 443 437 alock.release(); 444 AutoWriteLock mlock(mParent COMMA_LOCKVAL_SRC_POS); // mParent is const, needs no locking 445 mParent->i_ setModified(Machine::IsModified_AudioAdapter);446 } 447 448 return rc;438 439 mParent->i_onSettingsChanged(); // mParent is const, needs no locking 440 } 441 442 return hrc; 449 443 } 450 444 -
trunk/src/VBox/Main/src-server/HostImpl.cpp
r95065 r95423 1009 1009 ReturnComNotImplemented(); 1010 1010 #endif 1011 } 1012 1013 HRESULT Host::getAudioDevices(std::vector<ComPtr<IHostAudioDevice> > &aAudioDevices) 1014 { 1015 RT_NOREF(aAudioDevices); 1016 ReturnComNotImplemented(); 1011 1017 } 1012 1018 -
trunk/src/VBox/Main/src-server/MachineImpl.cpp
r95339 r95423 2684 2684 } 2685 2685 2686 HRESULT Machine::getAudio Adapter(ComPtr<IAudioAdapter> &aAudioAdapter)2686 HRESULT Machine::getAudioSettings(ComPtr<IAudioSettings> &aAudioSettings) 2687 2687 { 2688 2688 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 2689 2689 2690 aAudio Adapter = mAudioAdapter;2690 aAudioSettings = mAudioSettings; 2691 2691 2692 2692 return S_OK; … … 8669 8669 } 8670 8670 8671 /* create the audio adapter object (always present, default is disabled)*/8672 unconst(mAudio Adapter).createObject();8673 mAudio Adapter->init(this);8671 /* create the audio settings object */ 8672 unconst(mAudioSettings).createObject(); 8673 mAudioSettings->init(this); 8674 8674 8675 8675 /* create the USB device filters object (always present) */ … … 8732 8732 } 8733 8733 8734 if (mAudio Adapter)8735 { 8736 mAudio Adapter->uninit();8737 unconst(mAudio Adapter).setNull();8734 if (mAudioSettings) 8735 { 8736 mAudioSettings->uninit(); 8737 unconst(mAudioSettings).setNull(); 8738 8738 } 8739 8739 … … 9425 9425 } 9426 9426 9427 /* Audio Adapter*/9428 rc = mAudio Adapter->i_loadSettings(data.audioAdapter);9427 /* Audio settings */ 9428 rc = mAudioSettings->i_loadSettings(data.audioAdapter); 9429 9429 if (FAILED(rc)) return rc; 9430 9430 … … 10849 10849 } 10850 10850 10851 /* Audio adapter*/10852 rc = mAudio Adapter->i_saveSettings(data.audioAdapter);10851 /* Audio settings */ 10852 rc = mAudioSettings->i_saveSettings(data.audioAdapter); 10853 10853 if (FAILED(rc)) return rc; 10854 10854 … … 12298 12298 mVRDEServer->i_rollback(); 12299 12299 12300 if (mAudio Adapter && (mData->flModifications & IsModified_AudioAdapter))12301 mAudio Adapter->i_rollback();12300 if (mAudioSettings && (mData->flModifications & IsModified_AudioSettings)) 12301 mAudioSettings->i_rollback(); 12302 12302 12303 12303 if (mUSBDeviceFilters && (mData->flModifications & IsModified_USB)) … … 12419 12419 mGraphicsAdapter->i_commit(); 12420 12420 mVRDEServer->i_commit(); 12421 mAudio Adapter->i_commit();12421 mAudioSettings->i_commit(); 12422 12422 mUSBDeviceFilters->i_commit(); 12423 12423 mBandwidthControl->i_commit(); … … 12675 12675 mGraphicsAdapter->i_copyFrom(aThat->mGraphicsAdapter); 12676 12676 mVRDEServer->i_copyFrom(aThat->mVRDEServer); 12677 mAudio Adapter->i_copyFrom(aThat->mAudioAdapter);12677 mAudioSettings->i_copyFrom(aThat->mAudioSettings); 12678 12678 mUSBDeviceFilters->i_copyFrom(aThat->mUSBDeviceFilters); 12679 12679 mBandwidthControl->i_copyFrom(aThat->mBandwidthControl); … … 13062 13062 unconst(mVRDEServer).createObject(); 13063 13063 mVRDEServer->init(this, aMachine->mVRDEServer); 13064 /* create another audio adapterobject that will be mutable */13065 unconst(mAudio Adapter).createObject();13066 mAudio Adapter->init(this, aMachine->mAudioAdapter);13064 /* create another audio settings object that will be mutable */ 13065 unconst(mAudioSettings).createObject(); 13066 mAudioSettings->init(this, aMachine->mAudioSettings); 13067 13067 /* create a list of serial ports that will be mutable */ 13068 13068 for (ULONG slot = 0; slot < RT_ELEMENTS(mSerialPorts); ++slot) … … 14539 14539 * @note Locks this object for reading. 14540 14540 */ 14541 HRESULT SessionMachine::i_onHostAudioDeviceChange(IHostAudioDevice *aDevice, BOOL aNew, AudioDeviceState_T aState, IVirtualBoxErrorInfo *aErrInfo) 14542 { 14543 LogFlowThisFunc(("\n")); 14544 14545 AutoCaller autoCaller(this); 14546 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 14547 14548 ComPtr<IInternalSessionControl> directControl; 14549 { 14550 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 14551 if (mData->mSession.mLockType == LockType_VM) 14552 directControl = mData->mSession.mDirectControl; 14553 } 14554 14555 /* ignore notifications sent after #OnSessionEnd() is called */ 14556 if (!directControl) 14557 return S_OK; 14558 14559 return directControl->OnHostAudioDeviceChange(aDevice, aNew, aState, aErrInfo); 14560 } 14561 14562 /** 14563 * @note Locks this object for reading. 14564 */ 14541 14565 HRESULT SessionMachine::i_onSerialPortChange(ISerialPort *serialPort) 14542 14566 { … … 15823 15847 15824 15848 /* Audio stuff. */ 15825 AudioControllerType_T audioController; 15826 rc = osType->COMGETTER(RecommendedAudioController)(&audioController); 15827 if (FAILED(rc)) return rc; 15828 15829 rc = mAudioAdapter->COMSETTER(AudioController)(audioController); 15830 if (FAILED(rc)) return rc; 15831 15832 AudioCodecType_T audioCodec; 15833 rc = osType->COMGETTER(RecommendedAudioCodec)(&audioCodec); 15834 if (FAILED(rc)) return rc; 15835 15836 rc = mAudioAdapter->COMSETTER(AudioCodec)(audioCodec); 15837 if (FAILED(rc)) return rc; 15838 15839 rc = mAudioAdapter->COMSETTER(Enabled)(true); 15840 if (FAILED(rc)) return rc; 15841 15842 rc = mAudioAdapter->COMSETTER(EnabledOut)(true); 15849 rc = mAudioSettings->i_applyDefaults(osType); 15843 15850 if (FAILED(rc)) return rc; 15844 15851 -
trunk/src/VBox/Main/src-server/SnapshotImpl.cpp
r94864 r95423 1188 1188 if (FAILED(rc)) return rc; 1189 1189 1190 unconst(mAudio Adapter).createObject();1191 rc = mAudio Adapter->initCopy(this, pMachine->mAudioAdapter);1190 unconst(mAudioSettings).createObject(); 1191 rc = mAudioSettings->initCopy(this, pMachine->mAudioSettings); 1192 1192 if (FAILED(rc)) return rc; 1193 1193 … … 1321 1321 mVRDEServer->init(this); 1322 1322 1323 unconst(mAudio Adapter).createObject();1324 mAudio Adapter->init(this);1323 unconst(mAudioSettings).createObject(); 1324 mAudioSettings->init(this); 1325 1325 1326 1326 unconst(mUSBDeviceFilters).createObject();
Note:
See TracChangeset
for help on using the changeset viewer.