mirror of
https://projects.vdr-developer.org/git/vdr-plugin-skindesigner.git
synced 2023-10-19 17:58:31 +02:00
some more locks
This commit is contained in:
parent
65b61b4e2b
commit
10e37f6b8e
@ -224,6 +224,7 @@ void cDisplayMenuListView::Render(void) {
|
||||
}
|
||||
int current = -1;
|
||||
for (int i=0; i<itemCount; i++) {
|
||||
Lock();
|
||||
if (menuItems[i] && menuItems[i]->Dirty()) {
|
||||
menuItems[i]->Clear();
|
||||
menuItems[i]->SetNumber(i);
|
||||
@ -236,6 +237,7 @@ void cDisplayMenuListView::Render(void) {
|
||||
menuItems[i]->Stop();
|
||||
}
|
||||
}
|
||||
Unlock();
|
||||
}
|
||||
if (current > -1) {
|
||||
menuItems[current]->Start();
|
||||
|
@ -1191,6 +1191,8 @@ void cViewElement::Action(void) {
|
||||
DoFlush();
|
||||
if (scrolling) {
|
||||
DoSleep(scrollDelay);
|
||||
if (!Running())
|
||||
return;
|
||||
if (scrollOrientation == orHorizontal) {
|
||||
ScrollHorizontal(scrollingPix, scrollDelay, scrollSpeed, scrollMode);
|
||||
} else {
|
||||
|
@ -32,9 +32,14 @@ cViewHelpers::cViewHelpers(void) {
|
||||
|
||||
cViewHelpers::~cViewHelpers() {
|
||||
if (devicesInit) {
|
||||
mutexDevices.Lock();
|
||||
delete[] lastSignalStrength;
|
||||
lastSignalStrength = NULL;
|
||||
delete[] lastSignalQuality;
|
||||
lastSignalQuality = NULL;
|
||||
delete[] recDevices;
|
||||
recDevices = NULL;
|
||||
mutexDevices.Unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@ -309,11 +314,13 @@ void cViewHelpers::InitDevices(void) {
|
||||
lastSignalStrength = new int[numDevices];
|
||||
lastSignalQuality = new int[numDevices];
|
||||
recDevices = new bool[numDevices];
|
||||
mutexDevices.Lock();
|
||||
for (int i=0; i<numDevices; i++) {
|
||||
lastSignalStrength[i] = 0;
|
||||
lastSignalQuality[i] = 0;
|
||||
recDevices[i] = false;
|
||||
}
|
||||
mutexDevices.Unlock();
|
||||
devicesInit = true;
|
||||
}
|
||||
|
||||
@ -330,7 +337,15 @@ bool cViewHelpers::SetDevices(bool initial, bool light, intmap *intTokens, vecto
|
||||
}
|
||||
int signalStrength = device->SignalStrength();
|
||||
int signalQuality = device->SignalQuality();
|
||||
if ((signalStrength != lastSignalStrength[i]) || (signalQuality != lastSignalQuality[i])) {
|
||||
int lastSigStr = 0;
|
||||
int lastSigQual = 0;
|
||||
mutexDevices.Lock();
|
||||
if (lastSignalStrength && lastSignalQuality) {
|
||||
lastSigStr = lastSignalStrength[i];
|
||||
lastSigQual = lastSignalQuality[i];
|
||||
}
|
||||
mutexDevices.Unlock();
|
||||
if ((signalStrength != lastSigStr) || (signalQuality != lastSigQual)) {
|
||||
changed = true;
|
||||
break;
|
||||
}
|
||||
@ -356,7 +371,10 @@ bool cViewHelpers::SetDevices(bool initial, bool light, intmap *intTokens, vecto
|
||||
if (cRecordControl *RecordControl = cRecordControls::GetRecordControl(timer)) {
|
||||
const cDevice *recDevice = RecordControl->Device();
|
||||
if (recDevice) {
|
||||
recDevices[recDevice->DeviceNumber()] = true;
|
||||
mutexDevices.Lock();
|
||||
if (recDevices)
|
||||
recDevices[recDevice->DeviceNumber()] = true;
|
||||
mutexDevices.Unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -399,7 +417,12 @@ bool cViewHelpers::SetDevices(bool initial, bool light, intmap *intTokens, vecto
|
||||
deviceVals.insert(pair< string, string >("devices[signalquality]", strQuality.str()));
|
||||
|
||||
deviceVals.insert(pair< string, string >("devices[livetv]", i == deviceLiveTV ? "1" : "0"));
|
||||
deviceVals.insert(pair< string, string >("devices[recording]", recDevices[i] ? "1" : "0"));
|
||||
string isRecording = "0";
|
||||
mutexDevices.Lock();
|
||||
if (recDevices && recDevices[i])
|
||||
isRecording = "1";
|
||||
mutexDevices.Unlock();
|
||||
deviceVals.insert(pair< string, string >("devices[recording]", isRecording));
|
||||
|
||||
const cChannel *channel = device->GetCurrentlyTunedTransponder();
|
||||
const cSource *source = (channel) ? Sources.Get(channel->Source()) : NULL;
|
||||
|
@ -9,6 +9,7 @@ typedef pair<string,string> stringpair;
|
||||
|
||||
class cViewHelpers {
|
||||
private:
|
||||
cMutex mutexDevices;
|
||||
int numDevices;
|
||||
bool devicesInit;
|
||||
int* lastSignalStrength;
|
||||
|
Loading…
Reference in New Issue
Block a user