diff options
author | louis <louis.braun@gmx.de> | 2016-03-05 10:20:45 +0100 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2016-03-05 10:20:45 +0100 |
commit | 21ef5263efe8598d9beedc47a9ddd42d2cda5ace (patch) | |
tree | ff37cec0893e4da0c4a2a0312c57e148204c55fc /coreengine | |
parent | cdc1c10204a7444b7178626ae4b3b36a129e96da (diff) | |
download | vdr-plugin-skindesigner-21ef5263efe8598d9beedc47a9ddd42d2cda5ace.tar.gz vdr-plugin-skindesigner-21ef5263efe8598d9beedc47a9ddd42d2cda5ace.tar.bz2 |
fixed blinking deadlock again#
Diffstat (limited to 'coreengine')
-rw-r--r-- | coreengine/animation.c | 6 | ||||
-rw-r--r-- | coreengine/area.h | 2 | ||||
-rw-r--r-- | coreengine/osdwrapper.c | 2 | ||||
-rw-r--r-- | coreengine/view.c | 5 | ||||
-rw-r--r-- | coreengine/viewelement.c | 2 | ||||
-rw-r--r-- | coreengine/viewgrid.c | 1 | ||||
-rw-r--r-- | coreengine/viewlist.c | 6 |
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(); } } |