Index: /trunk/include/VBox/vmm/pdmaudioifs.h
===================================================================
--- /trunk/include/VBox/vmm/pdmaudioifs.h	(revision 88361)
+++ /trunk/include/VBox/vmm/pdmaudioifs.h	(revision 88362)
@@ -993,42 +993,8 @@
 
 
-/**
- * Audio backend callback types.
- * Those callbacks are being sent from the backend -> audio connector.
- */
-typedef enum PDMAUDIOBACKENDCBTYPE
-{
-    /** Invalid, do not use. */
-    PDMAUDIOBACKENDCBTYPE_INVALID = 0,
-    /** The backend's status has changed. */
-    PDMAUDIOBACKENDCBTYPE_STATUS,
-    /** One or more host audio devices have changed. */
-    PDMAUDIOBACKENDCBTYPE_DEVICES_CHANGED,
-    /** Hack to blow the type up to 32-bit. */
-    PDMAUDIOBACKENDCBTYPE_32BIT_HACK = 0x7fffffff
-} PDMAUDIOBACKENDCBTYPE;
-
-/** Pointer to a host audio interface. */
-typedef struct PDMIHOSTAUDIO *PPDMIHOSTAUDIO;
-
-/**
- * Host audio callback function.
- *
- * This function will be called from a backend to communicate with the host audio interface.
- *
- * @returns VBox status code.
- * @param   pDrvIns             Pointer to driver instance which called us.
- * @param   enmType             Callback type.
- * @param   pvUser              User argument.
- * @param   cbUser              Size (in bytes) of user argument.
- */
-typedef DECLCALLBACKTYPE(int, FNPDMHOSTAUDIOCALLBACK,(PPDMDRVINS pDrvIns, PDMAUDIOBACKENDCBTYPE enmType,
-                                                      void *pvUser, size_t cbUser));
-/** Pointer to a FNPDMHOSTAUDIOCALLBACK(). */
-typedef FNPDMHOSTAUDIOCALLBACK *PFNPDMHOSTAUDIOCALLBACK;
-
 
 /** @todo r=bird: What is this exactly? */
 #define PPDMAUDIOBACKENDSTREAM void *
+
 
 /** Pointer to a audio connector interface. */
@@ -1238,4 +1204,7 @@
 
 
+/** Pointer to a host audio interface. */
+typedef struct PDMIHOSTAUDIO *PPDMIHOSTAUDIO;
+
 /**
  * PDM host audio interface.
@@ -1287,13 +1256,4 @@
      */
     DECLR3CALLBACKMEMBER(PDMAUDIOBACKENDSTS, pfnGetStatus, (PPDMIHOSTAUDIO pInterface, PDMAUDIODIR enmDir));
-
-    /**
-     * Sets a callback the audio backend can call. Optional.
-     *
-     * @returns VBox status code.
-     * @param   pInterface          Pointer to the interface structure containing the called function pointer.
-     * @param   pfnCallback         The callback function to use, or NULL when unregistering.
-     */
-    DECLR3CALLBACKMEMBER(int, pfnSetCallback, (PPDMIHOSTAUDIO pInterface, PFNPDMHOSTAUDIOCALLBACK pfnCallback));
 
     /**
@@ -1449,5 +1409,5 @@
 
 /** PDMIHOSTAUDIO interface ID. */
-#define PDMIHOSTAUDIO_IID                           "be34182b-d579-41e8-96e0-abb94900460f"
+#define PDMIHOSTAUDIO_IID                           "fafc2dfb-eaa8-4e8f-9d13-ffe9163e7c51"
 
 
Index: /trunk/src/VBox/Devices/Audio/DrvAudio.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvAudio.cpp	(revision 88361)
+++ /trunk/src/VBox/Devices/Audio/DrvAudio.cpp	(revision 88362)
@@ -1892,65 +1892,4 @@
 }
 
-#ifdef VBOX_WITH_AUDIO_CALLBACKS  /** @todo r=bird: All this is non-sense that shall be replaced by a PDMIHOSTAUDIO partner interface. */
-
-/**
- * @callback_method_impl{FNPDMHOSTAUDIOCALLBACK, Backend callback implementation.}
- *
- * @par Important:
- * No calls back to the backend within this function, as the backend
- * might hold any locks / critical sections while executing this
- * callback. Will result in some ugly deadlocks (or at least locking
- * order violations) then.
- *
- * @todo r=bird: The above warning is extremely bogus. You enter the critical
- *       section of the driver here, if anything, that will be the lock order
- *       violation.
- */
-static DECLCALLBACK(int) drvAudioBackendCallback(PPDMDRVINS pDrvIns, PDMAUDIOBACKENDCBTYPE enmType, void *pvUser, size_t cbUser)
-{
-    AssertPtrReturn(pDrvIns, VERR_INVALID_POINTER);
-    RT_NOREF(pvUser, cbUser);
-    /* pvUser and cbUser are optional. */
-
-/** @todo r=bird: WTF *is* this?  Seriously?!?
- *
- * DrvAudio will provide the host driver with a "callback" interface
- * with methods like pfnNotifyDevicesChanged and pfnNotifyStatusChanged.
- * The host drivers that implements callbacks can query the callback
- * interface and make use of it.
- */
-
-    /* Get the upper driver (PDMIAUDIOCONNECTOR). */
-    AssertPtr(pDrvIns->pUpBase);
-    PPDMIAUDIOCONNECTOR pInterface = PDMIBASE_QUERY_INTERFACE(pDrvIns->pUpBase, PDMIAUDIOCONNECTOR);
-    AssertPtr(pInterface);
-    PDRVAUDIO pThis = RT_FROM_MEMBER(pInterface, DRVAUDIO, IAudioConnector);
-    AssertPtr(pThis);
-
-    int rc = RTCritSectEnter(&pThis->CritSect);
-    AssertRCReturn(rc, rc);
-
-    LogFunc(("pThis=%p, enmType=%RU32, pvUser=%p, cbUser=%zu\n", pThis, enmType, pvUser, cbUser));
-
-    switch (enmType)
-    {
-        case PDMAUDIOBACKENDCBTYPE_DEVICES_CHANGED:
-            LogRel(("Audio: Device configuration of driver '%s' has changed\n", pThis->szName));
-            drvAudioScheduleReInitInternal(pThis);
-            break;
-
-        default:
-            AssertMsgFailed(("Not supported\n"));
-            break;
-    }
-
-    RTCritSectLeave(&pThis->CritSect);
-
-    LogFlowFunc(("Returning %Rrc\n", rc));
-    return rc;
-}
-
-#endif /* VBOX_WITH_AUDIO_CALLBACKS */
-
 #ifdef VBOX_WITH_AUDIO_ENUM
 /**
@@ -2053,5 +1992,4 @@
     AssertPtrNullReturn(pHostDrvAudio->pfnGetDevices, VERR_INVALID_POINTER);
     AssertPtrNullReturn(pHostDrvAudio->pfnGetStatus, VERR_INVALID_POINTER);
-    AssertPtrNullReturn(pHostDrvAudio->pfnSetCallback, VERR_INVALID_POINTER);
     AssertPtrReturn(pHostDrvAudio->pfnStreamCreate, VERR_INVALID_POINTER);
     AssertPtrReturn(pHostDrvAudio->pfnStreamDestroy, VERR_INVALID_POINTER);
@@ -2107,19 +2045,4 @@
     RT_NOREF(rc2);
     /* Ignore rc. */
-#endif
-
-#ifdef VBOX_WITH_AUDIO_CALLBACKS
-    /*
-     * If the backend supports it, offer a callback to this connector.
-     */
-/** @todo r=bird: Total misdesign.  If the backend wants to talk to us, it
- *                should use PDMIBASE_QUERY_INTERFACE to get an interface from us. */
-    if (pThis->pHostDrvAudio->pfnSetCallback)
-    {
-        rc2 = pThis->pHostDrvAudio->pfnSetCallback(pThis->pHostDrvAudio, drvAudioBackendCallback);
-        if (RT_FAILURE(rc2))
-             LogRel(("Audio: Error registering callback for host driver '%s', rc=%Rrc\n", pThis->szName, rc2));
-        /* Not fatal. */
-    }
 #endif
 
