videoplayer: allow diplaying time indefinitely long
[nihav-player.git] / videoplayer / src / osd.rs
index 1dfff4217764b34de005560031de045af33f0b25..f2dd24d34447badb94cece20530f02f5f7b47a62 100644 (file)
@@ -9,6 +9,7 @@ pub struct OSD {
     text:           Vec<u8>,
     text_stride:    usize,
     duration:       u64,
+    perm:           bool,
 }
 
 impl OSD {
@@ -20,12 +21,25 @@ impl OSD {
     }
     pub fn set_duration(&mut self, duration: u64) { self.duration = duration; }
     pub fn toggle(&mut self) {
+        if self.perm {
+            self.perm = false;
+            self.time = None;
+            return;
+        }
         if self.time.is_none() {
             self.time = Some(Instant::now());
         } else {
             self.time = None;
         }
     }
+    pub fn toggle_perm(&mut self) {
+        if !self.perm {
+            self.perm = true;
+        } else {
+            self.perm = false;
+            self.time = None;
+        }
+    }
     pub fn update(&mut self) {
         if let Some(time) = self.time {
             if time.elapsed().as_millis() > 3000 {
@@ -33,7 +47,7 @@ impl OSD {
             }
         }
     }
-    pub fn is_active(&self) -> bool { self.time.is_some() }
+    pub fn is_active(&self) -> bool { self.time.is_some() || self.perm }
     pub fn prepare(&mut self, ts: u64) {
         self.update();
         if !self.is_active() {