From 2b69ea346a5c8f550c3be474db9734dd754eb1a0 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 9 Nov 2013 16:53:30 +0000 Subject: [PATCH] Drop JobManager on cli-exit for valgrind; use avcodec_free_frame rather than av_free. --- src/lib/ffmpeg.cc | 2 +- src/lib/job_manager.cc | 7 +++++++ src/lib/job_manager.h | 1 + src/lib/playlist.cc | 4 ++++ src/tools/dcpomatic_cli.cc | 5 +++++ 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/lib/ffmpeg.cc b/src/lib/ffmpeg.cc index c97b79a71..596703a01 100644 --- a/src/lib/ffmpeg.cc +++ b/src/lib/ffmpeg.cc @@ -58,7 +58,7 @@ FFmpeg::~FFmpeg () } } - av_free (_frame); + avcodec_free_frame (&_frame); avformat_close_input (&_format_context); } diff --git a/src/lib/job_manager.cc b/src/lib/job_manager.cc index a841fa60b..2695d3d10 100644 --- a/src/lib/job_manager.cc +++ b/src/lib/job_manager.cc @@ -138,3 +138,10 @@ JobManager::instance () return _instance; } + +void +JobManager::drop () +{ + delete _instance; + _instance = 0; +} diff --git a/src/lib/job_manager.h b/src/lib/job_manager.h index 0040568c6..d0dac7d19 100644 --- a/src/lib/job_manager.h +++ b/src/lib/job_manager.h @@ -43,6 +43,7 @@ public: boost::signals2::signal ActiveJobsChanged; static JobManager* instance (); + static void drop (); private: /* This function is part of the test suite */ diff --git a/src/lib/playlist.cc b/src/lib/playlist.cc index c54b24c1c..405786050 100644 --- a/src/lib/playlist.cc +++ b/src/lib/playlist.cc @@ -360,6 +360,10 @@ Playlist::move_earlier (shared_ptr c) (*previous)->set_position (p + c->length_after_trim ()); c->set_position (p); sort (_content.begin(), _content.end(), ContentSorter ()); + + for (i = _content.begin(); i != _content.end(); ++i) { + cout << (*i)->position() << " " << (*i)->path() << "\n"; + } Changed (); } diff --git a/src/tools/dcpomatic_cli.cc b/src/tools/dcpomatic_cli.cc index 1f3d47fe8..90e11a9d1 100644 --- a/src/tools/dcpomatic_cli.cc +++ b/src/tools/dcpomatic_cli.cc @@ -201,6 +201,11 @@ main (int argc, char* argv[]) } } + /* This is just to stop valgrind reporting leaks due to JobManager + indirectly holding onto codecs. + */ + JobManager::drop (); + return error ? EXIT_FAILURE : EXIT_SUCCESS; } -- 2.30.2