X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=videoplayer%2Fsrc%2Fosd.rs;h=f2dd24d34447badb94cece20530f02f5f7b47a62;hb=549511e9deafd9ec08b3c80489e7e85c5f5f0b3b;hp=1dfff4217764b34de005560031de045af33f0b25;hpb=87eacb3aeecf25e6aa1a090e034343f391b1b9a0;p=nihav-player.git diff --git a/videoplayer/src/osd.rs b/videoplayer/src/osd.rs index 1dfff42..f2dd24d 100644 --- a/videoplayer/src/osd.rs +++ b/videoplayer/src/osd.rs @@ -9,6 +9,7 @@ pub struct OSD { text: Vec, 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() {