summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2016-04-16 09:18:51 +0200
committerlouis <louis.braun@gmx.de>2016-04-16 09:18:51 +0200
commit92553a8134c7436f598fbe28078614291755847c (patch)
tree308dcaf512996c84b2306022d57fd4961a652bfc
parentaec88498ff6db0628d62cb6fef4e658cf4a23b60 (diff)
downloadvdr-plugin-skindesigner-92553a8134c7436f598fbe28078614291755847c.tar.gz
vdr-plugin-skindesigner-92553a8134c7436f598fbe28078614291755847c.tar.bz2
fixed hiding of viewelemments when shifting
-rw-r--r--coreengine/animation.c5
-rw-r--r--coreengine/viewelement.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/coreengine/animation.c b/coreengine/animation.c
index 90756b4..b3519de 100644
--- a/coreengine/animation.c
+++ b/coreengine/animation.c
@@ -325,6 +325,7 @@ void cAnimation::Shift(void) {
shiftable->SetStartShifting();
uint64_t start = cTimeMs::Now();
+ bool finished = false;
while (Running() || !modeIn) {
uint64_t now = cTimeMs::Now();
if (Running() || !modeIn)
@@ -336,6 +337,7 @@ void cAnimation::Shift(void) {
cCondWait::SleepMs(frametime - delta);
}
if ((int)(now - start) > shifttime) {
+ finished = true;
if ((Running() && modeIn) && pos != shiftend) {
shiftable->SetPosition(shiftend, shiftend);
shiftable->Flush();
@@ -354,6 +356,9 @@ void cAnimation::Shift(void) {
pos.Set(pos.X() - stepX, pos.Y() - stepY);
}
}
+ if (!finished) {
+ shiftable->SetPosition(shiftend, shiftend);
+ }
shiftable->SetEndShifting();
}
diff --git a/coreengine/viewelement.c b/coreengine/viewelement.c
index 46bebce..9e806cf 100644
--- a/coreengine/viewelement.c
+++ b/coreengine/viewelement.c
@@ -283,6 +283,10 @@ void cViewElement::Clear(bool forceClearBackground) {
}
void cViewElement::Hide(void) {
+ delete shifter;
+ shifter = NULL;
+ delete fader;
+ fader = NULL;
for (cAreaNode *node = areaNodes.First(); node; node = areaNodes.Next(node)) {
sdOsd->Lock();
node->Hide();