#include "lib/lock_file_checker.h"
#include "lib/ffmpeg_content.h"
#include "lib/dcpomatic_log.h"
+#include "lib/file_log.h"
#include <dcp/dcp.h>
#include <dcp/raw_convert.h>
#include <dcp/exceptions.h>
#endif
_config_changed_connection = Config::instance()->Changed.connect (boost::bind (&DOMFrame::config_changed, this, _1));
- update_from_config ();
+ update_from_config (Config::PLAYER_DEBUG_LOG);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_open, this), ID_file_open);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_add_ov, this), ID_file_add_ov);
_viewer->set_dcp_decode_reduction (Config::instance()->decode_reduction ());
_viewer->PlaybackPermitted.connect (bind(&DOMFrame::playback_permitted, this));
_viewer->Started.connect (bind(&DOMFrame::playback_started, this, _1));
- _viewer->Seeked.connect (bind(&DOMFrame::playback_seeked, this, _1));
_viewer->Stopped.connect (bind(&DOMFrame::playback_stopped, this, _1));
_info = new PlayerInformation (_overall_panel, _viewer);
setup_main_sizer (Config::instance()->player_mode());
void playback_started (DCPTime time)
{
- optional<boost::filesystem::path> log = Config::instance()->player_log_file();
- if (!log) {
- return;
- }
-
- FILE* f = fopen_boost(*log, "a");
-
/* XXX: this only logs the first piece of content; probably should be each piece? */
shared_ptr<DCPContent> dcp = dynamic_pointer_cast<DCPContent>(_film->content().front());
}
DCPOMATIC_ASSERT (playing_cpl);
- fprintf (
- f,
- "%s playback-started %s %s %s\n",
- dcp::LocalTime().as_string().c_str(),
- time.timecode(_film->video_frame_rate()).c_str(),
- dcp->directories().front().string().c_str(),
- playing_cpl->annotation_text().c_str()
+ _controls->log (
+ wxString::Format(
+ "playback-started %s %s %s",
+ time.timecode(_film->video_frame_rate()).c_str(),
+ dcp->directories().front().string().c_str(),
+ playing_cpl->annotation_text().c_str()
+ )
);
}
shared_ptr<FFmpegContent> ffmpeg = dynamic_pointer_cast<FFmpegContent>(_film->content().front());
if (ffmpeg) {
- fprintf (
- f,
- "%s playback-started %s %s\n",
- dcp::LocalTime().as_string().c_str(),
- time.timecode(_film->video_frame_rate()).c_str(),
- ffmpeg->path(0).string().c_str()
+ _controls->log (
+ wxString::Format(
+ "playback-started %s %s",
+ time.timecode(_film->video_frame_rate()).c_str(),
+ ffmpeg->path(0).string().c_str()
+ )
);
}
-
- fclose (f);
- }
-
- void playback_seeked (DCPTime time)
- {
- optional<boost::filesystem::path> log = Config::instance()->player_log_file();
- if (!log) {
- return;
- }
-
- FILE* f = fopen_boost(*log, "a");
- fprintf (f, "%s playback-seeked %s\n", dcp::LocalTime().as_string().c_str(), time.timecode(_film->video_frame_rate()).c_str());
- fclose (f);
}
void playback_stopped (DCPTime time)
}
#endif
- optional<boost::filesystem::path> log = Config::instance()->player_log_file();
- if (!log) {
- return;
- }
-
- FILE* f = fopen_boost(*log, "a");
- fprintf (f, "%s playback-stopped %s\n", dcp::LocalTime().as_string().c_str(), time.timecode(_film->video_frame_rate()).c_str());
- fclose (f);
+ _controls->log (wxString::Format("playback-stopped %s", time.timecode(_film->video_frame_rate()).c_str()));
}
void set_decode_reduction (optional<int> reduction)
);
}
- update_from_config ();
+ update_from_config (prop);
}
- void update_from_config ()
+ void update_from_config (Config::Property prop)
{
for (int i = 0; i < _history_items; ++i) {
delete _file_menu->Remove (ID_file_history + i);
}
_history_items = history.size ();
+
+ if (prop == Config::PLAYER_DEBUG_LOG) {
+ optional<boost::filesystem::path> p = Config::instance()->player_debug_log_file();
+ if (p) {
+ dcpomatic_log.reset (new FileLog(*p));
+ } else {
+ dcpomatic_log.reset (new NullLog());
+ }
+ dcpomatic_log->set_types (LogEntry::TYPE_GENERAL | LogEntry::TYPE_WARNING | LogEntry::TYPE_ERROR | LogEntry::TYPE_DEBUG_PLAYER);
+ }
}
void set_menu_sensitivity ()