Changeset 22173 in vbox for trunk/src/VBox/Main/AudioAdapterImpl.cpp
- Timestamp:
- Aug 11, 2009 3:38:59 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 50951
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/AudioAdapterImpl.cpp
r21878 r22173 361 361 * @note Locks this object for writing. 362 362 */ 363 HRESULT AudioAdapter::loadSettings (const settings::Key &aMachineNode) 364 { 365 using namespace settings; 366 367 AssertReturn(!aMachineNode.isNull(), E_FAIL); 368 363 HRESULT AudioAdapter::loadSettings(const settings::AudioAdapter &data) 364 { 369 365 AutoCaller autoCaller(this); 370 366 AssertComRCReturnRC(autoCaller.rc()); … … 383 379 * default to B. */ 384 380 385 /* AudioAdapter node (required) */ 386 Key audioAdapterNode = aMachineNode.key ("AudioAdapter"); 387 388 /* is the adapter enabled? (required) */ 389 mData->mEnabled = audioAdapterNode.value <bool> ("enabled"); 390 391 /* now check the audio adapter */ 392 const char *controller = audioAdapterNode.stringValue ("controller"); 393 if (strcmp (controller, "SB16") == 0) 394 mData->mAudioController = AudioControllerType_SB16; 395 else if (strcmp (controller, "AC97") == 0) 396 mData->mAudioController = AudioControllerType_AC97; 397 398 /* now check the audio driver (required) */ 399 const char *driver = audioAdapterNode.stringValue ("driver"); 400 if (strcmp (driver, "Null") == 0) 401 mData->mAudioDriver = AudioDriverType_Null; 402 #ifdef RT_OS_WINDOWS 403 else if (strcmp (driver, "WinMM") == 0) 404 #ifdef VBOX_WITH_WINMM 405 mData->mAudioDriver = AudioDriverType_WinMM; 406 #else 407 /* fall back to dsound */ 408 mData->mAudioDriver = AudioDriverType_DirectSound; 409 #endif 410 else if (strcmp (driver, "DirectSound") == 0) 411 mData->mAudioDriver = AudioDriverType_DirectSound; 412 #endif // RT_OS_WINDOWS 413 #ifdef RT_OS_SOLARIS 414 else if (strcmp (driver, "SolAudio") == 0) 415 mData->mAudioDriver = AudioDriverType_SolAudio; 416 #endif // RT_OS_SOLARIS 417 #ifdef RT_OS_LINUX 418 else if (strcmp (driver, "ALSA") == 0) 419 # ifdef VBOX_WITH_ALSA 420 mData->mAudioDriver = AudioDriverType_ALSA; 421 # else 422 /* fall back to OSS */ 423 mData->mAudioDriver = AudioDriverType_OSS; 424 # endif 425 else if (strcmp (driver, "Pulse") == 0) 426 # ifdef VBOX_WITH_PULSE 427 mData->mAudioDriver = AudioDriverType_Pulse; 428 # else 429 /* fall back to OSS */ 430 mData->mAudioDriver = AudioDriverType_OSS; 431 # endif 432 #endif // RT_OS_LINUX 433 #if defined (RT_OS_LINUX) || defined (RT_OS_FREEBSD) || defined(VBOX_WITH_SOLARIS_OSS) 434 else if (strcmp (driver, "OSS") == 0) 435 mData->mAudioDriver = AudioDriverType_OSS; 436 #endif // RT_OS_LINUX || RT_OS_FREEBSD 437 #ifdef RT_OS_DARWIN 438 else if (strcmp (driver, "CoreAudio") == 0) 439 mData->mAudioDriver = AudioDriverType_CoreAudio; 440 #endif 441 #ifdef RT_OS_OS2 442 else if (strcmp (driver, "MMPM") == 0) 443 mData->mAudioDriver = AudioDriverType_MMPM; 444 #endif 445 else 446 AssertMsgFailed (("Invalid driver '%s'\n", driver)); 381 mData->mEnabled = data.fEnabled; 382 mData->mAudioController = data.controllerType; 383 mData->mAudioDriver = data.driverType; 447 384 448 385 return S_OK; … … 456 393 * @note Locks this object for reading. 457 394 */ 458 HRESULT AudioAdapter::saveSettings (settings::Key &aMachineNode) 459 { 460 using namespace settings; 461 462 AssertReturn(!aMachineNode.isNull(), E_FAIL); 463 395 HRESULT AudioAdapter::saveSettings(settings::AudioAdapter &data) 396 { 464 397 AutoCaller autoCaller(this); 465 398 AssertComRCReturnRC(autoCaller.rc()); … … 467 400 AutoReadLock alock(this); 468 401 469 Key node = aMachineNode.createKey ("AudioAdapter"); 470 471 const char *controllerStr = NULL; 472 switch (mData->mAudioController) 473 { 474 case AudioControllerType_SB16: 475 { 476 controllerStr = "SB16"; 477 break; 478 } 479 default: 480 { 481 controllerStr = "AC97"; 482 break; 483 } 484 } 485 node.setStringValue ("controller", controllerStr); 486 487 const char *driverStr = NULL; 488 switch (mData->mAudioDriver) 489 { 490 case AudioDriverType_Null: 491 { 492 driverStr = "Null"; 493 break; 494 } 495 #ifdef RT_OS_WINDOWS 496 case AudioDriverType_WinMM: 497 # ifdef VBOX_WITH_WINMM 498 { 499 driverStr = "WinMM"; 500 break; 501 } 502 # endif 503 case AudioDriverType_DirectSound: 504 { 505 driverStr = "DirectSound"; 506 break; 507 } 508 #endif /* RT_OS_WINDOWS */ 509 #ifdef RT_OS_SOLARIS 510 case AudioDriverType_SolAudio: 511 { 512 driverStr = "SolAudio"; 513 break; 514 } 515 #endif 516 #ifdef RT_OS_LINUX 517 case AudioDriverType_ALSA: 518 # ifdef VBOX_WITH_ALSA 519 { 520 driverStr = "ALSA"; 521 break; 522 } 523 # endif 524 case AudioDriverType_Pulse: 525 # ifdef VBOX_WITH_PULSE 526 { 527 driverStr = "Pulse"; 528 break; 529 } 530 # endif 531 #endif /* RT_OS_LINUX */ 532 #if defined (RT_OS_LINUX) || defined (RT_OS_FREEBSD) || defined(VBOX_WITH_SOLARIS_OSS) 533 case AudioDriverType_OSS: 534 { 535 driverStr = "OSS"; 536 break; 537 } 538 #endif /* RT_OS_LINUX || RT_OS_FREEBSD */ 539 #ifdef RT_OS_DARWIN 540 case AudioDriverType_CoreAudio: 541 { 542 driverStr = "CoreAudio"; 543 break; 544 } 545 #endif 546 #ifdef RT_OS_OS2 547 case AudioDriverType_MMPM: 548 { 549 driverStr = "MMPM"; 550 break; 551 } 552 #endif 553 default: 554 ComAssertMsgFailedRet (("Wrong audio driver type! driver = %d", 555 mData->mAudioDriver), 556 E_FAIL); 557 } 558 node.setStringValue ("driver", driverStr); 559 560 node.setValue <bool> ("enabled", !!mData->mEnabled); 561 402 data.fEnabled = mData->mEnabled; 403 data.controllerType = mData->mAudioController; 404 data.driverType = mData->mAudioDriver; 562 405 return S_OK; 563 406 }
Note:
See TracChangeset
for help on using the changeset viewer.