Index: mythtv/libs/libmyth/mythcdrom-linux.cpp
===================================================================
--- mythtv/libs/libmyth/mythcdrom-linux.cpp	(revision 27066)
+++ mythtv/libs/libmyth/mythcdrom-linux.cpp	(working copy)
@@ -19,7 +19,9 @@
 #define LOC_ERR QString("MythCDROMLinux, Error: ")
 
 // On a mixed-mode disc (audio+data), set this to 0 to mount the data portion:
+#ifndef ASSUME_WANT_AUDIO
 #define ASSUME_WANT_AUDIO 1
+#endif
 
 
 // Some features cannot be detected (reliably) using the standard
@@ -432,6 +434,15 @@
     // If we have tried to mount and failed, don't keep trying
     if (m_Status == MEDIASTAT_ERROR)
     {
+        // Check if an external agent (like Gnome/KDE) mounted the disk
+        if (isMounted())
+        {
+            onDeviceMounted();
+            // pretend we're NOTMOUNTED so setStatus emits a signal
+            m_Status = MEDIASTAT_NOTMOUNTED;
+            return setStatus(MEDIASTAT_MOUNTED, OpenedHere);
+        }
+
         VERBOSE(VB_MEDIA+VB_EXTRA, "Disc is unmountable?");
         if (OpenedHere)
             closeDevice();
@@ -510,18 +521,23 @@
             }
             case CDS_AUDIO:
                 VERBOSE(VB_MEDIA, "found an audio disk");
+                // pretend we're NOTMOUNTED so setStatus emits a signal
+                m_Status = MEDIASTAT_NOTMOUNTED;
                 m_MediaType = MEDIATYPE_AUDIO;
                 return setStatus(MEDIASTAT_USEABLE, OpenedHere);
                 break;
             case CDS_MIXED:
-                m_MediaType = MEDIATYPE_MIXED;
                 VERBOSE(VB_MEDIA, "found a mixed CD");
                 // Note: Mixed mode CDs require an explixit mount call
                 //       since we'll usually want the audio portion.
                 // undefine ASSUME_WANT_AUDIO to change this behavior.
-                #ifdef ASSUME_WANT_AUDIO
+                #if ASSUME_WANT_AUDIO
+                    // pretend we're NOTMOUNTED so setStatus emits a signal
+                    m_Status = MEDIASTAT_NOTMOUNTED;
+                    m_MediaType = MEDIATYPE_AUDIO;
                     return setStatus(MEDIASTAT_USEABLE, OpenedHere);
                 #else
+                    m_MediaType = MEDIATYPE_MIXED;
                     mount();
                     if (isMounted())
                     {
