DefaultMediaTheme: use DetachedFromWindow() for unwatching media events.

This commit is contained in:
Jessica Hamilton 2017-01-26 03:11:56 +13:00
parent aa3083e086
commit 614d494afc
1 changed files with 36 additions and 6 deletions

View File

@ -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 &parameter)
static void
start_watching_for_parameter_changes(BControl* control, BParameter &parameter)
{
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 &parameter)
static void
stop_watching_for_parameter_changes(BControl* control, BParameter &parameter)
{
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 &parameter)
: 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 &parameter)
: 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 &parameter)
: 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 -