Index: /trunk/src/VBox/Devices/Audio/AudioMixer.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/AudioMixer.cpp	(revision 68267)
+++ /trunk/src/VBox/Devices/Audio/AudioMixer.cpp	(revision 68268)
@@ -727,7 +727,10 @@
     else if (enmSinkCmd == AUDMIXSINKCMD_DISABLE)
     {
-        /* Set the sink in a pending disable state first.
-         * The final status (disabled) will be set in the sink's iteration. */
-        pSink->fStatus |= AUDMIXSINK_STS_PENDING_DISABLE;
+        if (pSink->fStatus & AUDMIXSINK_STS_RUNNING)
+        {
+            /* Set the sink in a pending disable state first.
+             * The final status (disabled) will be set in the sink's iteration. */
+            pSink->fStatus |= AUDMIXSINK_STS_PENDING_DISABLE;
+        }
     }
 
@@ -1031,7 +1034,10 @@
     int rc2 = RTCritSectEnter(&pSink->CritSect);
     if (RT_FAILURE(rc2))
-        return 0;
-
-    bool fIsActive = (pSink->fStatus & AUDMIXSINK_STS_RUNNING);
+        return false;
+
+    bool fIsActive = pSink->fStatus & AUDMIXSINK_STS_RUNNING;
+    /* Note: AUDMIXSINK_STS_PENDING_DISABLE implies AUDMIXSINK_STS_RUNNING. */
+
+    Log3Func(("[%s] fActive=%RTbool\n", pSink->pszName, fIsActive));
 
     rc2 = RTCritSectLeave(&pSink->CritSect);
@@ -1315,4 +1321,6 @@
     int rc2 = RTCritSectEnter(&pSink->CritSect);
     AssertRC(rc2);
+
+    LogFlowFunc(("[%s]\n", pSink->pszName));
 
     audioMixerSinkReset(pSink);
