diff options
author | kamel5 <vdr.kamel5 (at) gmx (dot) net> | 2021-06-06 14:43:22 +0200 |
---|---|---|
committer | kamel5 <vdr.kamel5 (at) gmx (dot) net> | 2021-07-12 12:18:16 +0200 |
commit | 15172f07452c60f044383b9e73585b3c41aaa898 (patch) | |
tree | 7aa0a4dee74a06657654c006cabc653d421a98b5 | |
parent | a36a299a97d6c0c53b72421898eb1ece6c821489 (diff) | |
download | skin-nopacity-15172f07452c60f044383b9e73585b3c41aaa898.tar.gz skin-nopacity-15172f07452c60f044383b9e73585b3c41aaa898.tar.bz2 |
Optimize Flush in display channel
Changes in Flush(): This ensures that only one flush is active when
the thread is running.
Changes in Acton(): Since the first Pixmap::Lock() takes so much longer
than the following, the first Pixmap::Lock() was moved before the while
loop. This makes the fade-in softer.
-rw-r--r-- | displaychannel.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/displaychannel.c b/displaychannel.c index ce5c0ee..8e60a9d 100644 --- a/displaychannel.c +++ b/displaychannel.c @@ -97,6 +97,9 @@ void cNopacityDisplayChannel::SetMessage(eMessageType Type, const char *Text) { } void cNopacityDisplayChannel::Flush(void) { + if (Running()) + return; + channelView->DrawDate(); if (present && !groupSep) { @@ -139,16 +142,20 @@ void cNopacityDisplayChannel::Flush(void) { } void cNopacityDisplayChannel::Action(void) { + uint64_t First = cTimeMs::Now(); + cPixmap::Lock(); + cPixmap::Unlock(); uint64_t Start = cTimeMs::Now(); + dsyslog ("skinnopacity: First Lock(): %lims\n", Start - First); while (Running()) { uint64_t Now = cTimeMs::Now(); - cPixmap::Lock(); double t = std::min(double(Now - Start) / FadeTime, 1.0); int Alpha = t * ALPHA_OPAQUE; + cPixmap::Lock(); channelView->SetAlpha(Alpha); - cPixmap::Unlock(); if (Running()) osd->Flush(); + cPixmap::Unlock(); int Delta = cTimeMs::Now() - Now; if (Running() && (Delta < FrameTime)) cCondWait::SleepMs(FrameTime - Delta); |