Destroy Job threads at the start of the subclass destructors,
[dcpomatic.git] / src / lib / job.cc
index 4517765247075236bd702123852bc6125c27fc7e..d4023973cfb4fd9942032f99f793d4dee04e7627 100644 (file)
@@ -61,6 +61,15 @@ Job::Job (shared_ptr<const Film> film)
 }
 
 Job::~Job ()
+{
+#ifdef DCPOMATIC_DEBUG
+       /* Any subclass should have called destroy_thread in its destructor */
+       assert (!_thread);
+#endif
+}
+
+void
+Job::destroy_thread ()
 {
        if (_thread) {
                _thread->interrupt ();
@@ -75,6 +84,7 @@ Job::~Job ()
        }
 
        delete _thread;
+       _thread = 0;
 }
 
 /** Start the job in a separate thread, returning immediately */