diff --git a/src/kits/media/DefaultMediaTheme.cpp b/src/kits/media/DefaultMediaTheme.cpp index 20ca080389..fbb15aa2cf 100644 --- a/src/kits/media/DefaultMediaTheme.cpp +++ b/src/kits/media/DefaultMediaTheme.cpp @@ -112,6 +112,7 @@ class CheckBox : public BCheckBox { virtual ~CheckBox(); virtual void AttachedToWindow(); + virtual void DetachedFromWindow(); private: BDiscreteParameter &fParameter; }; @@ -123,6 +124,7 @@ class OptionPopUp : public BOptionPopUp { virtual ~OptionPopUp(); virtual void AttachedToWindow(); + virtual void DetachedFromWindow(); private: BDiscreteParameter &fParameter; }; @@ -134,6 +136,7 @@ class Slider : public BSlider { virtual ~Slider(); virtual void AttachedToWindow(); + virtual void DetachedFromWindow(); private: BContinuousParameter &fParameter; }; @@ -146,6 +149,7 @@ class ChannelSlider : public BChannelSlider { virtual ~ChannelSlider(); virtual void AttachedToWindow(); + virtual void DetachedFromWindow(); private: BContinuousParameter &fParameter; }; @@ -212,7 +216,8 @@ parameter_should_be_hidden(BParameter ¶meter) static void start_watching_for_parameter_changes(BControl* control, BParameter ¶meter) { - if (BMediaRoster* roster = BMediaRoster::CurrentRoster()) { + BMediaRoster* roster = BMediaRoster::CurrentRoster(); + if (roster != NULL) { roster->StartWatching(control, parameter.Web()->Node(), B_MEDIA_NEW_PARAMETER_VALUE); } @@ -222,7 +227,8 @@ start_watching_for_parameter_changes(BControl* control, BParameter ¶meter) static void stop_watching_for_parameter_changes(BControl* control, BParameter ¶meter) { - if (BMediaRoster* roster = BMediaRoster::CurrentRoster()) { + BMediaRoster* roster = BMediaRoster::CurrentRoster(); + if (roster != NULL) { roster->StopWatching(control, parameter.Web()->Node(), B_MEDIA_NEW_PARAMETER_VALUE); } @@ -630,7 +636,6 @@ CheckBox::CheckBox(BRect area, const char* name, const char* label, CheckBox::~CheckBox() { - stop_watching_for_parameter_changes(this, fParameter); } @@ -641,6 +646,13 @@ CheckBox::AttachedToWindow() } +void +CheckBox::DetachedFromWindow() +{ + stop_watching_for_parameter_changes(this, fParameter); +} + + OptionPopUp::OptionPopUp(BRect area, const char* name, const char* label, BDiscreteParameter ¶meter) : BOptionPopUp(area, name, label, NULL), @@ -651,7 +663,6 @@ OptionPopUp::OptionPopUp(BRect area, const char* name, const char* label, OptionPopUp::~OptionPopUp() { - stop_watching_for_parameter_changes(this, fParameter); } @@ -662,6 +673,13 @@ OptionPopUp::AttachedToWindow() } +void +OptionPopUp::DetachedFromWindow() +{ + stop_watching_for_parameter_changes(this, fParameter); +} + + Slider::Slider(BRect area, const char* name, const char* label, int32 minValue, int32 maxValue, BContinuousParameter ¶meter) : BSlider(area, name, label, NULL, minValue, maxValue), @@ -672,7 +690,6 @@ Slider::Slider(BRect area, const char* name, const char* label, int32 minValue, Slider::~Slider() { - stop_watching_for_parameter_changes(this, fParameter); } @@ -683,6 +700,13 @@ Slider::AttachedToWindow() } +void +Slider::DetachedFromWindow() +{ + stop_watching_for_parameter_changes(this, fParameter); +} + + ChannelSlider::ChannelSlider(BRect area, const char* name, const char* label, orientation orientation, int32 channels, BContinuousParameter ¶meter) : BChannelSlider(area, name, label, NULL, orientation, channels), @@ -693,7 +717,6 @@ ChannelSlider::ChannelSlider(BRect area, const char* name, const char* label, ChannelSlider::~ChannelSlider() { - stop_watching_for_parameter_changes(this, fParameter); } @@ -704,6 +727,13 @@ ChannelSlider::AttachedToWindow() } +void +ChannelSlider::DetachedFromWindow() +{ + stop_watching_for_parameter_changes(this, fParameter); +} + + // #pragma mark -