CSignalBox: add missing member to set frontend

Remove double init of sig items; Will be done already by paintScale().
Ensure reset of last sig value on fe change.
Prevent possible segfault if fe is not defined.
This commit is contained in:
2016-09-28 21:12:32 +02:00
committed by svenhoefer
parent 59ac9e57e1
commit f68fd5ac19
2 changed files with 11 additions and 6 deletions

View File

@@ -192,6 +192,8 @@ void CSignalBar::initSBarName()
void CSignalBar::Refresh()
{
//get current value from frontend
sb_signal = 0;
if (sb_frontend)
sb_signal = sb_frontend->getSignalStrength();
//reinit items with current values
@@ -242,6 +244,8 @@ void CSignalBar::paint(bool do_save_bg)
void CSignalNoiseRatioBar::Refresh()
{
//get current value from frontend
sb_signal = 0;
if (sb_frontend)
sb_signal = sb_frontend->getSignalNoiseRatio();
//reinit items with current values
@@ -338,10 +342,8 @@ void CSignalBox::paintScale()
void CSignalBox::paint(bool do_save_bg)
{
//paint frame and body
if (!is_painted){
initSignalItems();
if (!is_painted)
paintForm(do_save_bg);
}
//paint current signal value
paintScale();

View File

@@ -116,7 +116,7 @@ class CSignalBar : public CComponentsForm, public CCTextScreen
CSignalBar(const int& xpos, const int& ypos, const int& w, const int& h, CFrontend *frontend_ref, const std::string& sb_name = "SIG", CComponentsForm *parent = NULL);
///assigns the current used frontend, simplified a tuner object, see frontend_c.h
virtual void setFrontEnd(CFrontend *frontend_ref){sb_frontend = frontend_ref;};
virtual void setFrontEnd(CFrontend *frontend_ref){if (sb_frontend != frontend_ref) {sb_lastsig = 0; sb_frontend = frontend_ref;}}
///assigns font for caption
virtual void setTextFont(Font* font_text){sb_font = font_text;};
///sets the caption color, see also property 'sb_caption_color'
@@ -298,6 +298,9 @@ class CSignalBox : public CComponentsForm, public CCTextScreen
///returns the signal noise ratio object, type = CSignalNoiseRatioBar*
CSignalNoiseRatioBar* getLabelObject(){return snrbar;};
///assigns the current used frontend, simplified a tuner object, see frontend_c.h
void setFrontEnd(CFrontend *frontend_ref){sbx_frontend = frontend_ref;}
///sets the caption color of signalbars, see also property 'sbx_caption_color'
void setTextColor(const fb_pixel_t& caption_color){ sbx_caption_color = caption_color;};
///get caption color of signalbars, see also property 'sbx_caption_color'