Accessor for ClosedCaptionsDialog.
[dcpomatic.git] / src / lib / job.cc
index 8cc6ced8ef2e90f81f83d802466f269f8237eb59..8966a65e700eb84b8f3945eb7d81987d8c88f7b5 100644 (file)
@@ -46,6 +46,7 @@ using std::cout;
 using boost::shared_ptr;
 using boost::optional;
 using boost::function;
+using namespace dcpomatic;
 
 /** @param film Associated film, or 0 */
 Job::Job (shared_ptr<const Film> film)
@@ -61,6 +62,12 @@ Job::Job (shared_ptr<const Film> film)
 }
 
 Job::~Job ()
+{
+       stop_thread ();
+}
+
+void
+Job::stop_thread ()
 {
        if (_thread) {
                _thread->interrupt ();
@@ -75,6 +82,7 @@ Job::~Job ()
        }
 
        delete _thread;
+       _thread = 0;
 }
 
 /** Start the job in a separate thread, returning immediately */
@@ -172,12 +180,6 @@ Job::run_wrapper ()
                set_progress (1);
                set_state (FINISHED_ERROR);
 
-       } catch (dcp::MissingAssetError& e) {
-
-               set_error (e.message(), e.path().string());
-               set_progress (1);
-               set_state (FINISHED_ERROR);
-
        } catch (dcp::DCPReadError& e) {
 
                set_error (e.message(), e.detail().get_value_or(""));
@@ -190,6 +192,12 @@ Job::run_wrapper ()
                set_progress (1);
                set_state (FINISHED_ERROR);
 
+       } catch (FileError& e) {
+
+               set_error (e.what(), e.what());
+               set_progress (1);
+               set_state (FINISHED_ERROR);
+
        } catch (std::exception& e) {
 
                set_error (