0

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:
ajwong@chromium.org
2010-01-09 00:39:27 +00:00
parent c5dda11e87
commit 635437c053
2 changed files with 14 additions and 3 deletions

@ -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();
}