VirtualBox

Changeset 88359 in vbox for trunk/src


Ignore:
Timestamp:
Apr 4, 2021 11:51:06 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
143606
Message:

Audio: Added notification interface that host drivers can use. Will replace the PDMIHOSTAUDIO::pfnSetCallback fun. bugref:9890

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/DrvAudio.cpp

    r88358 r88359  
    278278    /** Our audio connector interface. */
    279279    PDMIAUDIOCONNECTOR      IAudioConnector;
     280#ifdef VBOX_WITH_AUDIO_CALLBACKS
     281    /** Interface used by the host backend. */
     282    PDMIAUDIONOTIFYFROMHOST IAudioNotifyFromHost;
     283#endif
    280284    /** Pointer to the driver instance. */
    281285    PPDMDRVINS              pDrvIns;
     
    836840 * The actual re-initialization will happen at some later point in time.
    837841 *
    838  * @returns VBox status code.
    839842 * @param   pThis               Pointer to driver instance.
    840843 */
    841 static int drvAudioScheduleReInitInternal(PDRVAUDIO pThis)
    842 {
    843     AssertPtrReturn(pThis, VERR_INVALID_POINTER);
    844 
     844static void drvAudioScheduleReInitInternal(PDRVAUDIO pThis)
     845{
    845846    LogFunc(("\n"));
    846847
     
    858859    pThis->fEnumerateDevices = true;
    859860# endif
    860 
    861     return VINF_SUCCESS;
    862861}
    863862#endif /* VBOX_WITH_AUDIO_CALLBACKS */
     
    19381937        case PDMAUDIOBACKENDCBTYPE_DEVICES_CHANGED:
    19391938            LogRel(("Audio: Device configuration of driver '%s' has changed\n", pThis->szName));
    1940             rc = drvAudioScheduleReInitInternal(pThis);
     1939            drvAudioScheduleReInitInternal(pThis);
    19411940            break;
    19421941
     
    34063405
    34073406
     3407#ifdef VBOX_WITH_AUDIO_CALLBACKS
     3408/*********************************************************************************************************************************
     3409*   PDMIAUDIONOTIFYFROMHOST interface implementation.                                                                            *
     3410*********************************************************************************************************************************/
     3411
     3412/**
     3413 * @interface_method_impl{PDMIAUDIONOTIFYFROMHOST,pfnNotifyDevicesChanged}
     3414 */
     3415static DECLCALLBACK(void) drvAudioNotifyFromHost_NotifyDevicesChanged(PPDMIAUDIONOTIFYFROMHOST pInterface)
     3416{
     3417    PDRVAUDIO pThis = RT_FROM_MEMBER(pInterface, DRVAUDIO, IAudioNotifyFromHost);
     3418
     3419    LogRel(("Audio: Device configuration of driver '%s' has changed\n", pThis->szName));
     3420    drvAudioScheduleReInitInternal(pThis);
     3421}
     3422
     3423#endif /* VBOX_WITH_AUDIO_CALLBACKS */
     3424
     3425
    34083426/*********************************************************************************************************************************
    34093427*   PDMIBASE interface implementation.                                                                                           *
     
    34223440    PDMIBASE_RETURN_INTERFACE(pszIID, PDMIBASE, &pDrvIns->IBase);
    34233441    PDMIBASE_RETURN_INTERFACE(pszIID, PDMIAUDIOCONNECTOR, &pThis->IAudioConnector);
     3442#ifdef VBOX_WITH_AUDIO_CALLBACKS
     3443    PDMIBASE_RETURN_INTERFACE(pszIID, PDMIAUDIONOTIFYFROMHOST, &pThis->IAudioNotifyFromHost);
     3444#endif
    34243445
    34253446    return NULL;
     
    38483869    pThis->IAudioConnector.pfnStreamPlay        = drvAudioStreamPlay;
    38493870    pThis->IAudioConnector.pfnStreamCapture     = drvAudioStreamCapture;
     3871#ifdef VBOX_WITH_AUDIO_CALLBACKS
     3872    /* IAudioNotifyFromHost */
     3873    pThis->IAudioNotifyFromHost.pfnNotifyDevicesChanged = drvAudioNotifyFromHost_NotifyDevicesChanged;
     3874#endif
    38503875
    38513876    /*
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