#include "video_view.h"
+#include "lib/change_signaller.h"
#include "lib/config.h"
-#include "lib/film.h"
+#include "lib/film_property.h"
+#include "lib/player.h"
#include "lib/player_text.h"
#include "lib/signaller.h"
#include "lib/timer.h"
void player_change (std::vector<int> properties);
void idle_handler ();
void request_idle_display_next_frame ();
- void film_change (ChangeType, Film::Property);
- void recreate_butler ();
+ void film_change(ChangeType, FilmProperty);
+ void destroy_butler();
+ void create_butler();
+ void destroy_and_maybe_create_butler();
void config_changed (Config::Property);
void film_length_change ();
void ui_finished ();
void start_audio_stream_if_open ();
+#if (RTAUDIO_VERSION_MAJOR >= 6)
+ void rtaudio_error_callback(std::string const& error);
+ mutable boost::mutex _last_rtaudio_error_mutex;
+ std::string _last_rtaudio_error;
+ std::string last_rtaudio_error() const;
+#endif
+
dcpomatic::DCPTime uncorrected_time () const;
Frame average_latency () const;
bool quick_refresh ();
std::shared_ptr<Film> _film;
- std::shared_ptr<Player> _player;
+ boost::optional<Player> _player;
std::shared_ptr<VideoView> _video_view;
bool _coalesce_player_changes = false;