summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkamel5 <vdr.kamel5 (at) gmx (dot) net>2021-06-06 14:43:22 +0200
committerkamel5 <vdr.kamel5 (at) gmx (dot) net>2021-07-12 12:18:16 +0200
commit15172f07452c60f044383b9e73585b3c41aaa898 (patch)
tree7aa0a4dee74a06657654c006cabc653d421a98b5
parenta36a299a97d6c0c53b72421898eb1ece6c821489 (diff)
downloadskin-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.c11
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);