From bc608ebf9316dcd5baf73f1d907dde4abc611c72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 9 Apr 2009 11:26:19 +0000 Subject: [PATCH] * The volume now listens to parameter changes, and adapts itself automatically. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30061 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/bin/desklink/VolumeControl.cpp | 18 ++++++++++++++++++ src/bin/desklink/VolumeControl.h | 1 + 2 files changed, 19 insertions(+) diff --git a/src/bin/desklink/VolumeControl.cpp b/src/bin/desklink/VolumeControl.cpp index 6b507170ea..f4c3a97176 100644 --- a/src/bin/desklink/VolumeControl.cpp +++ b/src/bin/desklink/VolumeControl.cpp @@ -103,6 +103,17 @@ VolumeControl::AttachedToWindow() BSlider::AttachedToWindow(); SetEventMask(_IsReplicant() ? 0 : B_POINTER_EVENTS, B_NO_POINTER_HISTORY); + + BMediaRoster::CurrentRoster()->StartWatching(this, + fMixerControl->GainNode(), B_MEDIA_NEW_PARAMETER_VALUE); +} + + +void +VolumeControl::DetachedFromWindow() +{ + BMediaRoster::CurrentRoster()->StopWatching(this, fMixerControl->GainNode(), + B_MEDIA_NEW_PARAMETER_VALUE); } @@ -164,6 +175,13 @@ VolumeControl::MessageReceived(BMessage* msg) break; } + case B_MEDIA_NEW_PARAMETER_VALUE: + if (IsTracking()) + break; + + SetValue((int32)fMixerControl->Volume()); + break; + default: return BView::MessageReceived(msg); } diff --git a/src/bin/desklink/VolumeControl.h b/src/bin/desklink/VolumeControl.h index 423619f25f..27c7eed074 100644 --- a/src/bin/desklink/VolumeControl.h +++ b/src/bin/desklink/VolumeControl.h @@ -28,6 +28,7 @@ public: protected: virtual void AttachedToWindow(); + virtual void DetachedFromWindow(); virtual void MouseDown(BPoint where); virtual void MessageReceived(BMessage* message); virtual status_t Invoke(BMessage* message = NULL);