| Index: chromeos/dbus/cras_audio_client.cc
|
| diff --git a/chromeos/dbus/cras_audio_client.cc b/chromeos/dbus/cras_audio_client.cc
|
| index acb4bf7f0ff44ae3c73c9a1d259eece4ceb56352..b5d74f153425f30a08ec62cc022972664327d37e 100644
|
| --- a/chromeos/dbus/cras_audio_client.cc
|
| +++ b/chromeos/dbus/cras_audio_client.cc
|
| @@ -245,6 +245,14 @@ class CrasAudioClientImpl : public CrasAudioClient {
|
| weak_ptr_factory_.GetWeakPtr()),
|
| base::Bind(&CrasAudioClientImpl::SignalConnected,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| +
|
| + //
|
| + cras_proxy_->ConnectToSignal(
|
| + cras::kCrasControlInterface, "OutputNodeVolumeChanged",
|
| + base::Bind(&CrasAudioClientImpl::OutputNodeVolumeChangedReceived,
|
| + weak_ptr_factory_.GetWeakPtr()),
|
| + base::Bind(&CrasAudioClientImpl::SignalConnected,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| private:
|
| @@ -309,6 +317,21 @@ class CrasAudioClientImpl : public CrasAudioClient {
|
| FOR_EACH_OBSERVER(Observer, observers_, ActiveInputNodeChanged(node_id));
|
| }
|
|
|
| + void OutputNodeVolumeChangedReceived(dbus::Signal* signal) {
|
| + dbus::MessageReader reader(signal);
|
| + uint64_t node_id;
|
| + int volume;
|
| +
|
| + if (!reader.PopUint64(&node_id)) {
|
| + LOG(ERROR) << "Error eading signal from cras:" << signal->ToString();
|
| + }
|
| + if (!reader.PopInt32(&volume)) {
|
| + LOG(ERROR) << "Error eading signal from cras:" << signal->ToString();
|
| + }
|
| + FOR_EACH_OBSERVER(Observer, observers_,
|
| + OutputNodeVolumeChanged(node_id, volume));
|
| + }
|
| +
|
| void OnGetVolumeState(const GetVolumeStateCallback& callback,
|
| dbus::Response* response) {
|
| bool success = true;
|
|
|