Cleanup: move variable assignment that happens in every branch.
[dcpomatic.git] / src / wx / text_panel.cc
index 630ca6944e3da2ced3b33b502cd0dd96427331c6..2fdcbb51f5d03733abdbce3d9950d5c1ad089acd 100644 (file)
@@ -809,13 +809,16 @@ TextPanel::try_to_load_analysis ()
        }
 
        _loading_analysis = true;
+       ScopeGuard sg = [this]() {
+               _loading_analysis = false;
+               setup_sensitivity();
+       };
+
        setup_sensitivity ();
        _analysis.reset ();
 
        auto content = _analysis_content.lock ();
        if (!content) {
-               _loading_analysis = false;
-               setup_sensitivity ();
                return;
        }
 
@@ -823,7 +826,7 @@ TextPanel::try_to_load_analysis ()
 
        if (!boost::filesystem::exists(path)) {
                for (auto i: JobManager::instance()->get()) {
-                       if (dynamic_pointer_cast<AnalyseSubtitlesJob>(i)) {
+                       if (dynamic_pointer_cast<AnalyseSubtitlesJob>(i) && !i->finished()) {
                                i->cancel ();
                        }
                }
@@ -842,11 +845,9 @@ TextPanel::try_to_load_analysis ()
                        _parent->film(), content, _analysis_finished_connection, bind(&TextPanel::analysis_finished, this)
                        );
                return;
-        }
+       }
 
        update_outline_subtitles_in_viewer ();
-       _loading_analysis = false;
-       setup_sensitivity ();
 }
 
 
@@ -885,9 +886,10 @@ TextPanel::clear_outline_subtitles ()
 void
 TextPanel::analysis_finished ()
 {
+       _loading_analysis = false;
+
        auto content = _analysis_content.lock ();
        if (!content) {
-               _loading_analysis = false;
                setup_sensitivity ();
                return;
        }
@@ -898,12 +900,10 @@ TextPanel::analysis_finished ()
                */
                error_dialog (_parent->window(), _("Could not analyse subtitles."));
                clear_outline_subtitles ();
-               _loading_analysis = false;
                setup_sensitivity ();
                return;
        }
 
-       _loading_analysis = false;
        try_to_load_analysis ();
 }