From 300ef19ec4ec115a7040c6dd818280fc1c4b1841 Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Sat, 30 Aug 2025 20:48:47 +0200 Subject: [PATCH] videoplayer: add options for turning OSD on/off/whatever --- videoplayer/src/main.rs | 15 +++++++++++++++ videoplayer/src/osd.rs | 6 ++++++ 2 files changed, 21 insertions(+) diff --git a/videoplayer/src/main.rs b/videoplayer/src/main.rs index 3a3cd3f..16597bd 100644 --- a/videoplayer/src/main.rs +++ b/videoplayer/src/main.rs @@ -359,6 +359,7 @@ struct Player { debug: bool, osd: OSD, + show_osd: Option, #[cfg(feature="debug")] logfile: File, @@ -399,6 +400,7 @@ impl Player { debug: false, osd: OSD::new(), + show_osd: None, #[cfg(feature="debug")] logfile: File::create("debug.log").expect("'debug.log' should be available for writing"), @@ -582,6 +584,7 @@ impl Player { Keycode::O => { if keymod.contains(Mod::RSHIFTMOD) || keymod.contains(Mod::LSHIFTMOD) { self.osd.toggle_perm(); + self.show_osd = None; } else { self.osd.toggle(); } @@ -669,6 +672,9 @@ impl Player { self.has_audio = false; self.osd.reset(); self.osd.set_duration(duration); + if let Some(val) = self.show_osd { + self.osd.set_perm(val); + } for i in 0..dmx.get_num_streams() { let s = dmx.get_stream(i).unwrap(); let info = s.get_info(); @@ -1038,6 +1044,15 @@ fn main() { } } }, + "-osd" => { + player.show_osd = Some(true); + }, + "-noosd" => { + player.show_osd = Some(false); + }, + "-ignosd" => { + player.show_osd = None; + }, _ => { window = player.play(window, arg, seek_time); if player.end { break; } diff --git a/videoplayer/src/osd.rs b/videoplayer/src/osd.rs index f2dd24d..95fd4f5 100644 --- a/videoplayer/src/osd.rs +++ b/videoplayer/src/osd.rs @@ -32,6 +32,12 @@ impl OSD { self.time = None; } } + pub fn set_perm(&mut self, perm: bool) { + self.perm = perm; + if !self.perm { + self.time = None; + } + } pub fn toggle_perm(&mut self) { if !self.perm { self.perm = true; -- 2.39.5