diff options
author | kamel5 <vdr.kamel5 (at) gmx (dot) net> | 2021-06-11 16:35:49 +0200 |
---|---|---|
committer | kamel5 <vdr.kamel5 (at) gmx (dot) net> | 2021-07-12 13:41:18 +0200 |
commit | 26f0adefa8c6eee4a5088ef899183f8499153879 (patch) | |
tree | ab12948f456ca2fcc6d93a4e2d48d370a695d4c2 | |
parent | 4b1edb5a90c742aa7f34bf5910f9d75774011054 (diff) | |
download | skin-nopacity-26f0adefa8c6eee4a5088ef899183f8499153879.tar.gz skin-nopacity-26f0adefa8c6eee4a5088ef899183f8499153879.tar.bz2 |
Optimize Flush in display volume
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-- | displayvolume.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/displayvolume.c b/displayvolume.c index 4271fac..78c6e83 100644 --- a/displayvolume.c +++ b/displayvolume.c @@ -129,6 +129,8 @@ tColor cNopacityDisplayVolume::DrawProgressbarBackground(int left, int top, int } void cNopacityDisplayVolume::Flush(void) { + if (Running()) + return; if (initial) if (FadeTime) Start(); @@ -137,18 +139,22 @@ void cNopacityDisplayVolume::Flush(void) { } void cNopacityDisplayVolume::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(); pixmapBackground->SetAlpha(Alpha); pixmapProgressBar->SetAlpha(Alpha); pixmapLabel->SetAlpha(Alpha); - cPixmap::Unlock(); if (Running()) osd->Flush(); + cPixmap::Unlock(); int Delta = cTimeMs::Now() - Now; if (Running() && (Delta < FrameTime)) cCondWait::SleepMs(FrameTime - Delta); |