mirror of
https://github.com/Stremio/stremio-shell-ng.git
synced 2026-04-21 16:01:56 +00:00
set_property! macro
This commit is contained in:
parent
f10380f60a
commit
8d5a098307
1 changed files with 31 additions and 46 deletions
|
|
@ -59,45 +59,32 @@ impl PartialUi for Player {
|
||||||
|
|
||||||
fn create_shareable_mpv(window_handle: HWND) -> Arc<Mpv> {
|
fn create_shareable_mpv(window_handle: HWND) -> Arc<Mpv> {
|
||||||
let mpv = Mpv::with_initializer(|initializer| {
|
let mpv = Mpv::with_initializer(|initializer| {
|
||||||
initializer
|
macro_rules! set_property {
|
||||||
.set_property("wid", window_handle as i64)
|
($name:literal, $value:expr) => {
|
||||||
.expect("failed setting wid");
|
initializer
|
||||||
|
.set_property($name, $value)
|
||||||
|
.expect(concat!("failed to set ", $name));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
set_property!("wid", window_handle as i64);
|
||||||
// initializer.set_property("vo", "gpu").expect("unable to set vo");
|
// initializer.set_property("vo", "gpu").expect("unable to set vo");
|
||||||
// win, opengl: works but least performancy, 10-15% CPU
|
// win, opengl: works but least performancy, 10-15% CPU
|
||||||
// winvk, vulkan: works as good as d3d11
|
// winvk, vulkan: works as good as d3d11
|
||||||
// d3d11, d1d11: works great
|
// d3d11, d1d11: works great
|
||||||
// dxinterop, auto: works, slightly more cpu use than d3d11
|
// dxinterop, auto: works, slightly more cpu use than d3d11
|
||||||
// default (auto) seems to be d3d11 (vo/gpu/d3d11)
|
// default (auto) seems to be d3d11 (vo/gpu/d3d11)
|
||||||
initializer
|
set_property!("gpu-context", "angle");
|
||||||
.set_property("gpu-context", "angle")
|
set_property!("gpu-api", "auto");
|
||||||
.expect("failed setting gpu-contex");
|
set_property!("title", "Stremio");
|
||||||
initializer
|
set_property!("terminal", "yes");
|
||||||
.set_property("gpu-api", "auto")
|
set_property!("msg-level", "all=no,cplayer=debug");
|
||||||
.expect("failed setting gpu-api");
|
set_property!("quiet", "yes");
|
||||||
initializer
|
set_property!("hwdec", "auto");
|
||||||
.set_property("title", "Stremio")
|
|
||||||
.expect("failed setting title");
|
|
||||||
initializer
|
|
||||||
.set_property("terminal", "yes")
|
|
||||||
.expect("failed setting terminal");
|
|
||||||
initializer
|
|
||||||
.set_property("msg-level", "all=no,cplayer=debug")
|
|
||||||
.expect("failed setting msg-level");
|
|
||||||
initializer
|
|
||||||
.set_property("quiet", "yes")
|
|
||||||
.expect("failed setting quiet");
|
|
||||||
initializer
|
|
||||||
.set_property("hwdec", "auto")
|
|
||||||
.expect("failed setting hwdec");
|
|
||||||
// FIXME: very often the audio track isn't selected when using "aid" = "auto"
|
// FIXME: very often the audio track isn't selected when using "aid" = "auto"
|
||||||
initializer
|
set_property!("aid", "1");
|
||||||
.set_property("aid", 1)
|
|
||||||
.expect("failed setting aid");
|
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
});
|
||||||
.expect("cannot build MPV");
|
Arc::new(mpv.expect("cannot build MPV"))
|
||||||
|
|
||||||
Arc::new(mpv)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_event_thread(
|
fn create_event_thread(
|
||||||
|
|
@ -111,6 +98,8 @@ fn create_event_thread(
|
||||||
.disable_deprecated_events()
|
.disable_deprecated_events()
|
||||||
.expect("failed to disable deprecated MPV events");
|
.expect("failed to disable deprecated MPV events");
|
||||||
|
|
||||||
|
// -- Event handler loop --
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
for ObserveProperty { name, format } in observe_property_receiver.drain() {
|
for ObserveProperty { name, format } in observe_property_receiver.drain() {
|
||||||
event_context
|
event_context
|
||||||
|
|
@ -131,21 +120,17 @@ fn create_event_thread(
|
||||||
|
|
||||||
// even if you don't do anything with the events, it is still necessary to empty the event loop
|
// even if you don't do anything with the events, it is still necessary to empty the event loop
|
||||||
let player_response = match event {
|
let player_response = match event {
|
||||||
Event::PropertyChange { name, change, .. } => {
|
Event::PropertyChange { name, change, .. } => PlayerResponse(
|
||||||
PlayerResponse(
|
"mpv-prop-change",
|
||||||
"mpv-prop-change",
|
PlayerEvent::PropChange(PlayerProprChange::from_name_value(
|
||||||
PlayerEvent::PropChange(PlayerProprChange::from_name_value(
|
name.to_string(),
|
||||||
name.to_string(),
|
change,
|
||||||
change,
|
)),
|
||||||
)),
|
),
|
||||||
)
|
Event::EndFile(reason) => PlayerResponse(
|
||||||
}
|
"mpv-event-ended",
|
||||||
Event::EndFile(reason) => {
|
PlayerEvent::End(PlayerEnded::from_end_reason(reason)),
|
||||||
PlayerResponse(
|
),
|
||||||
"mpv-event-ended",
|
|
||||||
PlayerEvent::End(PlayerEnded::from_end_reason(reason)),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
Event::Shutdown => {
|
Event::Shutdown => {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue