Index: /trunk/src/VBox/Devices/Audio/DrvHostPulseAudio.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvHostPulseAudio.cpp	(revision 64729)
+++ /trunk/src/VBox/Devices/Audio/DrvHostPulseAudio.cpp	(revision 64730)
@@ -176,6 +176,10 @@
 {
     if (!pThis)
+    {
+        LogRel(("DEBUG: paSignalWaiter return because of !pThis\n"));
         return;
-
+    }
+
+    LogRel(("DEBUG: paSignalWaiter set fLoopWait=true and calling pa_threaded_mainloop_signal()\n"));
     pThis->fAbortLoop = true;
     pa_threaded_mainloop_signal(pThis->pMainLoop, 0);
@@ -275,4 +279,5 @@
             break;
         }
+        LogRel(("DEBUG: paWaitForEx next turn (elapsed=%RU64ms)\n", u64ElapsedMs));
     }
 
@@ -985,4 +990,36 @@
 {
     if (eol != 0)
+    {
+        LogRel(("DEBUG: paEnumSinkCb return EOL=1\n"));
+        return;
+    }
+    if (!pCtx)
+        LogRel(("DEBUG: paEnumSinkCb return because of !pCtx\n"));
+    AssertPtrReturnVoid(pCtx);
+    if (!pInfo)
+        LogRel(("DEBUG: paEnumSinkCb return because of !pInfo\n"));
+    AssertPtrReturnVoid(pInfo);
+
+    PPULSEAUDIOENUMCBCTX pCbCtx = (PPULSEAUDIOENUMCBCTX)pvUserData;
+    if (!pCbCtx)
+        LogRel(("DEBUG: paEnumSinkCb return because of !pCbCtx\n"));
+    AssertPtrReturnVoid(pCbCtx);
+    if (!pCbCtx->pDrv)
+        LogRel(("DEBUG: paEnumSinkCb return because of !pCbCtx->pDrv\n"));
+    AssertPtrReturnVoid(pCbCtx->pDrv);
+
+    LogRel2(("PulseAudio: Using output sink '%s'\n", pInfo->name));
+
+    /** @todo Store sinks + channel mapping in callback context as soon as we have surround support. */
+    pCbCtx->cDevOut++;
+
+    LogRel(("DEBUG: pa_threaded_mainloop_signal() from paEnumSinkCb\n"));
+    pa_threaded_mainloop_signal(pCbCtx->pDrv->pMainLoop, 0);
+}
+
+
+static void paEnumSourceCb(pa_context *pCtx, const pa_source_info *pInfo, int eol, void *pvUserData)
+{
+    if (eol != 0)
         return;
 
@@ -994,18 +1031,16 @@
     AssertPtrReturnVoid(pCbCtx->pDrv);
 
-    LogRel2(("PulseAudio: Using output sink '%s'\n", pInfo->name));
-
-    /** @todo Store sinks + channel mapping in callback context as soon as we have surround support. */
-    pCbCtx->cDevOut++;
-
+    LogRel2(("PulseAudio: Using input source '%s'\n", pInfo->name));
+
+    /** @todo Store sources + channel mapping in callback context as soon as we have surround support. */
+    pCbCtx->cDevIn++;
+
+    LogRel(("DEBUG: pa_threaded_mainloop_signal() from paEnumSourceCb\n"));
     pa_threaded_mainloop_signal(pCbCtx->pDrv->pMainLoop, 0);
 }
 
 
-static void paEnumSourceCb(pa_context *pCtx, const pa_source_info *pInfo, int eol, void *pvUserData)
-{
-    if (eol != 0)
-        return;
-
+static void paEnumServerCb(pa_context *pCtx, const pa_server_info *pInfo, void *pvUserData)
+{
     AssertPtrReturnVoid(pCtx);
     AssertPtrReturnVoid(pInfo);
@@ -1013,22 +1048,4 @@
     PPULSEAUDIOENUMCBCTX pCbCtx = (PPULSEAUDIOENUMCBCTX)pvUserData;
     AssertPtrReturnVoid(pCbCtx);
-    AssertPtrReturnVoid(pCbCtx->pDrv);
-
-    LogRel2(("PulseAudio: Using input source '%s'\n", pInfo->name));
-
-    /** @todo Store sources + channel mapping in callback context as soon as we have surround support. */
-    pCbCtx->cDevIn++;
-
-    pa_threaded_mainloop_signal(pCbCtx->pDrv->pMainLoop, 0);
-}
-
-
-static void paEnumServerCb(pa_context *pCtx, const pa_server_info *pInfo, void *pvUserData)
-{
-    AssertPtrReturnVoid(pCtx);
-    AssertPtrReturnVoid(pInfo);
-
-    PPULSEAUDIOENUMCBCTX pCbCtx = (PPULSEAUDIOENUMCBCTX)pvUserData;
-    AssertPtrReturnVoid(pCbCtx);
 
     PDRVHOSTPULSEAUDIO pThis    = pCbCtx->pDrv;
@@ -1047,4 +1064,5 @@
     }
 
+    LogRel(("DEBUG: pa_threaded_mainloop_signal() from paEnumServerCb\n"));
     pa_threaded_mainloop_signal(pThis->pMainLoop, 0);
 }
