summaryrefslogtreecommitdiff
path: root/coreengine
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2016-03-05 10:20:45 +0100
committerlouis <louis.braun@gmx.de>2016-03-05 10:20:45 +0100
commit21ef5263efe8598d9beedc47a9ddd42d2cda5ace (patch)
treeff37cec0893e4da0c4a2a0312c57e148204c55fc /coreengine
parentcdc1c10204a7444b7178626ae4b3b36a129e96da (diff)
downloadvdr-plugin-skindesigner-21ef5263efe8598d9beedc47a9ddd42d2cda5ace.tar.gz
vdr-plugin-skindesigner-21ef5263efe8598d9beedc47a9ddd42d2cda5ace.tar.bz2
fixed blinking deadlock again#
Diffstat (limited to 'coreengine')
-rw-r--r--coreengine/animation.c6
-rw-r--r--coreengine/area.h2
-rw-r--r--coreengine/osdwrapper.c2
-rw-r--r--coreengine/view.c5
-rw-r--r--coreengine/viewelement.c2
-rw-r--r--coreengine/viewgrid.c1
-rw-r--r--coreengine/viewlist.c6
7 files changed, 13 insertions, 11 deletions
diff --git a/coreengine/animation.c b/coreengine/animation.c
index 3e40a4a..fb88ab6 100644
--- a/coreengine/animation.c
+++ b/coreengine/animation.c
@@ -340,10 +340,10 @@ void cAnimation::Blink(void) {
bool blinkOn = false;
while (Running()) {
Sleep(freq);
- if (Running()) {
+ if (Running())
blinkable->DoBlink(blinkFunc, blinkOn);
- blinkable->Flush();
- }
+ if (Running())
+ blinkable->Flush();
blinkOn = !blinkOn;
}
}
diff --git a/coreengine/area.h b/coreengine/area.h
index 256feda..305ca2f 100644
--- a/coreengine/area.h
+++ b/coreengine/area.h
@@ -42,8 +42,8 @@ public:
bool ActiveTab(void) { return activeTab; };
virtual int GetWidth(void) { return 0; };
virtual void Cache(void) {};
- virtual void StopBlinkers(void) {};
virtual void Close(void) {};
+ virtual void StopBlinkers(void) {};
virtual void Clear(void) {};
virtual void Hide(void) {};
virtual void Show(void) {};
diff --git a/coreengine/osdwrapper.c b/coreengine/osdwrapper.c
index 76b5bf7..011ffc8 100644
--- a/coreengine/osdwrapper.c
+++ b/coreengine/osdwrapper.c
@@ -64,8 +64,6 @@ void cSdOsd::DestroyPixmap(cPixmap *pix) {
}
void cSdOsd::Flush(void) {
- Lock();
if (osd && !flushLocked)
osd->Flush();
- Unlock();
}
diff --git a/coreengine/view.c b/coreengine/view.c
index 2aba313..0a323bc 100644
--- a/coreengine/view.c
+++ b/coreengine/view.c
@@ -215,11 +215,6 @@ void cView::Render(int ve, bool force) {
}
void cView::Close(void) {
- for (int i=0; i < numViewElements; i++) {
- if (!viewElements[i])
- continue;
- viewElements[i]->StopBlinking();
- }
delete fader;
fader = NULL;
delete shifter;
diff --git a/coreengine/viewelement.c b/coreengine/viewelement.c
index cf05733..340bd84 100644
--- a/coreengine/viewelement.c
+++ b/coreengine/viewelement.c
@@ -268,6 +268,7 @@ bool cViewElement::Execute(void) {
void cViewElement::Clear(void) {
tokenContainer->Clear();
for (cAreaNode *node = areaNodes.First(); node; node = areaNodes.Next(node)) {
+ node->StopBlinkers();
sdOsd->Lock();
node->Clear();
sdOsd->Unlock();
@@ -306,6 +307,7 @@ void cViewElement::Close(void) {
delete detacher;
detacher = NULL;
for (cAreaNode *node = areaNodes.First(); node; node = areaNodes.Next(node)) {
+ node->StopBlinkers();
sdOsd->Lock();
node->Close();
sdOsd->Unlock();
diff --git a/coreengine/viewgrid.c b/coreengine/viewgrid.c
index f19383a..6d3dd5f 100644
--- a/coreengine/viewgrid.c
+++ b/coreengine/viewgrid.c
@@ -136,6 +136,7 @@ void cViewGrid::ClearGrids(void) {
for (int i = 0; i < gridsize; i++) {
if (!grid[i])
continue;
+ grid[i]->StopBlinking();
grid[i]->Close();
delete grid[i];
grid[i] = NULL;
diff --git a/coreengine/viewlist.c b/coreengine/viewlist.c
index 86760b5..dbbe5e7 100644
--- a/coreengine/viewlist.c
+++ b/coreengine/viewlist.c
@@ -190,7 +190,10 @@ void cViewList::Clear(void) {
if (!listElements)
return;
for (int i = 0; i < numElements; i++) {
+ listElements[i]->StopBlinking();
listElements[i]->StopScrolling();
+ }
+ for (int i = 0; i < numElements; i++) {
listElements[i]->Clear();
}
}
@@ -199,7 +202,10 @@ void cViewList::Close(void) {
if (!listElements)
return;
for (int i = 0; i < numElements; i++) {
+ listElements[i]->StopBlinking();
listElements[i]->StopScrolling();
+ }
+ for (int i = 0; i < numElements; i++) {
listElements[i]->Close();
}
}