swaroop: add some debugging.
[dcpomatic.git] / src / wx / swaroop_controls.cc
index 2202dff2acb262b4b246a232878a0e8f34d530cd..8cd3b1d5bab913429e687f6d567ec10d5a920ba1 100644 (file)
@@ -118,13 +118,17 @@ SwaroopControls::SwaroopControls (wxWindow* parent, shared_ptr<FilmViewer> 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,9 @@ SwaroopControls::viewer_position_changed ()
                        + " " + dcp::raw_convert<string>(_viewer->position().get());
 
                checked_fwrite (p.c_str(), p.length(), f, Config::path("position"));
+#ifdef DCPOMATIC_LINUX
+               fsync (fileno(f));
+#endif
                fclose (f);
        }
 }
@@ -170,6 +179,7 @@ SwaroopControls::started ()
        Controls::started ();
        _play_button->Enable (false);
        _pause_button->Enable (true);
+       _viewer->set_background_image (false);
 }
 
 void
@@ -215,6 +225,7 @@ SwaroopControls::stop_clicked ()
                _selected_playlist_position = 0;
                update_current_content ();
        }
+       _viewer->set_background_image (true);
 }
 
 bool
@@ -262,6 +273,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<boost::filesystem::path> log = Config::instance()->player_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 +405,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 +455,7 @@ SwaroopControls::spl_selection_changed ()
        }
 
        _selected_playlist = selected;
-       _selected_playlist_position = 0;
+       _selected_playlist_position = position;
        dialog.Pulse ();
        reset_film ();
        dialog.Pulse ();
@@ -494,6 +522,8 @@ SwaroopControls::viewer_finished ()
                        _viewer->start ();
                }
        } else {
+               _selected_playlist_position = 0;
+               _viewer->set_background_image (true);
                ResetFilm (shared_ptr<Film>(new Film(optional<boost::filesystem::path>())));
        }
 }