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;
|
int current = -1;
|
||||||
for (int i=0; i<itemCount; i++) {
|
for (int i=0; i<itemCount; i++) {
|
||||||
|
Lock();
|
||||||
if (menuItems[i] && menuItems[i]->Dirty()) {
|
if (menuItems[i] && menuItems[i]->Dirty()) {
|
||||||
menuItems[i]->Clear();
|
menuItems[i]->Clear();
|
||||||
menuItems[i]->SetNumber(i);
|
menuItems[i]->SetNumber(i);
|
||||||
@ -236,6 +237,7 @@ void cDisplayMenuListView::Render(void) {
|
|||||||
menuItems[i]->Stop();
|
menuItems[i]->Stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Unlock();
|
||||||
}
|
}
|
||||||
if (current > -1) {
|
if (current > -1) {
|
||||||
menuItems[current]->Start();
|
menuItems[current]->Start();
|
||||||
|
@ -1191,6 +1191,8 @@ void cViewElement::Action(void) {
|
|||||||
DoFlush();
|
DoFlush();
|
||||||
if (scrolling) {
|
if (scrolling) {
|
||||||
DoSleep(scrollDelay);
|
DoSleep(scrollDelay);
|
||||||
|
if (!Running())
|
||||||
|
return;
|
||||||
if (scrollOrientation == orHorizontal) {
|
if (scrollOrientation == orHorizontal) {
|
||||||
ScrollHorizontal(scrollingPix, scrollDelay, scrollSpeed, scrollMode);
|
ScrollHorizontal(scrollingPix, scrollDelay, scrollSpeed, scrollMode);
|
||||||
} else {
|
} else {
|
||||||
|
@ -32,9 +32,14 @@ cViewHelpers::cViewHelpers(void) {
|
|||||||
|
|
||||||
cViewHelpers::~cViewHelpers() {
|
cViewHelpers::~cViewHelpers() {
|
||||||
if (devicesInit) {
|
if (devicesInit) {
|
||||||
|
mutexDevices.Lock();
|
||||||
delete[] lastSignalStrength;
|
delete[] lastSignalStrength;
|
||||||
|
lastSignalStrength = NULL;
|
||||||
delete[] lastSignalQuality;
|
delete[] lastSignalQuality;
|
||||||
|
lastSignalQuality = NULL;
|
||||||
delete[] recDevices;
|
delete[] recDevices;
|
||||||
|
recDevices = NULL;
|
||||||
|
mutexDevices.Unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,11 +314,13 @@ void cViewHelpers::InitDevices(void) {
|
|||||||
lastSignalStrength = new int[numDevices];
|
lastSignalStrength = new int[numDevices];
|
||||||
lastSignalQuality = new int[numDevices];
|
lastSignalQuality = new int[numDevices];
|
||||||
recDevices = new bool[numDevices];
|
recDevices = new bool[numDevices];
|
||||||
|
mutexDevices.Lock();
|
||||||
for (int i=0; i<numDevices; i++) {
|
for (int i=0; i<numDevices; i++) {
|
||||||
lastSignalStrength[i] = 0;
|
lastSignalStrength[i] = 0;
|
||||||
lastSignalQuality[i] = 0;
|
lastSignalQuality[i] = 0;
|
||||||
recDevices[i] = false;
|
recDevices[i] = false;
|
||||||
}
|
}
|
||||||
|
mutexDevices.Unlock();
|
||||||
devicesInit = true;
|
devicesInit = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -330,7 +337,15 @@ bool cViewHelpers::SetDevices(bool initial, bool light, intmap *intTokens, vecto
|
|||||||
}
|
}
|
||||||
int signalStrength = device->SignalStrength();
|
int signalStrength = device->SignalStrength();
|
||||||
int signalQuality = device->SignalQuality();
|
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;
|
changed = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -356,7 +371,10 @@ bool cViewHelpers::SetDevices(bool initial, bool light, intmap *intTokens, vecto
|
|||||||
if (cRecordControl *RecordControl = cRecordControls::GetRecordControl(timer)) {
|
if (cRecordControl *RecordControl = cRecordControls::GetRecordControl(timer)) {
|
||||||
const cDevice *recDevice = RecordControl->Device();
|
const cDevice *recDevice = RecordControl->Device();
|
||||||
if (recDevice) {
|
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[signalquality]", strQuality.str()));
|
||||||
|
|
||||||
deviceVals.insert(pair< string, string >("devices[livetv]", i == deviceLiveTV ? "1" : "0"));
|
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 cChannel *channel = device->GetCurrentlyTunedTransponder();
|
||||||
const cSource *source = (channel) ? Sources.Get(channel->Source()) : NULL;
|
const cSource *source = (channel) ? Sources.Get(channel->Source()) : NULL;
|
||||||
|
@ -9,6 +9,7 @@ typedef pair<string,string> stringpair;
|
|||||||
|
|
||||||
class cViewHelpers {
|
class cViewHelpers {
|
||||||
private:
|
private:
|
||||||
|
cMutex mutexDevices;
|
||||||
int numDevices;
|
int numDevices;
|
||||||
bool devicesInit;
|
bool devicesInit;
|
||||||
int* lastSignalStrength;
|
int* lastSignalStrength;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user