diff options
| author | louis <louis.braun@gmx.de> | 2015-01-22 18:08:12 +0100 |
|---|---|---|
| committer | louis <louis.braun@gmx.de> | 2015-01-22 18:08:12 +0100 |
| commit | cacde1887c92f024fd4a4247132aa82972f4a66f (patch) | |
| tree | 82f3b788d93217ace52de811dea1b8322273775c /views | |
| parent | 48afaeed63786f41756be81a60e102cb0dc1a223 (diff) | |
| download | vdr-plugin-skindesigner-cacde1887c92f024fd4a4247132aa82972f4a66f.tar.gz vdr-plugin-skindesigner-cacde1887c92f024fd4a4247132aa82972f4a66f.tar.bz2 | |
fixed bug that onpause view potentially starts during setting cutting marks
Diffstat (limited to 'views')
| -rw-r--r-- | views/displayreplayonpauseview.c | 16 | ||||
| -rw-r--r-- | views/displayreplayonpauseview.h | 2 | ||||
| -rw-r--r-- | views/displayreplayview.c | 6 | ||||
| -rw-r--r-- | views/displayreplayview.h | 1 |
4 files changed, 24 insertions, 1 deletions
diff --git a/views/displayreplayonpauseview.c b/views/displayreplayonpauseview.c index 976d37b..27aaa50 100644 --- a/views/displayreplayonpauseview.c +++ b/views/displayreplayonpauseview.c @@ -6,6 +6,7 @@ cDisplayReplayOnPauseView::cDisplayReplayOnPauseView(cTemplateViewElement *tmplV tmplViewElement->SetPixOffset(0); delay = tmplViewElement->GetNumericParameter(ptDelay) * 1000; SetFadeTime(tmplViewElement->GetNumericParameter(ptFadeTime)); + resetSleep = false; } cDisplayReplayOnPauseView::~cDisplayReplayOnPauseView() { @@ -83,7 +84,20 @@ void cDisplayReplayOnPauseView::Render(void) { } void cDisplayReplayOnPauseView::Action(void) { - DoSleep(delay); + bool doContinue; + int sleepSlice = 10; + do { + doContinue = false; + for (int i = 0; Running() && (i*sleepSlice < delay); i++) { + cCondWait::SleepMs(sleepSlice); + if (resetSleep) { + doContinue = true; + resetSleep = false; + break; + } + } + } while (doContinue); + if (!Running()) return; Render(); diff --git a/views/displayreplayonpauseview.h b/views/displayreplayonpauseview.h index 6c50ce6..b3498af 100644 --- a/views/displayreplayonpauseview.h +++ b/views/displayreplayonpauseview.h @@ -8,10 +8,12 @@ class cDisplayReplayOnPauseView : public cView, public cViewHelpers { private: int delay; + bool resetSleep; virtual void Action(void); public: cDisplayReplayOnPauseView(cTemplateViewElement *tmplViewElement); virtual ~cDisplayReplayOnPauseView(); + void ResetSleep(void) { resetSleep = true; }; void Render(void); void Flush(void) { DoFlush(); }; }; diff --git a/views/displayreplayview.c b/views/displayreplayview.c index 4831161..48ebd75 100644 --- a/views/displayreplayview.c +++ b/views/displayreplayview.c @@ -379,6 +379,12 @@ void cDisplayReplayView::ClearOnPause(void) { } } +void cDisplayReplayView::DelayOnPause(void) { + if (onPauseView) { + onPauseView->ResetSleep(); + } +} + void cDisplayReplayView::DrawCustomTokens(void) { if (!ViewElementImplemented(veCustomTokens)) { return; diff --git a/views/displayreplayview.h b/views/displayreplayview.h index a79e537..6104e2a 100644 --- a/views/displayreplayview.h +++ b/views/displayreplayview.h @@ -33,6 +33,7 @@ public: void DrawMessage(eMessageType type, const char *text); void DrawOnPause(bool modeOnly); void ClearOnPause(void); + void DelayOnPause(void); void DrawCustomTokens(void); void DoFadeIn(void) { Start(); }; void Flush(void) { DoFlush(); }; |
