Index: mtd.pro
===================================================================
--- mtd.pro	(revision 11716)
+++ mtd.pro	(working copy)
@@ -3,6 +3,7 @@
 
 TEMPLATE = app
 CONFIG += thread opengl
+CONFIG += console
 TARGET = mtd
 target.path = $${PREFIX}/bin
 INSTALLS += target
@@ -16,3 +17,18 @@
 SOURCES += main.cpp ../mythdvd/dbcheck.cpp logging.cpp mtd.cpp serversocket.cpp
 SOURCES += jobthread.cpp dvdprobe.cpp fileobs.cpp threadevents.cpp
 
+macx {
+    DEFINES += USING_DARWIN_DA
+    SOURCES += mtd-darwin.cpp
+    HEADERS += mtd-darwin.h
+
+    # Mac OS X Frameworks
+    FWKS = CoreFoundation IOKit DiskArbitration
+
+    # The following trick is tidier, and shortens the command line, but it
+    # depends on the shell expanding Csh-style braces. Luckily, Bash & Zsh do.
+    FC = $$join(FWKS,",","{","}")
+
+    QMAKE_CXXFLAGS += -F/System/Library/Frameworks/$${FC}.framework/Frameworks
+    LIBS           += -framework $$join(FWKS," -framework ")
+}
\ No newline at end of file
Index: dvdprobe.h
===================================================================
--- dvdprobe.h	(revision 11716)
+++ dvdprobe.h	(working copy)
@@ -179,6 +179,8 @@
     QString             getName(){return volume_name;}
     QPtrList<DVDTitle>* getTitles(){return &titles;}
     DVDTitle*           getTitle(uint which_one);
+    void                setDevice(const QString &dvd_device) { device = dvd_device;}
+    QString             getDevice() const { return device;}
     
   private:
 
Index: mtd.cpp
===================================================================
--- mtd.cpp	(revision 11716)
+++ mtd.cpp	(working copy)
@@ -18,6 +18,9 @@
 #include <mythtv/mythcontext.h>
 
 #include "mtd.h"
+#ifdef USING_DARWIN_DA
+#include "mtd-darwin.h"
+#endif // USING_DARWIN_DA
 #include "logging.h"
 
 enum RIP_QUALITIES { QUALITY_ISO = -1, QUALITY_PERFECT, QUALITY_TRANSCODE };
@@ -180,7 +183,11 @@
         exit(0);
     }
     dvd_probe = new DVDProbe(dvd_device);
+#ifdef USING_DARWIN_DA
+    disc_checking_thread = new DarwinDiscCheckingThread(this, dvd_probe, dvd_drive_access, titles_mutex);
+#else
     disc_checking_thread = new DiscCheckingThread(this, dvd_probe, dvd_drive_access, titles_mutex);
+#endif // USING_DARWIN_DA
     disc_checking_thread->start();
     disc_checking_timer = new QTimer();
     disc_checking_timer->start(1000);
@@ -679,7 +686,7 @@
     QString file_name = dir_and_file.section("/", -1, -1);
 
 
-    QString dvd_device = gContext->GetSetting("DVDDeviceLocation");
+    QString dvd_device = dvd_probe->getDevice(); //gContext->GetSetting("DVDDeviceLocation");
     if(dvd_device.length() < 1)
     {
         emit writeToLog("crapity crap crap - all set to launch a dvd job and you don't have a dvd device defined");
Index: mtd.h
===================================================================
--- mtd.h	(revision 11716)
+++ mtd.h	(working copy)
@@ -35,7 +35,7 @@
     bool    haveDisc(){return have_disc;}
     bool    keepGoing();
     
-  private:
+  protected:
   
     MTD      *parent;
     DVDProbe *dvd_probe;
