summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-05-02 18:04:01 +0100
committerCarl Hetherington <cth@carlh.net>2014-05-02 18:04:01 +0100
commit528c48e4e9d38b4fe267d0a975b6bf32d969c211 (patch)
tree63b746b19b0046e2cf678e493aa40106d1441710 /src
parentfde38b664c98205dd4fe3721b125469d5dd2ecbe (diff)
Revert "Hack around crash on exist of tests due to race between ~FFmpeg and __cxa_finalize."
This reverts commit fde38b664c98205dd4fe3721b125469d5dd2ecbe.
Diffstat (limited to 'src')
-rw-r--r--src/lib/ffmpeg.cc18
-rw-r--r--src/lib/ffmpeg.h2
2 files changed, 5 insertions, 15 deletions
diff --git a/src/lib/ffmpeg.cc b/src/lib/ffmpeg.cc
index b78a0bbf6..a98aa9828 100644
--- a/src/lib/ffmpeg.cc
+++ b/src/lib/ffmpeg.cc
@@ -35,13 +35,7 @@ using std::stringstream;
using boost::shared_ptr;
using boost::lexical_cast;
-/* This should not really be a pointer, but I find that __cxa_finalize tries
- * to destroy the mutex while a call to ~FFmpeg is in progress; this crashes
- * with a failure of assert (!posix::pthread_mutex_destroy(&m));
- *
- * The hacky work-around is never to destroy the mutex...
- */
-boost::mutex* FFmpeg::_mutex;
+boost::mutex FFmpeg::_mutex;
FFmpeg::FFmpeg (boost::shared_ptr<const FFmpegContent> c)
: _ffmpeg_content (c)
@@ -52,10 +46,6 @@ FFmpeg::FFmpeg (boost::shared_ptr<const FFmpegContent> c)
, _frame (0)
, _video_stream (-1)
{
- if (!_mutex) {
- _mutex = new boost::mutex ();
- }
-
setup_general ();
setup_video ();
setup_audio ();
@@ -63,7 +53,7 @@ FFmpeg::FFmpeg (boost::shared_ptr<const FFmpegContent> c)
FFmpeg::~FFmpeg ()
{
- boost::mutex::scoped_lock lm (*_mutex);
+ boost::mutex::scoped_lock lm (_mutex);
for (uint32_t i = 0; i < _format_context->nb_streams; ++i) {
AVCodecContext* context = _format_context->streams[i]->codec;
@@ -155,7 +145,7 @@ FFmpeg::setup_general ()
void
FFmpeg::setup_video ()
{
- boost::mutex::scoped_lock lm (*_mutex);
+ boost::mutex::scoped_lock lm (_mutex);
assert (_video_stream >= 0);
AVCodecContext* context = _format_context->streams[_video_stream]->codec;
@@ -173,7 +163,7 @@ FFmpeg::setup_video ()
void
FFmpeg::setup_audio ()
{
- boost::mutex::scoped_lock lm (*_mutex);
+ boost::mutex::scoped_lock lm (_mutex);
for (uint32_t i = 0; i < _format_context->nb_streams; ++i) {
AVCodecContext* context = _format_context->streams[i]->codec;
diff --git a/src/lib/ffmpeg.h b/src/lib/ffmpeg.h
index 04be4873a..760918437 100644
--- a/src/lib/ffmpeg.h
+++ b/src/lib/ffmpeg.h
@@ -75,7 +75,7 @@ protected:
a mutex around calls to avcodec_open* and avcodec_close... and here
it is.
*/
- static boost::mutex* _mutex;
+ static boost::mutex _mutex;
private:
void setup_general ();