X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fswaroop_controls.cc;h=78419a08c3b8e0ef08ca0bf017b61ebf5e71c59f;hb=90c2cf5cd01d1a806885a6486e76864d619ac389;hp=2202dff2acb262b4b246a232878a0e8f34d530cd;hpb=4e558894d1f75f0d8aa64283e8b595a06c77869b;p=dcpomatic.git diff --git a/src/wx/swaroop_controls.cc b/src/wx/swaroop_controls.cc index 2202dff2a..78419a08c 100644 --- a/src/wx/swaroop_controls.cc +++ b/src/wx/swaroop_controls.cc @@ -118,13 +118,17 @@ SwaroopControls::SwaroopControls (wxWindow* parent, shared_ptr viewe _content_view->update (); update_playlist_directory (); + + _viewer->set_background_image (true); } void SwaroopControls::check_restart () { + cout << "check_restart called\n"; FILE* f = fopen_boost (Config::path("position"), "r"); if (!f) { + cout << "could not open position file (" << errno << ")\n"; return; } @@ -133,10 +137,12 @@ SwaroopControls::check_restart () int64_t time; fscanf (f, "%63s %d %ld", id, &index, &time); + cout << "Looking for playlist " << id << " to restart.\n"; + for (size_t i = 0; i < _playlists.size(); ++i) { if (_playlists[i].id() == id) { - _selected_playlist = i; - _selected_playlist_position = index; + cout << "Found playlist " << id << "\n"; + select_playlist (i, index); update_current_content (); _viewer->seek (DCPTime(time), false); _viewer->start (); @@ -160,6 +166,10 @@ SwaroopControls::viewer_position_changed () + " " + dcp::raw_convert(_viewer->position().get()); checked_fwrite (p.c_str(), p.length(), f, Config::path("position")); +#ifdef DCPOMATIC_LINUX + fflush (f); + fsync (fileno(f)); +#endif fclose (f); } } @@ -170,6 +180,7 @@ SwaroopControls::started () Controls::started (); _play_button->Enable (false); _pause_button->Enable (true); + _viewer->set_background_image (false); } void @@ -215,6 +226,7 @@ SwaroopControls::stop_clicked () _selected_playlist_position = 0; update_current_content (); } + _viewer->set_background_image (true); } bool @@ -262,6 +274,15 @@ SwaroopControls::log (wxString s) strftime (buffer, 64, "%c", t); wxString ts = std_to_wx(string(buffer)) + N_(": "); _log->SetValue(_log->GetValue() + ts + s + "\n"); + + optional log = Config::instance()->player_activity_log_file(); + if (!log) { + return; + } + + FILE* f = fopen_boost (*log, "a"); + fprintf (f, "%s%s\n", wx_to_std(ts).c_str(), wx_to_std(s).c_str()); + fclose (f); } void @@ -385,6 +406,14 @@ SwaroopControls::spl_selection_changed () return; } + select_playlist (selected, 0); +} + +void +SwaroopControls::select_playlist (int selected, int position) +{ + log (wxString::Format("load-playlist %s", std_to_wx(_playlists[selected].name()).data())); + wxProgressDialog dialog (_("DCP-o-matic"), "Loading playlist and KDMs"); BOOST_FOREACH (SPLEntry const & i, _playlists[selected].get()) { @@ -427,7 +456,7 @@ SwaroopControls::spl_selection_changed () } _selected_playlist = selected; - _selected_playlist_position = 0; + _selected_playlist_position = position; dialog.Pulse (); reset_film (); dialog.Pulse (); @@ -494,6 +523,8 @@ SwaroopControls::viewer_finished () _viewer->start (); } } else { + _selected_playlist_position = 0; + _viewer->set_background_image (true); ResetFilm (shared_ptr(new Film(optional()))); } }