mirror of
https://projects.vdr-developer.org/git/vdr-plugin-skindesigner.git
synced 2023-10-19 17:58:31 +02:00
fixed blinking deadlock again#
This commit is contained in:
parent
cdc1c10204
commit
21ef5263ef
@ -340,10 +340,10 @@ void cAnimation::Blink(void) {
|
|||||||
bool blinkOn = false;
|
bool blinkOn = false;
|
||||||
while (Running()) {
|
while (Running()) {
|
||||||
Sleep(freq);
|
Sleep(freq);
|
||||||
if (Running()) {
|
if (Running())
|
||||||
blinkable->DoBlink(blinkFunc, blinkOn);
|
blinkable->DoBlink(blinkFunc, blinkOn);
|
||||||
|
if (Running())
|
||||||
blinkable->Flush();
|
blinkable->Flush();
|
||||||
}
|
|
||||||
blinkOn = !blinkOn;
|
blinkOn = !blinkOn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,8 +42,8 @@ public:
|
|||||||
bool ActiveTab(void) { return activeTab; };
|
bool ActiveTab(void) { return activeTab; };
|
||||||
virtual int GetWidth(void) { return 0; };
|
virtual int GetWidth(void) { return 0; };
|
||||||
virtual void Cache(void) {};
|
virtual void Cache(void) {};
|
||||||
virtual void StopBlinkers(void) {};
|
|
||||||
virtual void Close(void) {};
|
virtual void Close(void) {};
|
||||||
|
virtual void StopBlinkers(void) {};
|
||||||
virtual void Clear(void) {};
|
virtual void Clear(void) {};
|
||||||
virtual void Hide(void) {};
|
virtual void Hide(void) {};
|
||||||
virtual void Show(void) {};
|
virtual void Show(void) {};
|
||||||
|
@ -64,8 +64,6 @@ void cSdOsd::DestroyPixmap(cPixmap *pix) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void cSdOsd::Flush(void) {
|
void cSdOsd::Flush(void) {
|
||||||
Lock();
|
|
||||||
if (osd && !flushLocked)
|
if (osd && !flushLocked)
|
||||||
osd->Flush();
|
osd->Flush();
|
||||||
Unlock();
|
|
||||||
}
|
}
|
||||||
|
@ -215,11 +215,6 @@ void cView::Render(int ve, bool force) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void cView::Close(void) {
|
void cView::Close(void) {
|
||||||
for (int i=0; i < numViewElements; i++) {
|
|
||||||
if (!viewElements[i])
|
|
||||||
continue;
|
|
||||||
viewElements[i]->StopBlinking();
|
|
||||||
}
|
|
||||||
delete fader;
|
delete fader;
|
||||||
fader = NULL;
|
fader = NULL;
|
||||||
delete shifter;
|
delete shifter;
|
||||||
|
@ -268,6 +268,7 @@ bool cViewElement::Execute(void) {
|
|||||||
void cViewElement::Clear(void) {
|
void cViewElement::Clear(void) {
|
||||||
tokenContainer->Clear();
|
tokenContainer->Clear();
|
||||||
for (cAreaNode *node = areaNodes.First(); node; node = areaNodes.Next(node)) {
|
for (cAreaNode *node = areaNodes.First(); node; node = areaNodes.Next(node)) {
|
||||||
|
node->StopBlinkers();
|
||||||
sdOsd->Lock();
|
sdOsd->Lock();
|
||||||
node->Clear();
|
node->Clear();
|
||||||
sdOsd->Unlock();
|
sdOsd->Unlock();
|
||||||
@ -306,6 +307,7 @@ void cViewElement::Close(void) {
|
|||||||
delete detacher;
|
delete detacher;
|
||||||
detacher = NULL;
|
detacher = NULL;
|
||||||
for (cAreaNode *node = areaNodes.First(); node; node = areaNodes.Next(node)) {
|
for (cAreaNode *node = areaNodes.First(); node; node = areaNodes.Next(node)) {
|
||||||
|
node->StopBlinkers();
|
||||||
sdOsd->Lock();
|
sdOsd->Lock();
|
||||||
node->Close();
|
node->Close();
|
||||||
sdOsd->Unlock();
|
sdOsd->Unlock();
|
||||||
|
@ -136,6 +136,7 @@ void cViewGrid::ClearGrids(void) {
|
|||||||
for (int i = 0; i < gridsize; i++) {
|
for (int i = 0; i < gridsize; i++) {
|
||||||
if (!grid[i])
|
if (!grid[i])
|
||||||
continue;
|
continue;
|
||||||
|
grid[i]->StopBlinking();
|
||||||
grid[i]->Close();
|
grid[i]->Close();
|
||||||
delete grid[i];
|
delete grid[i];
|
||||||
grid[i] = NULL;
|
grid[i] = NULL;
|
||||||
|
@ -190,7 +190,10 @@ void cViewList::Clear(void) {
|
|||||||
if (!listElements)
|
if (!listElements)
|
||||||
return;
|
return;
|
||||||
for (int i = 0; i < numElements; i++) {
|
for (int i = 0; i < numElements; i++) {
|
||||||
|
listElements[i]->StopBlinking();
|
||||||
listElements[i]->StopScrolling();
|
listElements[i]->StopScrolling();
|
||||||
|
}
|
||||||
|
for (int i = 0; i < numElements; i++) {
|
||||||
listElements[i]->Clear();
|
listElements[i]->Clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -199,7 +202,10 @@ void cViewList::Close(void) {
|
|||||||
if (!listElements)
|
if (!listElements)
|
||||||
return;
|
return;
|
||||||
for (int i = 0; i < numElements; i++) {
|
for (int i = 0; i < numElements; i++) {
|
||||||
|
listElements[i]->StopBlinking();
|
||||||
listElements[i]->StopScrolling();
|
listElements[i]->StopScrolling();
|
||||||
|
}
|
||||||
|
for (int i = 0; i < numElements; i++) {
|
||||||
listElements[i]->Close();
|
listElements[i]->Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user