From 666d0b238f32c0383068d3d8f3936f46c4e67a14 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 23 May 2017 14:52:08 +0100 Subject: Try to stop crashes when tests are torn down. --- src/lib/dcp_encoder.cc | 8 ++++++++ src/lib/dcp_encoder.h | 1 + src/lib/encoder.cc | 6 +++--- src/lib/encoder.h | 5 +++++ 4 files changed, 17 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/lib/dcp_encoder.cc b/src/lib/dcp_encoder.cc index 522f02947..a37080405 100644 --- a/src/lib/dcp_encoder.cc +++ b/src/lib/dcp_encoder.cc @@ -68,6 +68,14 @@ DCPEncoder::DCPEncoder (shared_ptr film, weak_ptr job) } } +DCPEncoder::~DCPEncoder () +{ + /* We must stop receiving more video data before we die */ + _player_video_connection.release (); + _player_audio_connection.release (); + _player_subtitle_connection.release (); +} + void DCPEncoder::go () { diff --git a/src/lib/dcp_encoder.h b/src/lib/dcp_encoder.h index 387921972..d35b06184 100644 --- a/src/lib/dcp_encoder.h +++ b/src/lib/dcp_encoder.h @@ -36,6 +36,7 @@ class DCPEncoder : public Encoder { public: DCPEncoder (boost::shared_ptr film, boost::weak_ptr job); + ~DCPEncoder (); void go (); diff --git a/src/lib/encoder.cc b/src/lib/encoder.cc index 3af80efa5..16d992314 100644 --- a/src/lib/encoder.cc +++ b/src/lib/encoder.cc @@ -43,7 +43,7 @@ Encoder::Encoder (shared_ptr film, weak_ptr job) , _job (job) , _player (new Player (film, film->playlist ())) { - _player->Video.connect (bind (&Encoder::video, this, _1, _2)); - _player->Audio.connect (bind (&Encoder::audio, this, _1, _2)); - _player->Subtitle.connect (bind (&Encoder::subtitle, this, _1, _2)); + _player_video_connection = _player->Video.connect (bind (&Encoder::video, this, _1, _2)); + _player_audio_connection = _player->Audio.connect (bind (&Encoder::audio, this, _1, _2)); + _player_subtitle_connection = _player->Subtitle.connect (bind (&Encoder::subtitle, this, _1, _2)); } diff --git a/src/lib/encoder.h b/src/lib/encoder.h index 79ad0ab44..645401952 100644 --- a/src/lib/encoder.h +++ b/src/lib/encoder.h @@ -24,6 +24,7 @@ #include "types.h" #include "player_subtitles.h" #include +#include class Film; class Encoder; @@ -55,6 +56,10 @@ protected: boost::shared_ptr _film; boost::weak_ptr _job; boost::shared_ptr _player; + + boost::signals2::scoped_connection _player_video_connection; + boost::signals2::scoped_connection _player_audio_connection; + boost::signals2::scoped_connection _player_subtitle_connection; }; #endif -- cgit v1.2.3