mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-30 17:01:15 +02:00
CVolume: avoid possible memleaks, add fb->blit() calls
also, check for global objects which might get created later
This commit is contained in:
@@ -6,13 +6,14 @@
|
|||||||
Homepage: http://dbox.cyberphoria.org/
|
Homepage: http://dbox.cyberphoria.org/
|
||||||
|
|
||||||
Copyright (C) 2011-2012 M. Liebmann (micha-bbg)
|
Copyright (C) 2011-2012 M. Liebmann (micha-bbg)
|
||||||
|
Copyright (C) 2012 Stefan Seyfried
|
||||||
|
|
||||||
License: GPL
|
License: GPL
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
This library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Library General Public
|
modify it under the terms of the GNU Library General Public
|
||||||
License as published by the Free Software Foundation; either
|
License as published by the Free Software Foundation; either
|
||||||
version 2 of the License, or (at your option) any later version.
|
version 3 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
This library is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
@@ -72,6 +73,7 @@ CVolume::~CVolume()
|
|||||||
{
|
{
|
||||||
if (g_volscale)
|
if (g_volscale)
|
||||||
delete g_volscale;
|
delete g_volscale;
|
||||||
|
g_volscale = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CVolume::Init()
|
void CVolume::Init()
|
||||||
@@ -107,6 +109,8 @@ void CVolume::Init()
|
|||||||
vbar_w += digit_w;
|
vbar_w += digit_w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (g_volscale)
|
||||||
|
delete g_volscale;
|
||||||
g_volscale = new CProgressBar(true, progress_w, progress_h, 50, 100, 80, true);
|
g_volscale = new CProgressBar(true, progress_w, progress_h, 50, 100, 80, true);
|
||||||
|
|
||||||
// mute icon
|
// mute icon
|
||||||
@@ -190,6 +194,8 @@ CVolume* CVolume::getInstance()
|
|||||||
|
|
||||||
void CVolume::AudioMute(int newValue, bool isEvent)
|
void CVolume::AudioMute(int newValue, bool isEvent)
|
||||||
{
|
{
|
||||||
|
if (!g_Zapit) /* don't die... */
|
||||||
|
return;
|
||||||
CNeutrinoApp* neutrino = CNeutrinoApp::getInstance();
|
CNeutrinoApp* neutrino = CNeutrinoApp::getInstance();
|
||||||
bool doInit = newValue != (int) neutrino->isMuted();
|
bool doInit = newValue != (int) neutrino->isMuted();
|
||||||
|
|
||||||
@@ -218,6 +224,8 @@ void CVolume::setvol(int vol)
|
|||||||
|
|
||||||
void CVolume::setVolume(const neutrino_msg_t key, const bool bDoPaint, bool nowait)
|
void CVolume::setVolume(const neutrino_msg_t key, const bool bDoPaint, bool nowait)
|
||||||
{
|
{
|
||||||
|
if (!g_RCInput) /* don't die... */
|
||||||
|
return;
|
||||||
neutrino_msg_t msg = key;
|
neutrino_msg_t msg = key;
|
||||||
int mode = CNeutrinoApp::getInstance()->getMode();
|
int mode = CNeutrinoApp::getInstance()->getMode();
|
||||||
|
|
||||||
@@ -250,6 +258,7 @@ void CVolume::setVolume(const neutrino_msg_t key, const bool bDoPaint, bool nowa
|
|||||||
|
|
||||||
g_volscale->reset();
|
g_volscale->reset();
|
||||||
refreshVolumebar(vol);
|
refreshVolumebar(vol);
|
||||||
|
frameBuffer->blit();
|
||||||
}
|
}
|
||||||
|
|
||||||
neutrino_msg_data_t data;
|
neutrino_msg_data_t data;
|
||||||
@@ -259,7 +268,7 @@ void CVolume::setVolume(const neutrino_msg_t key, const bool bDoPaint, bool nowa
|
|||||||
if (msg <= CRCInput::RC_MaxRC)
|
if (msg <= CRCInput::RC_MaxRC)
|
||||||
{
|
{
|
||||||
int sub_chan_keybind = 0;
|
int sub_chan_keybind = 0;
|
||||||
if (g_settings.mode_left_right_key_tv == SNeutrinoSettings::VOLUME && g_RemoteControl->subChannels.size() < 1)
|
if (g_settings.mode_left_right_key_tv == SNeutrinoSettings::VOLUME && g_RemoteControl && g_RemoteControl->subChannels.size() < 1)
|
||||||
sub_chan_keybind = 1;
|
sub_chan_keybind = 1;
|
||||||
|
|
||||||
if ((msg == CRCInput::RC_plus) || (sub_chan_keybind == 1 && (msg == CRCInput::RC_right))) {
|
if ((msg == CRCInput::RC_plus) || (sub_chan_keybind == 1 && (msg == CRCInput::RC_right))) {
|
||||||
@@ -339,6 +348,9 @@ void CVolume::setVolume(const neutrino_msg_t key, const bool bDoPaint, bool nowa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bDoPaint)
|
||||||
|
frameBuffer->blit();
|
||||||
|
|
||||||
CVFD::getInstance()->showVolume(g_settings.current_volume);
|
CVFD::getInstance()->showVolume(g_settings.current_volume);
|
||||||
if (msg != CRCInput::RC_timeout) {
|
if (msg != CRCInput::RC_timeout) {
|
||||||
g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd, true );
|
g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd, true );
|
||||||
@@ -349,6 +361,8 @@ void CVolume::setVolume(const neutrino_msg_t key, const bool bDoPaint, bool nowa
|
|||||||
frameBuffer->RestoreScreen(x, y, vbar_w+ShadowOffset, vbar_h+ShadowOffset, pixbuf);
|
frameBuffer->RestoreScreen(x, y, vbar_w+ShadowOffset, vbar_h+ShadowOffset, pixbuf);
|
||||||
delete [] pixbuf;
|
delete [] pixbuf;
|
||||||
}
|
}
|
||||||
|
if (bDoPaint)
|
||||||
|
frameBuffer->blit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CVolume::refreshVolumebar(int current_volume)
|
void CVolume::refreshVolumebar(int current_volume)
|
||||||
|
Reference in New Issue
Block a user