Drop JobManager on cli-exit for valgrind; use avcodec_free_frame rather than av_free.
authorCarl Hetherington <cth@carlh.net>
Sat, 9 Nov 2013 16:53:30 +0000 (16:53 +0000)
committerCarl Hetherington <cth@carlh.net>
Sat, 9 Nov 2013 16:53:30 +0000 (16:53 +0000)
src/lib/ffmpeg.cc
src/lib/job_manager.cc
src/lib/job_manager.h
src/lib/playlist.cc
src/tools/dcpomatic_cli.cc

index c97b79a719bb6b540971c324bc906bdffca644ab..596703a012818299ee601f5b5dcd9166a0a581e3 100644 (file)
@@ -58,7 +58,7 @@ FFmpeg::~FFmpeg ()
                }
        }
 
-       av_free (_frame);
+       avcodec_free_frame (&_frame);
        
        avformat_close_input (&_format_context);
 }
index a841fa60bd553698a873e7105d5f2086e8e4040b..2695d3d10b992dfcec35cc86914ff62e6db76090 100644 (file)
@@ -138,3 +138,10 @@ JobManager::instance ()
 
        return _instance;
 }
+
+void
+JobManager::drop ()
+{
+       delete _instance;
+       _instance = 0;
+}
index 0040568c66a5958bb497b86e83e92deba10655da..d0dac7d19369073eda9761b2290b4e272056c786 100644 (file)
@@ -43,6 +43,7 @@ public:
        boost::signals2::signal<void (bool)> ActiveJobsChanged;
 
        static JobManager* instance ();
+       static void drop ();
 
 private:
        /* This function is part of the test suite */
index c54b24c1c947e3bc78c134c74fc36f0e30468ee5..405786050a604773728028585945e59d257b256d 100644 (file)
@@ -360,6 +360,10 @@ Playlist::move_earlier (shared_ptr<Content> 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 ();
 }
index 1f3d47fe84d1cb1b129de4fe084d2bc365b5b047..90e11a9d140b2885060add087d4c4c6cf3fcb581 100644 (file)
@@ -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;
 }