@@ -3405,9 +3328,8 @@
 
 
-#ifdef VBOX_WITH_AUDIO_CALLBACKS
 /*********************************************************************************************************************************
 *   PDMIAUDIONOTIFYFROMHOST interface implementation.                                                                            *
 *********************************************************************************************************************************/
-
+#ifdef VBOX_WITH_AUDIO_CALLBACKS
 /**
  * @interface_method_impl{PDMIAUDIONOTIFYFROMHOST,pfnNotifyDevicesChanged}
Index: /trunk/src/VBox/Devices/Audio/DrvHostAudioAlsa.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvHostAudioAlsa.cpp	(revision 88361)
+++ /trunk/src/VBox/Devices/Audio/DrvHostAudioAlsa.cpp	(revision 88362)
@@ -1504,5 +1504,4 @@
     pThis->IHostAudio.pfnStreamPlay         = drvHostAlsaAudioHA_StreamPlay;
     pThis->IHostAudio.pfnStreamCapture      = drvHostAlsaAudioHA_StreamCapture;
-    pThis->IHostAudio.pfnSetCallback        = NULL;
     pThis->IHostAudio.pfnGetDevices         = NULL;
     pThis->IHostAudio.pfnStreamGetPending   = drvHostALSAStreamGetPending;
Index: /trunk/src/VBox/Devices/Audio/DrvHostAudioCoreAudio.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvHostAudioCoreAudio.cpp	(revision 88361)
+++ /trunk/src/VBox/Devices/Audio/DrvHostAudioCoreAudio.cpp	(revision 88362)
@@ -2563,5 +2563,4 @@
     pThis->IHostAudio.pfnStreamPlay         = drvHostCoreAudioHA_StreamPlay;
     pThis->IHostAudio.pfnStreamCapture      = drvHostCoreAudioHA_StreamCapture;
-    pThis->IHostAudio.pfnSetCallback        = NULL;
     pThis->IHostAudio.pfnGetDevices         = drvHostCoreAudioHA_GetDevices;
     pThis->IHostAudio.pfnStreamGetPending   = NULL;
Index: /trunk/src/VBox/Devices/Audio/DrvHostAudioDSound.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvHostAudioDSound.cpp	(revision 88361)
+++ /trunk/src/VBox/Devices/Audio/DrvHostAudioDSound.cpp	(revision 88362)
@@ -2629,5 +2629,4 @@
     pThis->IHostAudio.pfnStreamPlay         = drvHostDSoundHA_StreamPlay;
     pThis->IHostAudio.pfnStreamCapture      = drvHostDSoundHA_StreamCapture;
-    pThis->IHostAudio.pfnSetCallback        = NULL;
     pThis->IHostAudio.pfnGetDevices         = drvHostDSoundHA_GetDevices;
     pThis->IHostAudio.pfnStreamGetPending   = drvHostDSoundHA_StreamGetPending;
Index: /trunk/src/VBox/Devices/Audio/DrvHostAudioDebug.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvHostAudioDebug.cpp	(revision 88361)
+++ /trunk/src/VBox/Devices/Audio/DrvHostAudioDebug.cpp	(revision 88362)
@@ -422,5 +422,4 @@
     pThis->IHostAudio.pfnStreamPlay         = drvHostDebugAudioHA_StreamPlay;
     pThis->IHostAudio.pfnStreamCapture      = drvHostDebugAudioHA_StreamCapture;
-    pThis->IHostAudio.pfnSetCallback        = NULL;
     pThis->IHostAudio.pfnGetDevices         = NULL;
     pThis->IHostAudio.pfnStreamGetPending   = NULL;
Index: /trunk/src/VBox/Devices/Audio/DrvHostAudioNull.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvHostAudioNull.cpp	(revision 88361)
+++ /trunk/src/VBox/Devices/Audio/DrvHostAudioNull.cpp	(revision 88362)
@@ -360,5 +360,4 @@
     pThis->IHostAudio.pfnStreamPlay         = drvHostNullAudioHA_StreamPlay;
     pThis->IHostAudio.pfnStreamCapture      = drvHostNullAudioHA_StreamCapture;
-    pThis->IHostAudio.pfnSetCallback        = NULL;
     pThis->IHostAudio.pfnGetDevices         = NULL;
     pThis->IHostAudio.pfnStreamGetPending   = NULL;
Index: /trunk/src/VBox/Devices/Audio/DrvHostAudioOss.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvHostAudioOss.cpp	(revision 88361)
+++ /trunk/src/VBox/Devices/Audio/DrvHostAudioOss.cpp	(revision 88362)
@@ -758,5 +758,4 @@
     pThis->IHostAudio.pfnStreamPlay         = drvHostOssAudioHA_StreamPlay;
     pThis->IHostAudio.pfnStreamCapture      = drvHostOssAudioHA_StreamCapture;
-    pThis->IHostAudio.pfnSetCallback        = NULL;
     pThis->IHostAudio.pfnGetDevices         = NULL;
     pThis->IHostAudio.pfnStreamGetPending   = NULL;
Index: /trunk/src/VBox/Devices/Audio/DrvHostAudioPulseAudio.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvHostAudioPulseAudio.cpp	(revision 88361)
+++ /trunk/src/VBox/Devices/Audio/DrvHostAudioPulseAudio.cpp	(revision 88362)
@@ -1702,5 +1702,4 @@
     pThis->IHostAudio.pfnStreamPlay         = drvHostPulseAudioHA_StreamPlay;
     pThis->IHostAudio.pfnStreamCapture      = drvHostPulseAudioHA_StreamCapture;
-    pThis->IHostAudio.pfnSetCallback        = NULL;
     pThis->IHostAudio.pfnGetDevices         = NULL;
     pThis->IHostAudio.pfnStreamGetPending   = NULL;
Index: /trunk/src/VBox/Devices/Audio/DrvHostAudioValidationKit.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvHostAudioValidationKit.cpp	(revision 88361)
+++ /trunk/src/VBox/Devices/Audio/DrvHostAudioValidationKit.cpp	(revision 88362)
@@ -425,5 +425,4 @@
     pThis->IHostAudio.pfnStreamPlay         = drvHostValKitAudioHA_StreamPlay;
     pThis->IHostAudio.pfnStreamCapture      = drvHostValKitAudioHA_StreamCapture;
-    pThis->IHostAudio.pfnSetCallback        = NULL;
     pThis->IHostAudio.pfnGetDevices         = NULL;
     pThis->IHostAudio.pfnStreamGetPending   = NULL;
Index: /trunk/src/VBox/Main/src-client/DrvAudioRec.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/DrvAudioRec.cpp	(revision 88361)
+++ /trunk/src/VBox/Main/src-client/DrvAudioRec.cpp	(revision 88362)
@@ -1156,5 +1156,4 @@
     pThis->IHostAudio.pfnStreamPlay         = drvAudioVideoRecHA_StreamPlay;
     pThis->IHostAudio.pfnStreamCapture      = drvAudioVideoRecHA_StreamCapture;
-    pThis->IHostAudio.pfnSetCallback        = NULL;
     pThis->IHostAudio.pfnGetDevices         = NULL;
     pThis->IHostAudio.pfnStreamGetPending   = NULL;
Index: /trunk/src/VBox/Main/src-client/DrvAudioVRDE.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/DrvAudioVRDE.cpp	(revision 88361)
+++ /trunk/src/VBox/Main/src-client/DrvAudioVRDE.cpp	(revision 88362)
@@ -721,5 +721,4 @@
     pThis->IHostAudio.pfnGetDevices        = NULL;
     pThis->IHostAudio.pfnGetStatus         = drvAudioVrdeHA_GetStatus;
-    pThis->IHostAudio.pfnSetCallback       = NULL;
     pThis->IHostAudio.pfnStreamCreate      = drvAudioVrdeHA_StreamCreate;
     pThis->IHostAudio.pfnStreamDestroy     = drvAudioVrdeHA_StreamDestroy;
