summaryrefslogtreecommitdiffstats
path: root/media/audio/linux/alsa_input.cc
diff options
context:
space:
mode:
Diffstat (limited to 'media/audio/linux/alsa_input.cc')
-rw-r--r--media/audio/linux/alsa_input.cc30
1 files changed, 15 insertions, 15 deletions
diff --git a/media/audio/linux/alsa_input.cc b/media/audio/linux/alsa_input.cc
index 101c198..994c065 100644
--- a/media/audio/linux/alsa_input.cc
+++ b/media/audio/linux/alsa_input.cc
@@ -247,25 +247,25 @@ void AlsaPcmInputStream::Stop() {
}
void AlsaPcmInputStream::Close() {
- scoped_ptr<AlsaPcmInputStream> self_deleter(this);
+ if (device_handle_) {
+ weak_factory_.InvalidateWeakPtrs(); // Cancel the next scheduled read.
+ int error = alsa_util::CloseDevice(wrapper_, device_handle_);
+ if (error < 0)
+ HandleError("PcmClose", error);
- // Check in case we were already closed or not initialized yet.
- if (!device_handle_)
- return;
+ if (mixer_handle_)
+ alsa_util::CloseMixer(wrapper_, mixer_handle_, device_name_);
- weak_factory_.InvalidateWeakPtrs(); // Cancel the next scheduled read.
- int error = alsa_util::CloseDevice(wrapper_, device_handle_);
- if (error < 0)
- HandleError("PcmClose", error);
-
- if (mixer_handle_)
- alsa_util::CloseMixer(wrapper_, mixer_handle_, device_name_);
+ audio_packet_.reset();
+ device_handle_ = NULL;
+ mixer_handle_ = NULL;
+ mixer_element_handle_ = NULL;
- audio_packet_.reset();
- device_handle_ = NULL;
+ if (callback_)
+ callback_->OnClose(this);
+ }
- if (callback_)
- callback_->OnClose(this);
+ audio_manager_->ReleaseInputStream(this);
}
double AlsaPcmInputStream::GetMaxVolume() {