mirror of
https://projects.vdr-developer.org/git/vdr-plugin-skindesigner.git
synced 2023-10-19 15:58:31 +00:00
add detached option for viewelements
This commit is contained in:
@@ -393,20 +393,11 @@ void cDisplayChannelView::DrawSignal(void) {
|
||||
if (!ExecuteViewElement(veSignalQuality)) {
|
||||
return;
|
||||
}
|
||||
|
||||
time_t Now = time(NULL);
|
||||
if (Now != lastSignalDisplay) {
|
||||
#ifdef DOPROFILE
|
||||
cStopWatch watch("DrawSignal");
|
||||
#endif
|
||||
int SignalStrength = cDevice::ActualDevice()->SignalStrength();
|
||||
#ifdef DOPROFILE
|
||||
watch.Report("SignalStrength");
|
||||
#endif
|
||||
int SignalQuality = cDevice::ActualDevice()->SignalQuality();
|
||||
#ifdef DOPROFILE
|
||||
watch.Report("SignalQuality");
|
||||
watch.Stop("DrawSignal");
|
||||
#endif
|
||||
if (SignalStrength < 0) SignalStrength = 0;
|
||||
if (SignalQuality < 0) SignalQuality = 0;
|
||||
if ((SignalStrength == 0)&&(SignalQuality==0))
|
||||
@@ -445,6 +436,11 @@ void cDisplayChannelView::DrawDevices(bool initial) {
|
||||
if (!ExecuteViewElement(veDevices)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (DetachViewElement(veDevices)) {
|
||||
esyslog("skindesigner: start new thread for devices");
|
||||
}
|
||||
|
||||
map < string, string > stringTokens;
|
||||
map < string, int > intTokens;
|
||||
map < string, vector< map< string, string > > > deviceLoopTokens;
|
||||
|
@@ -206,12 +206,20 @@ void cView::ActivateScrolling(void) {
|
||||
}
|
||||
|
||||
bool cView::ExecuteViewElement(eViewElement ve) {
|
||||
if (!tmplView)
|
||||
return false;
|
||||
bool doExecute = tmplView->ExecuteView(ve);
|
||||
if (!doExecute)
|
||||
return false;
|
||||
return tmplView->GetNumPixmapsViewElement(ve);
|
||||
}
|
||||
|
||||
bool cView::DetachViewElement(eViewElement ve) {
|
||||
if (!tmplView)
|
||||
return false;
|
||||
return tmplView->DetachViewElement(ve);
|
||||
}
|
||||
|
||||
bool cView::ViewElementScrolls(eViewElement ve) {
|
||||
if (scrollingPix < 0)
|
||||
return false;
|
||||
|
@@ -43,6 +43,7 @@ protected:
|
||||
void ClearViewElement(eViewElement ve);
|
||||
void DestroyViewElement(eViewElement ve);
|
||||
bool ExecuteViewElement(eViewElement ve);
|
||||
bool DetachViewElement(eViewElement ve);
|
||||
bool ViewElementScrolls(eViewElement ve);
|
||||
void CreateViewPixmap(int num, cTemplatePixmap *pix, cRect *size = NULL);
|
||||
void CreateScrollingPixmap(int num, cTemplatePixmap *pix, cSize &drawportSize);
|
||||
|
@@ -6,6 +6,7 @@
|
||||
#include "viewhelpers.h"
|
||||
|
||||
cViewHelpers::cViewHelpers(void) {
|
||||
numDevices = 0;
|
||||
devicesInit = false;
|
||||
lastSecond = -1;
|
||||
lastMinute = -1;
|
||||
@@ -20,7 +21,7 @@ cViewHelpers::~cViewHelpers() {
|
||||
}
|
||||
|
||||
void cViewHelpers::InitDevices(void) {
|
||||
int numDevices = cDevice::NumDevices();
|
||||
numDevices = cDevice::NumDevices();
|
||||
lastSignalStrength = new int[numDevices];
|
||||
lastSignalQuality = new int[numDevices];
|
||||
recDevices = new bool[numDevices];
|
||||
@@ -33,10 +34,6 @@ void cViewHelpers::InitDevices(void) {
|
||||
}
|
||||
|
||||
bool cViewHelpers::SetDevices(bool initial, map<string,int> *intTokens, vector<map<string,string> > *devices) {
|
||||
#ifdef DOPROFILE
|
||||
cStopWatch watch("SetDevices");
|
||||
#endif
|
||||
int numDevices = cDevice::NumDevices();
|
||||
if (!initial) {
|
||||
//check if drawing is necessary
|
||||
bool changed = false;
|
||||
@@ -46,23 +43,13 @@ bool cViewHelpers::SetDevices(bool initial, map<string,int> *intTokens, vector<m
|
||||
continue;
|
||||
}
|
||||
int signalStrength = device->SignalStrength();
|
||||
#ifdef DOPROFILE
|
||||
watch.Report(*cString::sprintf("SignalStrength() device %d", i));
|
||||
#endif
|
||||
int signalQuality = device->SignalQuality();
|
||||
#ifdef DOPROFILE
|
||||
watch.Report(*cString::sprintf("SignalQuality() device %d", i));
|
||||
#endif
|
||||
|
||||
if ((signalStrength != lastSignalStrength[i]) || (signalQuality != lastSignalQuality[i])) {
|
||||
changed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!changed) {
|
||||
#ifdef DOPROFILE
|
||||
watch.Stop("SetDevices End");
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -109,13 +96,7 @@ bool cViewHelpers::SetDevices(bool initial, map<string,int> *intTokens, vector<m
|
||||
deviceVals.insert(pair< string, string >("devices[hascam]", "0"));
|
||||
}
|
||||
int signalStrength = device->SignalStrength();
|
||||
#ifdef DOPROFILE
|
||||
watch.Report(*cString::sprintf("SignalStrength() device %d", i));
|
||||
#endif
|
||||
int signalQuality = device->SignalQuality();
|
||||
#ifdef DOPROFILE
|
||||
watch.Report(*cString::sprintf("SignalQuality() device %d", i));
|
||||
#endif
|
||||
stringstream strCamNumber;
|
||||
strCamNumber << camNumber;
|
||||
deviceVals.insert(pair< string, string >("devices[cam]", strCamNumber.str()));
|
||||
@@ -157,9 +138,6 @@ bool cViewHelpers::SetDevices(bool initial, map<string,int> *intTokens, vector<m
|
||||
}
|
||||
|
||||
intTokens->insert(pair<string, int>("numdevices", actualNumDevices));
|
||||
#ifdef DOPROFILE
|
||||
watch.Stop("SetDevices End");
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -3,6 +3,7 @@
|
||||
|
||||
class cViewHelpers {
|
||||
private:
|
||||
int numDevices;
|
||||
bool devicesInit;
|
||||
int* lastSignalStrength;
|
||||
int* lastSignalQuality;
|
||||
|
Reference in New Issue
Block a user