aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-03-21 19:35:36 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-03-21 19:35:36 +0100
commit8be717167ed77f5a1021fa0825b386674c5c1a39 (patch)
tree23651b5bfb9e52ec8138e382e12bf8f072a2bbb9
parentbuild(treewide): Update (diff)
downloadyt-8be717167ed77f5a1021fa0825b386674c5c1a39.zip
chore(treewide): Migrate to rust edition 2024
Even though the diff in the libmpv2 crate is quite big, it really only added `unsafe` blocks to the `unsafe` functions.
Diffstat (limited to '')
-rw-r--r--Cargo.toml4
-rw-r--r--crates/libmpv2/examples/opengl.rs17
-rw-r--r--crates/libmpv2/src/lib.rs2
-rw-r--r--crates/libmpv2/src/mpv/events.rs50
-rw-r--r--crates/libmpv2/src/mpv/protocol.rs127
-rw-r--r--crates/libmpv2/src/mpv/render.rs48
-rw-r--r--crates/libmpv2/src/tests.rs24
7 files changed, 151 insertions, 121 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 4eea60a..303b545 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -20,9 +20,9 @@ members = [
]
[workspace.package]
-edition = "2021"
+edition = "2024"
version = "1.5.0"
-rust-version = "1.80.0"
+rust-version = "1.85.0"
authors = ["Benedikt Peetz <benedikt.peetz@b-peetz.de>"]
repository = "https://git.vhack.eu/soispha/clients/yt"
license = "GPL-3.0-or-later"
diff --git a/crates/libmpv2/examples/opengl.rs b/crates/libmpv2/examples/opengl.rs
index 8eb9647..9f595aa 100644
--- a/crates/libmpv2/examples/opengl.rs
+++ b/crates/libmpv2/examples/opengl.rs
@@ -38,13 +38,16 @@ fn main() {
Ok(())
})
.unwrap();
- let mut render_context = RenderContext::new(unsafe { mpv.ctx.as_mut() }, vec![
- RenderParam::ApiType(RenderParamApiType::OpenGl),
- RenderParam::InitParams(OpenGLInitParams {
- get_proc_address,
- ctx: video,
- }),
- ])
+ let mut render_context = RenderContext::new(
+ unsafe { mpv.ctx.as_mut() },
+ vec![
+ RenderParam::ApiType(RenderParamApiType::OpenGl),
+ RenderParam::InitParams(OpenGLInitParams {
+ get_proc_address,
+ ctx: video,
+ }),
+ ],
+ )
.expect("Failed creating render context");
event_subsystem
diff --git a/crates/libmpv2/src/lib.rs b/crates/libmpv2/src/lib.rs
index d47e620..f6c2103 100644
--- a/crates/libmpv2/src/lib.rs
+++ b/crates/libmpv2/src/lib.rs
@@ -35,7 +35,7 @@ use std::os::raw as ctype;
pub const MPV_CLIENT_API_MAJOR: ctype::c_ulong = 2;
pub const MPV_CLIENT_API_MINOR: ctype::c_ulong = 2;
pub const MPV_CLIENT_API_VERSION: ctype::c_ulong =
- MPV_CLIENT_API_MAJOR << 16 | MPV_CLIENT_API_MINOR;
+ (MPV_CLIENT_API_MAJOR << 16) | MPV_CLIENT_API_MINOR;
mod mpv;
#[cfg(test)]
diff --git a/crates/libmpv2/src/mpv/events.rs b/crates/libmpv2/src/mpv/events.rs
index e27da2c..f10ff6e 100644
--- a/crates/libmpv2/src/mpv/events.rs
+++ b/crates/libmpv2/src/mpv/events.rs
@@ -70,26 +70,28 @@ impl<'a> PropertyData<'a> {
// SAFETY: meant to extract the data from an event property. See `mpv_event_property` in
// `client.h`
unsafe fn from_raw(format: MpvFormat, ptr: *mut ctype::c_void) -> Result<PropertyData<'a>> {
- assert!(!ptr.is_null());
- match format {
- mpv_format::Flag => Ok(PropertyData::Flag(*(ptr as *mut bool))),
- mpv_format::String => {
- let char_ptr = *(ptr as *mut *mut ctype::c_char);
- Ok(PropertyData::Str(mpv_cstr_to_str!(char_ptr)?))
- }
- mpv_format::OsdString => {
- let char_ptr = *(ptr as *mut *mut ctype::c_char);
- Ok(PropertyData::OsdStr(mpv_cstr_to_str!(char_ptr)?))
- }
- mpv_format::Double => Ok(PropertyData::Double(*(ptr as *mut f64))),
- mpv_format::Int64 => Ok(PropertyData::Int64(*(ptr as *mut i64))),
- mpv_format::Node => {
- let sys_node = *(ptr as *mut libmpv2_sys::mpv_node);
- let node = SysMpvNode::new(sys_node, false);
- Ok(PropertyData::Node(node.value().unwrap()))
+ unsafe {
+ assert!(!ptr.is_null());
+ match format {
+ mpv_format::Flag => Ok(PropertyData::Flag(*(ptr as *mut bool))),
+ mpv_format::String => {
+ let char_ptr = *(ptr as *mut *mut ctype::c_char);
+ Ok(PropertyData::Str(mpv_cstr_to_str!(char_ptr)?))
+ }
+ mpv_format::OsdString => {
+ let char_ptr = *(ptr as *mut *mut ctype::c_char);
+ Ok(PropertyData::OsdStr(mpv_cstr_to_str!(char_ptr)?))
+ }
+ mpv_format::Double => Ok(PropertyData::Double(*(ptr as *mut f64))),
+ mpv_format::Int64 => Ok(PropertyData::Int64(*(ptr as *mut i64))),
+ mpv_format::Node => {
+ let sys_node = *(ptr as *mut libmpv2_sys::mpv_node);
+ let node = SysMpvNode::new(sys_node, false);
+ Ok(PropertyData::Node(node.value().unwrap()))
+ }
+ mpv_format::None => unreachable!(),
+ _ => unimplemented!(),
}
- mpv_format::None => unreachable!(),
- _ => unimplemented!(),
}
}
}
@@ -146,11 +148,13 @@ pub enum Event<'a> {
}
unsafe extern "C" fn wu_wrapper<F: Fn() + Send + 'static>(ctx: *mut c_void) {
- if ctx.is_null() {
- panic!("ctx for wakeup wrapper is NULL");
- }
+ unsafe {
+ if ctx.is_null() {
+ panic!("ctx for wakeup wrapper is NULL");
+ }
- (*(ctx as *mut F))();
+ (*(ctx as *mut F))();
+ }
}
/// Context to listen to events.
diff --git a/crates/libmpv2/src/mpv/protocol.rs b/crates/libmpv2/src/mpv/protocol.rs
index ec840d8..ee33411 100644
--- a/crates/libmpv2/src/mpv/protocol.rs
+++ b/crates/libmpv2/src/mpv/protocol.rs
@@ -63,26 +63,28 @@ where
T: RefUnwindSafe,
U: RefUnwindSafe,
{
- let data = user_data as *mut ProtocolData<T, U>;
+ unsafe {
+ let data = user_data as *mut ProtocolData<T, U>;
- (*info).cookie = user_data;
- (*info).read_fn = Some(read_wrapper::<T, U>);
- (*info).seek_fn = Some(seek_wrapper::<T, U>);
- (*info).size_fn = Some(size_wrapper::<T, U>);
- (*info).close_fn = Some(close_wrapper::<T, U>);
+ (*info).cookie = user_data;
+ (*info).read_fn = Some(read_wrapper::<T, U>);
+ (*info).seek_fn = Some(seek_wrapper::<T, U>);
+ (*info).size_fn = Some(size_wrapper::<T, U>);
+ (*info).close_fn = Some(close_wrapper::<T, U>);
- let ret = panic::catch_unwind(|| {
- let uri = mpv_cstr_to_str!(uri as *const _).unwrap();
- ptr::write(
- (*data).cookie,
- ((*data).open_fn)(&mut (*data).user_data, uri),
- );
- });
+ let ret = panic::catch_unwind(|| {
+ let uri = mpv_cstr_to_str!(uri as *const _).unwrap();
+ ptr::write(
+ (*data).cookie,
+ ((*data).open_fn)(&mut (*data).user_data, uri),
+ );
+ });
- if ret.is_ok() {
- 0
- } else {
- mpv_error::Generic as _
+ if ret.is_ok() {
+ 0
+ } else {
+ mpv_error::Generic as _
+ }
}
}
@@ -95,13 +97,15 @@ where
T: RefUnwindSafe,
U: RefUnwindSafe,
{
- let data = cookie as *mut ProtocolData<T, U>;
+ unsafe {
+ let data = cookie as *mut ProtocolData<T, U>;
- let ret = panic::catch_unwind(|| {
- let slice = slice::from_raw_parts_mut(buf, nbytes as _);
- ((*data).read_fn)(&mut *(*data).cookie, slice)
- });
- ret.unwrap_or(-1)
+ let ret = panic::catch_unwind(|| {
+ let slice = slice::from_raw_parts_mut(buf, nbytes as _);
+ ((*data).read_fn)(&mut *(*data).cookie, slice)
+ });
+ ret.unwrap_or(-1)
+ }
}
unsafe extern "C" fn seek_wrapper<T, U>(cookie: *mut ctype::c_void, offset: i64) -> i64
@@ -109,18 +113,21 @@ where
T: RefUnwindSafe,
U: RefUnwindSafe,
{
- let data = cookie as *mut ProtocolData<T, U>;
+ unsafe {
+ let data = cookie as *mut ProtocolData<T, U>;
- if (*data).seek_fn.is_none() {
- return mpv_error::Unsupported as _;
- }
+ if (*data).seek_fn.is_none() {
+ return mpv_error::Unsupported as _;
+ }
- let ret =
- panic::catch_unwind(|| (*(*data).seek_fn.as_ref().unwrap())(&mut *(*data).cookie, offset));
- if let Ok(ret) = ret {
- ret
- } else {
- mpv_error::Generic as _
+ let ret = panic::catch_unwind(|| {
+ (*(*data).seek_fn.as_ref().unwrap())(&mut *(*data).cookie, offset)
+ });
+ if let Ok(ret) = ret {
+ ret
+ } else {
+ mpv_error::Generic as _
+ }
}
}
@@ -129,17 +136,20 @@ where
T: RefUnwindSafe,
U: RefUnwindSafe,
{
- let data = cookie as *mut ProtocolData<T, U>;
+ unsafe {
+ let data = cookie as *mut ProtocolData<T, U>;
- if (*data).size_fn.is_none() {
- return mpv_error::Unsupported as _;
- }
+ if (*data).size_fn.is_none() {
+ return mpv_error::Unsupported as _;
+ }
- let ret = panic::catch_unwind(|| (*(*data).size_fn.as_ref().unwrap())(&mut *(*data).cookie));
- if let Ok(ret) = ret {
- ret
- } else {
- mpv_error::Unsupported as _
+ let ret =
+ panic::catch_unwind(|| (*(*data).size_fn.as_ref().unwrap())(&mut *(*data).cookie));
+ if let Ok(ret) = ret {
+ ret
+ } else {
+ mpv_error::Unsupported as _
+ }
}
}
@@ -149,9 +159,11 @@ where
T: RefUnwindSafe,
U: RefUnwindSafe,
{
- let data = Box::from_raw(cookie as *mut ProtocolData<T, U>);
+ unsafe {
+ let data = Box::from_raw(cookie as *mut ProtocolData<T, U>);
- panic::catch_unwind(|| (data.close_fn)(Box::from_raw(data.cookie)));
+ panic::catch_unwind(|| (data.close_fn)(Box::from_raw(data.cookie)));
+ }
}
struct ProtocolData<T, U> {
@@ -224,20 +236,23 @@ impl<T: RefUnwindSafe, U: RefUnwindSafe> Protocol<T, U> {
seek_fn: Option<StreamSeek<T>>,
size_fn: Option<StreamSize<T>>,
) -> Protocol<T, U> {
- let c_layout = Layout::from_size_align(mem::size_of::<T>(), mem::align_of::<T>()).unwrap();
- let cookie = alloc::alloc(c_layout) as *mut T;
- let data = Box::into_raw(Box::new(ProtocolData {
- cookie,
- user_data,
+ unsafe {
+ let c_layout =
+ Layout::from_size_align(mem::size_of::<T>(), mem::align_of::<T>()).unwrap();
+ let cookie = alloc::alloc(c_layout) as *mut T;
+ let data = Box::into_raw(Box::new(ProtocolData {
+ cookie,
+ user_data,
- open_fn,
- close_fn,
- read_fn,
- seek_fn,
- size_fn,
- }));
+ open_fn,
+ close_fn,
+ read_fn,
+ seek_fn,
+ size_fn,
+ }));
- Protocol { name, data }
+ Protocol { name, data }
+ }
}
fn register(&self, ctx: *mut libmpv2_sys::mpv_handle) -> Result<()> {
diff --git a/crates/libmpv2/src/mpv/render.rs b/crates/libmpv2/src/mpv/render.rs
index 6457048..02f70bb 100644
--- a/crates/libmpv2/src/mpv/render.rs
+++ b/crates/libmpv2/src/mpv/render.rs
@@ -125,26 +125,30 @@ impl<C> From<&RenderParam<C>> for u32 {
}
unsafe extern "C" fn gpa_wrapper<GLContext>(ctx: *mut c_void, name: *const i8) -> *mut c_void {
- if ctx.is_null() {
- panic!("ctx for get_proc_address wrapper is NULL");
- }
+ unsafe {
+ if ctx.is_null() {
+ panic!("ctx for get_proc_address wrapper is NULL");
+ }
- let params: *mut OpenGLInitParams<GLContext> = ctx as _;
- let params = &*params;
- (params.get_proc_address)(
- &params.ctx,
- CStr::from_ptr(name)
- .to_str()
- .expect("Could not convert function name to str"),
- )
+ let params: *mut OpenGLInitParams<GLContext> = ctx as _;
+ let params = &*params;
+ (params.get_proc_address)(
+ &params.ctx,
+ CStr::from_ptr(name)
+ .to_str()
+ .expect("Could not convert function name to str"),
+ )
+ }
}
unsafe extern "C" fn ru_wrapper<F: Fn() + Send + 'static>(ctx: *mut c_void) {
- if ctx.is_null() {
- panic!("ctx for render_update wrapper is NULL");
- }
+ unsafe {
+ if ctx.is_null() {
+ panic!("ctx for render_update wrapper is NULL");
+ }
- (*(ctx as *mut F))();
+ (*(ctx as *mut F))();
+ }
}
impl<C> From<OpenGLInitParams<C>> for libmpv2_sys::mpv_opengl_init_params {
@@ -197,14 +201,18 @@ impl<C> From<RenderParam<C>> for libmpv2_sys::mpv_render_param {
}
unsafe fn free_void_data<T>(ptr: *mut c_void) {
- drop(Box::<T>::from_raw(ptr as *mut T));
+ unsafe {
+ drop(Box::<T>::from_raw(ptr as *mut T));
+ }
}
unsafe fn free_init_params<C>(ptr: *mut c_void) {
- let params = Box::from_raw(ptr as *mut libmpv2_sys::mpv_opengl_init_params);
- drop(Box::from_raw(
- params.get_proc_address_ctx as *mut OpenGLInitParams<C>,
- ));
+ unsafe {
+ let params = Box::from_raw(ptr as *mut libmpv2_sys::mpv_opengl_init_params);
+ drop(Box::from_raw(
+ params.get_proc_address_ctx as *mut OpenGLInitParams<C>,
+ ));
+ }
}
impl RenderContext {
diff --git a/crates/libmpv2/src/tests.rs b/crates/libmpv2/src/tests.rs
index 6106eb2..68753fc 100644
--- a/crates/libmpv2/src/tests.rs
+++ b/crates/libmpv2/src/tests.rs
@@ -54,10 +54,10 @@ fn properties() {
0.6,
f64::round(subg * f64::powi(10.0, 4)) / f64::powi(10.0, 4)
);
- mpv.command("loadfile", &[
- "test-data/speech_12kbps_mb.wav",
- "append-play",
- ])
+ mpv.command(
+ "loadfile",
+ &["test-data/speech_12kbps_mb.wav", "append-play"],
+ )
.unwrap();
thread::sleep(Duration::from_millis(250));
@@ -185,10 +185,10 @@ fn events() {
fn node_map() {
let mpv = Mpv::new().unwrap();
- mpv.command("loadfile", &[
- "test-data/speech_12kbps_mb.wav",
- "append-play",
- ])
+ mpv.command(
+ "loadfile",
+ &["test-data/speech_12kbps_mb.wav", "append-play"],
+ )
.unwrap();
thread::sleep(Duration::from_millis(250));
@@ -217,10 +217,10 @@ fn node_map() {
fn node_array() -> Result<()> {
let mpv = Mpv::new()?;
- mpv.command("loadfile", &[
- "test-data/speech_12kbps_mb.wav",
- "append-play",
- ])
+ mpv.command(
+ "loadfile",
+ &["test-data/speech_12kbps_mb.wav", "append-play"],
+ )
.unwrap();
thread::sleep(Duration::from_millis(250));