diff options
author | Yonit Halperin <yhalperi@redhat.com> | 2011-09-18 21:42:18 +0300 |
---|---|---|
committer | Yonit Halperin <yhalperi@redhat.com> | 2011-09-26 12:17:59 +0300 |
commit | d3ed9d5e9d52ddcadcb3c8c77dd827b50071d813 (patch) | |
tree | 3247f154dfe59f8a96960476b51766f25434b6bc /client/record_channel.cpp | |
parent | f91d202eb3bf631cf5e70277d1aabffec7da9393 (diff) | |
download | spice-d3ed9d5e9d52ddcadcb3c8c77dd827b50071d813.tar.gz spice-d3ed9d5e9d52ddcadcb3c8c77dd827b50071d813.tar.xz spice-d3ed9d5e9d52ddcadcb3c8c77dd827b50071d813.zip |
client: playback/record channels: implement on_disconnect
Diffstat (limited to 'client/record_channel.cpp')
-rw-r--r-- | client/record_channel.cpp | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/client/record_channel.cpp b/client/record_channel.cpp index 084866cc..a6558663 100644 --- a/client/record_channel.cpp +++ b/client/record_channel.cpp @@ -98,14 +98,7 @@ RecordChannel::~RecordChannel(void) _messages.pop_front(); delete mes; } - delete _wave_recorder; - - if (_celt_encoder) { - celt051_encoder_destroy(_celt_encoder); - } - if (_celt_mode) { - celt051_mode_destroy(_celt_mode); - } + clear(); } bool RecordChannel::abort(void) @@ -125,6 +118,11 @@ void RecordChannel::on_connect() post_message(message); } +void RecordChannel::on_disconnect() +{ + clear(); +} + void RecordChannel::send_start_mark() { Message* message = new Message(SPICE_MSGC_RECORD_START_MARK); @@ -174,6 +172,23 @@ void RecordChannel::handle_start(RedPeer::InMessage* message) _wave_recorder->start(); } +void RecordChannel::clear() +{ + if (_wave_recorder) { + _wave_recorder->stop(); + delete _wave_recorder; + _wave_recorder = NULL; + } + if (_celt_encoder) { + celt051_encoder_destroy(_celt_encoder); + _celt_encoder = NULL; + } + if (_celt_mode) { + celt051_mode_destroy(_celt_mode); + _celt_mode = NULL; + } +} + void RecordChannel::handle_stop(RedPeer::InMessage* message) { RecordHandler* handler = static_cast<RecordHandler*>(get_message_handler()); @@ -183,13 +198,7 @@ void RecordChannel::handle_stop(RedPeer::InMessage* message) return; } ASSERT(_celt_mode && _celt_encoder); - _wave_recorder->stop(); - celt051_encoder_destroy(_celt_encoder); - _celt_encoder = NULL; - celt051_mode_destroy(_celt_mode); - _celt_mode = NULL; - delete _wave_recorder; - _wave_recorder = NULL; + clear(); } RecordSamplesMessage* RecordChannel::get_message() |