diff options
author | Yonit Halperin <yhalperi@redhat.com> | 2011-09-18 21:42:18 +0300 |
---|---|---|
committer | Yonit Halperin <yhalperi@redhat.com> | 2011-11-02 11:30:27 +0200 |
commit | 87664af999a534090c37ffb53aec2a6cd970cdcc (patch) | |
tree | 3d9beb3214ee7f1fece060f8b3235ffd6e3defcd /client/playback_channel.cpp | |
parent | 0a5e9cbbcf9a3ebc6c7e3ccd3e7026998d2488d9 (diff) | |
download | spice-87664af999a534090c37ffb53aec2a6cd970cdcc.tar.gz spice-87664af999a534090c37ffb53aec2a6cd970cdcc.tar.xz spice-87664af999a534090c37ffb53aec2a6cd970cdcc.zip |
client: playback/record channels: implement on_disconnect
(cherry picked from commit d3ed9d5e9d52ddcadcb3c8c77dd827b50071d813 branch 0.8)
Diffstat (limited to 'client/playback_channel.cpp')
-rw-r--r-- | client/playback_channel.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/client/playback_channel.cpp b/client/playback_channel.cpp index 731b5202..d3445e59 100644 --- a/client/playback_channel.cpp +++ b/client/playback_channel.cpp @@ -172,19 +172,37 @@ PlaybackChannel::PlaybackChannel(RedClient& client, uint32_t id) set_capability(SPICE_PLAYBACK_CAP_CELT_0_5_1); } -PlaybackChannel::~PlaybackChannel(void) +void PlaybackChannel::clear() { - delete _wave_player; + if (_wave_player) { + _playing = false; + _wave_player->stop(); + delete _wave_player; + _wave_player = NULL; + } + _mode = SPICE_AUDIO_DATA_MODE_INVALID; if (_celt_decoder) { celt051_decoder_destroy(_celt_decoder); + _celt_decoder = NULL; } if (_celt_mode) { celt051_mode_destroy(_celt_mode); + _celt_mode = NULL; } } +void PlaybackChannel::on_disconnect() +{ + clear(); +} + +PlaybackChannel::~PlaybackChannel(void) +{ + clear(); +} + bool PlaybackChannel::abort(void) { return (!_wave_player || _wave_player->abort()) && RedChannel::abort(); |