Remove unused LOG_DEBUG_DECODE and re-use it to add some 3D shuffler logging.
[dcpomatic.git] / src / wx / swaroop_controls.cc
index e7232e6f4d8b75b0d231066c2ed3ff9cfb1d63a3..add9bf3e0ae5937f9bbdce005dae8f01212a7501 100644 (file)
@@ -54,6 +54,7 @@ SwaroopControls::SwaroopControls (wxWindow* parent, shared_ptr<FilmViewer> viewe
        , _previous_button (new Button(this, "Previous"))
        , _current_disable_timeline (false)
        , _current_disable_next (false)
+       , _timer (this)
 {
        _button_sizer->Add (_previous_button, 0, wxEXPAND);
        _button_sizer->Add (_play_button, 0, wxEXPAND);
@@ -112,10 +113,13 @@ SwaroopControls::SwaroopControls (wxWindow* parent, shared_ptr<FilmViewer> viewe
        _spl_view->Bind        (wxEVT_LIST_ITEM_SELECTED,   boost::bind(&SwaroopControls::spl_selection_changed, this));
        _spl_view->Bind        (wxEVT_LIST_ITEM_DESELECTED, boost::bind(&SwaroopControls::spl_selection_changed, this));
        _viewer->Finished.connect (boost::bind(&SwaroopControls::viewer_finished, this));
-       _viewer->PositionChanged.connect (boost::bind(&SwaroopControls::viewer_position_changed, this));
        _refresh_spl_view->Bind (wxEVT_BUTTON, boost::bind(&SwaroopControls::update_playlist_directory, this));
        _refresh_content_view->Bind (wxEVT_BUTTON, boost::bind(&ContentView::update, _content_view));
 
+       /* Write position every two minutes if we're playing */
+       Bind (wxEVT_TIMER, boost::bind(&SwaroopControls::write_position, this));
+       _timer.Start (2 * 60 * 1000, wxTIMER_CONTINUOUS);
+
        _content_view->update ();
        update_playlist_directory ();
 
@@ -153,10 +157,9 @@ SwaroopControls::check_restart ()
 }
 
 void
-SwaroopControls::viewer_position_changed ()
+SwaroopControls::write_position ()
 {
-       /* Write position every two minutes if we're playing */
-       if (!_selected_playlist || !_viewer->playing() || _viewer->position().get() % (2 * 60 * DCPTime::HZ)) {
+       if (!_selected_playlist || !_viewer->playing()) {
                return;
        }
 
@@ -201,6 +204,7 @@ SwaroopControls::deselect_playlist ()
                _selected_playlist = boost::none;
                _spl_view->SetItemState (selected, 0, wxLIST_STATE_SELECTED);
        }
+       ResetFilm (shared_ptr<Film>(new Film(optional<boost::filesystem::path>())));
 }
 
 void
@@ -488,7 +492,7 @@ SwaroopControls::select_playlist (int selected, int position)
                        }
                        if (dcp->needs_kdm()) {
                                /* We didn't get a KDM for this */
-                               error_dialog (this, "This playlist cannot be loaded as a KDM is missing.");
+                               error_dialog (this, "This playlist cannot be loaded as a KDM is missing or incorrect.");
                                deselect_playlist ();
                                return;
                        }
@@ -501,10 +505,12 @@ SwaroopControls::select_playlist (int selected, int position)
                                        ffmpeg->add_kdm (*kdm);
                                        ffmpeg->examine (_film, shared_ptr<Job>());
                                } catch (KDMError& e) {
-                                       error_dialog (this, "Could not load KDM.");
+                                       error_dialog (this, "This playlist cannot be loaded as a KDM is missing or incorrect.");
+                                       deselect_playlist ();
+                                       return;
                                }
                        } else {
-                               error_dialog (this, "This playlist cannot be loaded as a KDM is missing.");
+                               error_dialog (this, "This playlist cannot be loaded as a KDM is missing or incorrect.");
                                deselect_playlist ();
                                return;
                        }