Retry 35837 linux: grab device name before closing it
PcmClose frees the handle regardless of whether there's an error while shutting down, so grab the PcmName result first in case we want to use it in an error message. Original Review URL: http://codereview.chromium.org/538005 BUG=20006 Review URL: http://codereview.chromium.org/542002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35854 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
media/audio/linux
@ -756,10 +756,11 @@ snd_pcm_t* AlsaPcmOutputStream::OpenDevice(const std::string& device_name,
|
||||
}
|
||||
|
||||
bool AlsaPcmOutputStream::CloseDevice(snd_pcm_t* handle) {
|
||||
std::string name = wrapper_->PcmName(handle);
|
||||
int error = wrapper_->PcmClose(handle);
|
||||
if (error < 0) {
|
||||
LOG(ERROR) << "Cannot close audio device (" << wrapper_->PcmName(handle)
|
||||
<< "): " << wrapper_->StrError(error);
|
||||
LOG(ERROR) << "Error closing audio device (" << name << "): "
|
||||
<< wrapper_->StrError(error);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -227,7 +227,9 @@ TEST_F(AlsaPcmOutputStreamTest, LatencyFloor) {
|
||||
message_loop_.RunAllPending();
|
||||
|
||||
// Now close it and test that everything was released.
|
||||
EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)) .WillOnce(Return(0));
|
||||
EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)).WillOnce(Return(0));
|
||||
EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
|
||||
.WillOnce(Return(kTestDeviceName));
|
||||
EXPECT_CALL(mock_manager_, ReleaseStream(test_stream_.get()));
|
||||
test_stream_->Close();
|
||||
message_loop_.RunAllPending();
|
||||
@ -258,6 +260,8 @@ TEST_F(AlsaPcmOutputStreamTest, LatencyFloor) {
|
||||
// Now close it and test that everything was released.
|
||||
EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle))
|
||||
.WillOnce(Return(0));
|
||||
EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
|
||||
.WillOnce(Return(kTestDeviceName));
|
||||
EXPECT_CALL(mock_manager_, ReleaseStream(test_stream_.get()));
|
||||
test_stream_->Close();
|
||||
message_loop_.RunAllPending();
|
||||
@ -303,6 +307,8 @@ TEST_F(AlsaPcmOutputStreamTest, OpenClose) {
|
||||
// Now close it and test that everything was released.
|
||||
EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle))
|
||||
.WillOnce(Return(0));
|
||||
EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
|
||||
.WillOnce(Return(kTestDeviceName));
|
||||
EXPECT_CALL(mock_manager_, ReleaseStream(test_stream_.get()));
|
||||
test_stream_->Close();
|
||||
message_loop_.RunAllPending();
|
||||
@ -346,6 +352,8 @@ TEST_F(AlsaPcmOutputStreamTest, PcmSetParamsFailed) {
|
||||
.WillOnce(Return(kTestFailedErrno));
|
||||
EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle))
|
||||
.WillOnce(Return(0));
|
||||
EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
|
||||
.WillOnce(Return(kTestDeviceName));
|
||||
EXPECT_CALL(mock_alsa_wrapper_, StrError(kTestFailedErrno))
|
||||
.WillOnce(Return(kDummyMessage));
|
||||
|
||||
@ -414,6 +422,8 @@ TEST_F(AlsaPcmOutputStreamTest, StartStop) {
|
||||
EXPECT_CALL(mock_callback, OnClose(test_stream_.get()));
|
||||
EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle))
|
||||
.WillOnce(Return(0));
|
||||
EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
|
||||
.WillOnce(Return(kTestDeviceName));
|
||||
test_stream_->Close();
|
||||
message_loop_.RunAllPending();
|
||||
}
|
||||
|
Reference in New Issue
Block a user