VirtualBox

Ignore:
Timestamp:
Aug 11, 2009 3:38:59 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
50951
Message:

Main: the big XML settings rework. Move XML reading/writing out of interface implementation code into separate layer so it can handle individual settings versions in the future.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/AudioAdapterImpl.cpp

    r21878 r22173  
    361361 *  @note Locks this object for writing.
    362362 */
    363 HRESULT AudioAdapter::loadSettings (const settings::Key &aMachineNode)
    364 {
    365     using namespace settings;
    366 
    367     AssertReturn(!aMachineNode.isNull(), E_FAIL);
    368 
     363HRESULT AudioAdapter::loadSettings(const settings::AudioAdapter &data)
     364{
    369365    AutoCaller autoCaller(this);
    370366    AssertComRCReturnRC(autoCaller.rc());
     
    383379     * default to B. */
    384380
    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;
    447384
    448385    return S_OK;
     
    456393 *  @note Locks this object for reading.
    457394 */
    458 HRESULT AudioAdapter::saveSettings (settings::Key &aMachineNode)
    459 {
    460     using namespace settings;
    461 
    462     AssertReturn(!aMachineNode.isNull(), E_FAIL);
    463 
     395HRESULT AudioAdapter::saveSettings(settings::AudioAdapter &data)
     396{
    464397    AutoCaller autoCaller(this);
    465398    AssertComRCReturnRC(autoCaller.rc());
     
    467400    AutoReadLock alock(this);
    468401
    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;
    562405    return S_OK;
    563406}
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