Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(307)

Side by Side Diff: chromeos/audio/cras_audio_handler.cc

Issue 751773002: Reset the active audio node id once all of the devices are gone. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chromeos/audio/cras_audio_handler_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/audio/cras_audio_handler.h" 5 #include "chromeos/audio/cras_audio_handler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 else 824 else
825 output_devices_pq_.push(device); 825 output_devices_pq_.push(device);
826 } 826 }
827 827
828 // If audio nodes change is caused by unplugging some non-active audio 828 // If audio nodes change is caused by unplugging some non-active audio
829 // devices, the previously set active audio device will stay active. 829 // devices, the previously set active audio device will stay active.
830 // Otherwise, switch to a new active audio device according to their priority. 830 // Otherwise, switch to a new active audio device according to their priority.
831 if (input_devices_changed && 831 if (input_devices_changed &&
832 !NonActiveDeviceUnplugged(old_audio_devices_size, 832 !NonActiveDeviceUnplugged(old_audio_devices_size,
833 audio_devices_.size(), 833 audio_devices_.size(),
834 active_input_node_id_) && 834 active_input_node_id_)) {
835 !input_devices_pq_.empty()) 835 // Some devices like chromeboxes don't have the internal audio input. In
836 SwitchToDevice(input_devices_pq_.top(), true); 836 // that case the active input node id should be reset.
837 if (input_devices_pq_.empty()) {
838 active_input_node_id_ = 0;
839 NotifyActiveNodeChanged(true);
840 } else {
841 SwitchToDevice(input_devices_pq_.top(), true);
842 }
843 }
837 if (output_devices_changed && 844 if (output_devices_changed &&
838 !NonActiveDeviceUnplugged(old_audio_devices_size, 845 !NonActiveDeviceUnplugged(old_audio_devices_size,
839 audio_devices_.size(), 846 audio_devices_.size(),
840 active_output_node_id_) && 847 active_output_node_id_)) {
841 !output_devices_pq_.empty()) { 848 // This is really unlikely to happen because all ChromeOS devices have the
842 SwitchToDevice(output_devices_pq_.top(), true); 849 // internal audio output.
850 if (output_devices_pq_.empty()) {
851 active_output_node_id_ = 0;
852 NotifyActiveNodeChanged(false);
853 } else {
854 SwitchToDevice(output_devices_pq_.top(), true);
855 }
843 } 856 }
844 } 857 }
845 858
846 void CrasAudioHandler::HandleGetNodes(const chromeos::AudioNodeList& node_list, 859 void CrasAudioHandler::HandleGetNodes(const chromeos::AudioNodeList& node_list,
847 bool success) { 860 bool success) {
848 if (!success) { 861 if (!success) {
849 LOG_IF(ERROR, log_errors_) << "Failed to retrieve audio nodes data"; 862 LOG_IF(ERROR, log_errors_) << "Failed to retrieve audio nodes data";
850 return; 863 return;
851 } 864 }
852 865
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 active_output_node_id_ = 0; 923 active_output_node_id_ = 0;
911 chromeos::DBusThreadManager::Get() 924 chromeos::DBusThreadManager::Get()
912 ->GetCrasAudioClient() 925 ->GetCrasAudioClient()
913 ->RemoveActiveOutputNode(node_id); 926 ->RemoveActiveOutputNode(node_id);
914 if (notify) 927 if (notify)
915 NotifyActiveNodeChanged(false); 928 NotifyActiveNodeChanged(false);
916 } 929 }
917 } 930 }
918 931
919 } // namespace chromeos 932 } // namespace chromeos
OLDNEW
« no previous file with comments | « no previous file | chromeos/audio/cras_audio_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698