From: Carl Hetherington Date: Thu, 6 Dec 2012 21:40:56 +0000 (+0000) Subject: More logging tweaks; allow log level to be specified on the command line; bump libdcp... X-Git-Tag: v2.0.48~1486 X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=b4ec9ce787c63b27c96c404b1bd44eccd56ab16e More logging tweaks; allow log level to be specified on the command line; bump libdcp version. --- diff --git a/run/dvdomatic b/run/dvdomatic index 125fd9d27..70906a254 100755 --- a/run/dvdomatic +++ b/run/dvdomatic @@ -3,10 +3,10 @@ export LD_LIBRARY_PATH=build/src/lib:build/src/wx:build/src/asdcplib/src:$LD_LIBRARY_PATH if [ "$1" == "--debug" ]; then shift - gdb --args build/src/tools/dvdomatic "$1" + gdb --args build/src/tools/dvdomatic $* elif [ "$1" == "--valgrind" ]; then shift - valgrind --tool="memcheck" build/src/tools/dvdomatic "$1" + valgrind --tool="memcheck" build/src/tools/dvdomatic $* else - build/src/tools/dvdomatic "$1" + build/src/tools/dvdomatic $* fi diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index 49e03b1ce..9b89ffffc 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -279,7 +279,7 @@ FFmpegDecoder::pass () _film->log()->log ( String::compose ("Source video frame ready; source at %1, output at %2", source_pts_seconds, out_pts_seconds), - Log::DEBUG + Log::VERBOSE ); if (!_first_video) { diff --git a/src/lib/log.cc b/src/lib/log.cc index 650384bc7..06cff0495 100644 --- a/src/lib/log.cc +++ b/src/lib/log.cc @@ -76,6 +76,19 @@ Log::set_level (Level l) _level = l; } +void +Log::set_level (string l) +{ + if (l == "verbose") { + set_level (VERBOSE); + return; + } else if (l == "timing") { + set_level (TIMING); + return; + } + + set_level (STANDARD); +} /** @param file Filename to write log to */ FileLog::FileLog (string file) diff --git a/src/lib/log.h b/src/lib/log.h index c5241ebcf..3a2cfcbfd 100644 --- a/src/lib/log.h +++ b/src/lib/log.h @@ -37,16 +37,16 @@ public: virtual ~Log () {} enum Level { - SILENT = 0, + STANDARD = 0, VERBOSE = 1, - DEBUG = 2, - TIMING = 3 + TIMING = 2 }; void log (std::string m, Level l = STANDARD); void microsecond_log (std::string m, Level l = STANDARD); void set_level (Level l); + void set_level (std::string l); protected: /** mutex to protect the log */ diff --git a/src/tools/dvdomatic.cc b/src/tools/dvdomatic.cc index 7700a38ef..88c03d753 100644 --- a/src/tools/dvdomatic.cc +++ b/src/tools/dvdomatic.cc @@ -40,7 +40,9 @@ #include "lib/exceptions.h" #include "lib/version.h" #include "lib/ui_signaller.h" +#include "lib/log.h" +using std::cout; using std::string; using std::stringstream; using std::map; @@ -49,8 +51,9 @@ using boost::shared_ptr; static FilmEditor* film_editor = 0; static FilmViewer* film_viewer = 0; - static shared_ptr film; +static std::string log_level; +static std::string film_to_load; static void set_menu_sensitivity (); @@ -267,6 +270,7 @@ public: maybe_save_then_delete_film (); film.reset (new Film (d->get_path (), false)); + film->log()->set_level (log_level); #if BOOST_FILESYSTEM_VERSION == 3 film->set_name (boost::filesystem::path (d->get_path()).filename().generic_string()); #else @@ -286,6 +290,7 @@ public: if (r == wxID_OK) { maybe_save_then_delete_film (); film.reset (new Film (wx_to_std (c->GetPath ()))); + film->log()->set_level (log_level); set_film (); } @@ -356,10 +361,20 @@ public: } }; +static const wxCmdLineEntryDesc command_line_description[] = { + { wxCMD_LINE_OPTION, wxT("l"), wxT("log"), wxT("set log level (silent, verbose or timing)"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL }, + { wxCMD_LINE_PARAM, 0, 0, wxT("film to load"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_MULTIPLE | wxCMD_LINE_PARAM_OPTIONAL }, + { wxCMD_LINE_NONE } +}; + class App : public wxApp { bool OnInit () { + if (!wxApp::OnInit()) { + return false; + } + #ifdef DVDOMATIC_POSIX unsetenv ("UBUNTU_MENUPROXY"); #endif @@ -368,8 +383,9 @@ class App : public wxApp dvdomatic_setup (); - if (argc == 2 && boost::filesystem::is_directory (wx_to_std (argv[1]))) { - film.reset (new Film (wx_to_std (argv[1]))); + if (!film_to_load.empty() && boost::filesystem::is_directory (film_to_load)) { + film.reset (new Film (film_to_load)); + film->log()->set_level (log_level); } Frame* f = new Frame (_("DVD-o-matic")); @@ -383,6 +399,26 @@ class App : public wxApp return true; } + void OnInitCmdLine (wxCmdLineParser& parser) + { + parser.SetDesc (command_line_description); + parser.SetSwitchChars (wxT ("-")); + } + + bool OnCmdLineParsed (wxCmdLineParser& parser) + { + if (parser.GetParamCount() > 0) { + film_to_load = wx_to_std (parser.GetParam(0)); + } + + wxString log; + if (parser.Found(wxT("log"), &log)) { + log_level = wx_to_std (log); + } + + return true; + } + void idle (wxIdleEvent &) { ui_signaller->ui_idle (); diff --git a/wscript b/wscript index c255993d2..ee3072026 100644 --- a/wscript +++ b/wscript @@ -54,7 +54,7 @@ def configure(conf): conf.check_cfg(package = 'libswresample', args = '--cflags --libs', uselib_store = 'SWRESAMPLE', mandatory = False) conf.check_cfg(package = 'libpostproc', args = '--cflags --libs', uselib_store = 'POSTPROC', mandatory = True) conf.check_cfg(package = 'sndfile', args = '--cflags --libs', uselib_store = 'SNDFILE', mandatory = True) - conf.check_cfg(package = 'libdcp', atleast_version = '0.32', args = '--cflags --libs', uselib_store = 'DCP', mandatory = True) + conf.check_cfg(package = 'libdcp', atleast_version = '0.33', args = '--cflags --libs', uselib_store = 'DCP', mandatory = True) conf.check_cfg(package = 'glib-2.0', args = '--cflags --libs', uselib_store = 'GLIB', mandatory = True) conf.check_cfg(package = '', path = 'Magick++-config', args = '--cppflags --cxxflags --libs', uselib_store = 'MAGICK', mandatory = True) conf.check_cc(fragment = """