summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkamel5 <vdr.kamel5 (at) gmx (dot) net>2021-06-11 16:35:49 +0200
committerkamel5 <vdr.kamel5 (at) gmx (dot) net>2021-07-12 13:41:18 +0200
commit26f0adefa8c6eee4a5088ef899183f8499153879 (patch)
treeab12948f456ca2fcc6d93a4e2d48d370a695d4c2
parent4b1edb5a90c742aa7f34bf5910f9d75774011054 (diff)
downloadskin-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.c10
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);