[vlc-commits] [Git][videolan/vlc][master] 3 commits: Cargo.toml: list crate explicitely
Steve Lhomme (@robUx4)
gitlab at videolan.org
Sat Jan 18 08:48:38 UTC 2025
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
a9f1a03f by Alexandre Janniaux at 2025-01-18T08:31:38+00:00
Cargo.toml: list crate explicitely
Otherwise, stale files in any src/rust/vlcrs-*/ folder makes the folder
alive without manifest or with a non-complete manifest and everything
breaks...
- - - - -
62e7d695 by Alexandre Janniaux at 2025-01-18T08:31:38+00:00
rust: Makefile.am: enable tests for vlcrs-core
- - - - -
3221c89f by Alexandre Janniaux at 2025-01-18T08:31:38+00:00
rust: merge vlcrs_plugin into vlcrs_core
vlcrs_plugin exposes the base types to create plugin, much like
vlc_plugin.h in the C headers, and uses the vlcrs_core::object::Object
type. But vlcrs_core also needs vlcrs_plugin internally to define the
capabilities, and both need each other for tests also.
The same applies to vlcrs_macros when used in tests, which must stay
separated, but we can still provide it as a dev-dependencies and avoid
the cyclic reference.
- - - - -
13 changed files:
- Cargo.toml
- src/rust/Makefile.am
- src/rust/vlcrs-core/src/lib.rs
- src/rust/vlcrs-plugin/src/lib.rs → src/rust/vlcrs-core/src/plugin/mod.rs
- src/rust/vlcrs-plugin/src/sys.rs → src/rust/vlcrs-core/src/plugin/sys.rs
- src/rust/vlcrs-macros/Cargo.toml
- src/rust/vlcrs-macros/src/lib.rs
- src/rust/vlcrs-macros/src/module.rs
- src/rust/vlcrs-macros/tests/common/mod.rs
- src/rust/vlcrs-macros/tests/module.rs
- src/rust/vlcrs-macros/tests/module_default.rs
- src/rust/vlcrs-macros/tests/module_multiple.rs
- src/rust/vlcrs-macros/tests/module_specific.rs
Changes:
=====================================
Cargo.toml
=====================================
@@ -1,6 +1,9 @@
[workspace]
members = [
- "src/rust/vlcrs-*",
+ "src/rust/vlcrs-core",
+ "src/rust/vlcrs-macros",
+ "src/rust/vlcrs-messages",
+ "src/rust/vlcrs-utils",
]
resolver = "2"
=====================================
src/rust/Makefile.am
=====================================
@@ -3,17 +3,17 @@ CARGO_LOG_DRIVER = env top_builddir="${abs_top_builddir}" \
$(abs_top_srcdir)/buildsystem/cargo-test.py \
--working-directory="${abs_top_srcdir}/src/rust/"
+vlcrs-core.cargo:
vlcrs-macros.cargo:
vlcrs-messages.cargo:
-vlcrs-plugin.cargo:
vlcrs-utils.cargo:
(cd $(top_srcdir)/src/rust/$(@:.cargo=) && env top_builddir="${abs_top_builddir}" \
$(CARGO) build --target=$(RUST_TARGET))
if HAVE_RUST
TESTS += \
+ vlcrs-core.cargo \
vlcrs-macros.cargo \
vlcrs-messages.cargo \
- vlcrs-plugin.cargo \
vlcrs-utils.cargo
endif
=====================================
src/rust/vlcrs-core/src/lib.rs
=====================================
@@ -1,4 +1,6 @@
#![deny(unsafe_op_in_unsafe_fn)]
+#![feature(extern_types)]
+#![feature(associated_type_defaults)]
//! The `vlcrs-core` crate.
//!
@@ -8,4 +10,6 @@
//! If you need a vlc core C API that is not ported or wrapped yet here,
//! then do so first instead of bypassing this crate.
+pub mod plugin;
+
pub mod object;
=====================================
src/rust/vlcrs-plugin/src/lib.rs → src/rust/vlcrs-core/src/plugin/mod.rs
=====================================
@@ -1,17 +1,14 @@
-#![feature(extern_types)]
-#![feature(associated_type_defaults)]
-
pub mod sys;
-use vlcrs_core::object::Object;
+use crate::object::Object;
-pub const VLC_COPYRIGHT_VIDEOLAN : &str = r#"
+pub const VLC_COPYRIGHT_VIDEOLAN: &str = r#"
\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\x20\x74\x68
\x65\x20\x56\x69\x64\x65\x6f\x4c\x41\x4e\x20\x56\x4c\x43\x20\x6d
\x65\x64\x69\x61\x20\x70\x6c\x61\x79\x65\x72\x20\x64\x65\x76\x65
\x6c\x6f\x70\x65\x72\x73"#;
-pub const VLC_LICENSE_LGPL_2_1_PLUS : &str = r#"
+pub const VLC_LICENSE_LGPL_2_1_PLUS: &str = r#"
\x4c\x69\x63\x65\x6e\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74
\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\x20
\x47\x4e\x55\x20\x4c\x65\x73\x73\x65\x72\x20\x47\x65\x6e\x65\x72
@@ -20,7 +17,7 @@ pub const VLC_LICENSE_LGPL_2_1_PLUS : &str = r#"
#[allow(non_camel_case_types)]
#[allow(unused)]
-extern {
+extern "C" {
pub type module_t;
pub type vlc_param;
}
@@ -28,88 +25,87 @@ extern {
#[allow(non_camel_case_types)]
#[repr(u32)]
pub enum ConfigModule {
- HINT_CATEGORY = 0x02,
- SUBCATEGORY = 0x07,
- SECTION = 0x08,
- ITEM_FLOAT = 1 << 5,
- ITEM_INTEGER = 2 << 5,
- ITEM_RGB = ConfigModule::ITEM_INTEGER as u32 | 0x01,
- ITEM_BOOL = 3 << 5,
- ITEM_STRING = 4 << 5,
- ITEM_PASSWORD = ConfigModule::ITEM_STRING as u32 | 0x01,
- ITEM_KEY = ConfigModule::ITEM_STRING as u32 | 0x02,
- ITEM_MODULE = ConfigModule::ITEM_STRING as u32 | 0x04,
- ITEM_MODULE_CAT = ConfigModule::ITEM_STRING as u32 | 0x05,
- ITEM_MODULE_LIST = ConfigModule::ITEM_STRING as u32 | 0x06,
- ITEM_MODULE_LIST_CAT = ConfigModule::ITEM_STRING as u32 | 0x07,
- ITEM_LOADFILE = ConfigModule::ITEM_STRING as u32 | 0x0C,
- ITEM_SAVEFILE = ConfigModule::ITEM_STRING as u32 | 0x0D,
- ITEM_DIRECTORY = ConfigModule::ITEM_STRING as u32 | 0x0E,
- ITEM_FONT = ConfigModule::ITEM_STRING as u32 | 0x0F,
+ HINT_CATEGORY = 0x02,
+ SUBCATEGORY = 0x07,
+ SECTION = 0x08,
+ ITEM_FLOAT = 1 << 5,
+ ITEM_INTEGER = 2 << 5,
+ ITEM_RGB = ConfigModule::ITEM_INTEGER as u32 | 0x01,
+ ITEM_BOOL = 3 << 5,
+ ITEM_STRING = 4 << 5,
+ ITEM_PASSWORD = ConfigModule::ITEM_STRING as u32 | 0x01,
+ ITEM_KEY = ConfigModule::ITEM_STRING as u32 | 0x02,
+ ITEM_MODULE = ConfigModule::ITEM_STRING as u32 | 0x04,
+ ITEM_MODULE_CAT = ConfigModule::ITEM_STRING as u32 | 0x05,
+ ITEM_MODULE_LIST = ConfigModule::ITEM_STRING as u32 | 0x06,
+ ITEM_MODULE_LIST_CAT = ConfigModule::ITEM_STRING as u32 | 0x07,
+ ITEM_LOADFILE = ConfigModule::ITEM_STRING as u32 | 0x0C,
+ ITEM_SAVEFILE = ConfigModule::ITEM_STRING as u32 | 0x0D,
+ ITEM_DIRECTORY = ConfigModule::ITEM_STRING as u32 | 0x0E,
+ ITEM_FONT = ConfigModule::ITEM_STRING as u32 | 0x0F,
}
#[allow(non_camel_case_types)]
#[repr(i32)]
pub enum ConfigCategory {
- HIDDEN = -1,
- UNKNOWN = 0,
+ HIDDEN = -1,
+ UNKNOWN = 0,
INTERFACE = 1,
- AUDIO = 2,
- VIDEO = 3,
- INPUT = 4,
- SOUT = 5,
- ADVANCED = 6,
- PLAYLIST = 7,
+ AUDIO = 2,
+ VIDEO = 3,
+ INPUT = 4,
+ SOUT = 5,
+ ADVANCED = 6,
+ PLAYLIST = 7,
}
#[allow(non_camel_case_types)]
#[repr(i32)]
pub enum ConfigSubcategory {
- HIDDEN = -1,
- UNKNOWN = 0,
+ HIDDEN = -1,
+ UNKNOWN = 0,
INTERFACE_GENERAL = 101,
- INTERFACE_MAIN = 102,
+ INTERFACE_MAIN = 102,
INTERFACE_CONTROL = 103,
INTERFACE_HOTKEYS = 104,
- AUDIO_GENERAL = 201,
- AUDIO_AOUT = 202,
- AUDIO_AFILTER = 203,
- AUDIO_VISUAL = 204,
+ AUDIO_GENERAL = 201,
+ AUDIO_AOUT = 202,
+ AUDIO_AFILTER = 203,
+ AUDIO_VISUAL = 204,
AUDIO_RESAMPLER = 206,
- VIDEO_GENERAL = 301,
- VIDEO_VOUT = 302,
- VIDEO_VFILTER = 303,
- VIDEO_SUBPIC = 305,
+ VIDEO_GENERAL = 301,
+ VIDEO_VOUT = 302,
+ VIDEO_VFILTER = 303,
+ VIDEO_SUBPIC = 305,
VIDEO_SPLITTER = 306,
- INPUT_GENERAL = 401,
- INPUT_ACCESS = 402,
- INPUT_DEMUX = 403,
- INPUT_VCODEC = 404,
- INPUT_ACODEC = 405,
- INPUT_SCODEC = 406,
+ INPUT_GENERAL = 401,
+ INPUT_ACCESS = 402,
+ INPUT_DEMUX = 403,
+ INPUT_VCODEC = 404,
+ INPUT_ACODEC = 405,
+ INPUT_SCODEC = 406,
INPUT_STREAM_FILTER = 407,
- SOUT_GENERAL = 501,
- SOUT_STREAM = 502,
- SOUT_MUX = 503,
- SOUT_ACO = 504,
+ SOUT_GENERAL = 501,
+ SOUT_STREAM = 502,
+ SOUT_MUX = 503,
+ SOUT_ACO = 504,
SOUT_PACKETIZER = 505,
- SOUT_VOD = 507,
- SOUT_RENDERER = 508,
+ SOUT_VOD = 507,
+ SOUT_RENDERER = 508,
- ADVANCED_MISC = 602,
+ ADVANCED_MISC = 602,
ADVANCED_NETWORK = 603,
PLAYLIST_GENERAL = 701,
- PLAYLIST_SD = 702,
- PLAYLIST_EXPORT = 703,
+ PLAYLIST_SD = 702,
+ PLAYLIST_EXPORT = 703,
}
-
#[derive(Debug, PartialEq, PartialOrd)]
#[allow(non_camel_case_types)]
#[repr(i32)]
@@ -117,7 +113,7 @@ pub enum ModuleProperties {
MODULE_CREATE,
CONFIG_CREATE,
- MODULE_CPU_REQUIREMENT = 0x100,
+ MODULE_CPU_REQUIREMENT = 0x100,
MODULE_SHORTCUT,
MODULE_CAPABILITY,
MODULE_SCORE,
@@ -131,7 +127,7 @@ pub enum ModuleProperties {
MODULE_TEXTDOMAIN,
MODULE_HELP_HTML,
- CONFIG_NAME = 0x1000,
+ CONFIG_NAME = 0x1000,
CONFIG_VALUE,
CONFIG_RANGE,
CONFIG_ADVANCED_RESERVED,
@@ -158,38 +154,66 @@ impl TryFrom<i32> for ModuleProperties {
x if x == ModuleProperties::MODULE_CREATE as i32 => ModuleProperties::MODULE_CREATE,
x if x == ModuleProperties::CONFIG_CREATE as i32 => ModuleProperties::CONFIG_CREATE,
- x if x == ModuleProperties::MODULE_CPU_REQUIREMENT as i32 => ModuleProperties::MODULE_CPU_REQUIREMENT,
+ x if x == ModuleProperties::MODULE_CPU_REQUIREMENT as i32 => {
+ ModuleProperties::MODULE_CPU_REQUIREMENT
+ }
x if x == ModuleProperties::MODULE_SHORTCUT as i32 => ModuleProperties::MODULE_SHORTCUT,
- x if x == ModuleProperties::MODULE_CAPABILITY as i32 => ModuleProperties::MODULE_CAPABILITY,
+ x if x == ModuleProperties::MODULE_CAPABILITY as i32 => {
+ ModuleProperties::MODULE_CAPABILITY
+ }
x if x == ModuleProperties::MODULE_SCORE as i32 => ModuleProperties::MODULE_SCORE,
x if x == ModuleProperties::MODULE_CB_OPEN as i32 => ModuleProperties::MODULE_CB_OPEN,
x if x == ModuleProperties::MODULE_CB_CLOSE as i32 => ModuleProperties::MODULE_CB_CLOSE,
- x if x == ModuleProperties::MODULE_NO_UNLOAD as i32 => ModuleProperties::MODULE_NO_UNLOAD,
+ x if x == ModuleProperties::MODULE_NO_UNLOAD as i32 => {
+ ModuleProperties::MODULE_NO_UNLOAD
+ }
x if x == ModuleProperties::MODULE_NAME as i32 => ModuleProperties::MODULE_NAME,
- x if x == ModuleProperties::MODULE_SHORTNAME as i32 => ModuleProperties::MODULE_SHORTNAME,
- x if x == ModuleProperties::MODULE_DESCRIPTION as i32 => ModuleProperties::MODULE_DESCRIPTION,
+ x if x == ModuleProperties::MODULE_SHORTNAME as i32 => {
+ ModuleProperties::MODULE_SHORTNAME
+ }
+ x if x == ModuleProperties::MODULE_DESCRIPTION as i32 => {
+ ModuleProperties::MODULE_DESCRIPTION
+ }
x if x == ModuleProperties::MODULE_HELP as i32 => ModuleProperties::MODULE_HELP,
- x if x == ModuleProperties::MODULE_TEXTDOMAIN as i32 => ModuleProperties::MODULE_TEXTDOMAIN,
- x if x == ModuleProperties::MODULE_HELP_HTML as i32 => ModuleProperties::MODULE_HELP_HTML,
+ x if x == ModuleProperties::MODULE_TEXTDOMAIN as i32 => {
+ ModuleProperties::MODULE_TEXTDOMAIN
+ }
+ x if x == ModuleProperties::MODULE_HELP_HTML as i32 => {
+ ModuleProperties::MODULE_HELP_HTML
+ }
x if x == ModuleProperties::CONFIG_NAME as i32 => ModuleProperties::CONFIG_NAME,
x if x == ModuleProperties::CONFIG_VALUE as i32 => ModuleProperties::CONFIG_VALUE,
x if x == ModuleProperties::CONFIG_RANGE as i32 => ModuleProperties::CONFIG_RANGE,
- x if x == ModuleProperties::CONFIG_ADVANCED_RESERVED as i32 => ModuleProperties::CONFIG_ADVANCED_RESERVED,
+ x if x == ModuleProperties::CONFIG_ADVANCED_RESERVED as i32 => {
+ ModuleProperties::CONFIG_ADVANCED_RESERVED
+ }
x if x == ModuleProperties::CONFIG_VOLATILE as i32 => ModuleProperties::CONFIG_VOLATILE,
- x if x == ModuleProperties::CONFIG_PERSISTENT_OBSOLETE as i32 => ModuleProperties::CONFIG_PERSISTENT_OBSOLETE,
+ x if x == ModuleProperties::CONFIG_PERSISTENT_OBSOLETE as i32 => {
+ ModuleProperties::CONFIG_PERSISTENT_OBSOLETE
+ }
x if x == ModuleProperties::CONFIG_PRIVATE as i32 => ModuleProperties::CONFIG_PRIVATE,
x if x == ModuleProperties::CONFIG_REMOVED as i32 => ModuleProperties::CONFIG_REMOVED,
- x if x == ModuleProperties::CONFIG_CAPABILITY as i32 => ModuleProperties::CONFIG_CAPABILITY,
+ x if x == ModuleProperties::CONFIG_CAPABILITY as i32 => {
+ ModuleProperties::CONFIG_CAPABILITY
+ }
x if x == ModuleProperties::CONFIG_SHORTCUT as i32 => ModuleProperties::CONFIG_SHORTCUT,
- x if x == ModuleProperties::CONFIG_OLDNAME_OBSOLETE as i32 => ModuleProperties::CONFIG_OLDNAME_OBSOLETE,
+ x if x == ModuleProperties::CONFIG_OLDNAME_OBSOLETE as i32 => {
+ ModuleProperties::CONFIG_OLDNAME_OBSOLETE
+ }
x if x == ModuleProperties::CONFIG_SAFE as i32 => ModuleProperties::CONFIG_SAFE,
x if x == ModuleProperties::CONFIG_DESC as i32 => ModuleProperties::CONFIG_DESC,
- x if x == ModuleProperties::CONFIG_LIST_OBSOLETE as i32 => ModuleProperties::CONFIG_LIST_OBSOLETE,
- x if x == ModuleProperties::CONFIG_ADD_ACTION_OBSOLETE as i32 => ModuleProperties::CONFIG_ADD_ACTION_OBSOLETE,
+ x if x == ModuleProperties::CONFIG_LIST_OBSOLETE as i32 => {
+ ModuleProperties::CONFIG_LIST_OBSOLETE
+ }
+ x if x == ModuleProperties::CONFIG_ADD_ACTION_OBSOLETE as i32 => {
+ ModuleProperties::CONFIG_ADD_ACTION_OBSOLETE
+ }
x if x == ModuleProperties::CONFIG_LIST as i32 => ModuleProperties::CONFIG_LIST,
- x if x == ModuleProperties::CONFIG_LIST_CB_OBSOLETE as i32 => ModuleProperties::CONFIG_LIST_CB_OBSOLETE,
- _ => return Err(())
+ x if x == ModuleProperties::CONFIG_LIST_CB_OBSOLETE as i32 => {
+ ModuleProperties::CONFIG_LIST_CB_OBSOLETE
+ }
+ _ => return Err(()),
};
Ok(prop)
}
@@ -213,7 +237,7 @@ pub type vlc_deactivate = unsafe extern "C" fn(*mut Object);
/// * `Deactivate`: Type for the deactivation function
///
/// ```no_run
-/// use vlcrs_plugin::ModuleProtocol;
+/// use vlcrs_core::plugin::ModuleProtocol;
///
/// /* New trait bringing support for new capabilities in modules. */
///
@@ -245,10 +269,11 @@ pub type vlc_deactivate = unsafe extern "C" fn(*mut Object);
/// fn deactivate_function() -> Option<DeactivateFunction> { None }
/// }
/// ```
-pub trait ModuleProtocol<ModuleType: ?Sized>
-{
+pub trait ModuleProtocol<ModuleType: ?Sized> {
type Activate;
type Deactivate = *mut ();
fn activate_function() -> Self::Activate;
- fn deactivate_function() -> Option<Self::Deactivate> { None }
+ fn deactivate_function() -> Option<Self::Deactivate> {
+ None
+ }
}
=====================================
src/rust/vlcrs-plugin/src/sys.rs → src/rust/vlcrs-core/src/plugin/sys.rs
=====================================
=====================================
src/rust/vlcrs-macros/Cargo.toml
=====================================
@@ -12,7 +12,6 @@ unexpected_cfgs = { level = "warn", check-cfg = ['cfg(vlc_static_plugins)'] }
[dependencies]
vlcrs-core = { path = "../vlcrs-core" }
-vlcrs-plugin = { path = "../vlcrs-plugin" }
quote = "1.0"
syn = { version = "1.0", features = ["full"] }
proc-macro2 = "1.0"
=====================================
src/rust/vlcrs-macros/src/lib.rs
=====================================
@@ -9,7 +9,7 @@ mod module;
/// ```no_run
/// # #![feature(associated_type_defaults)]
/// # use vlcrs_macros::module;
-/// # use vlcrs_plugin::ModuleProtocol;
+/// # use vlcrs_core::plugin::ModuleProtocol;
/// # use std::ffi::{c_int, c_void};
/// # type ActivateFunction = unsafe extern "C" fn() -> c_int;
/// # type DeactivateFunction = unsafe extern "C" fn() -> c_void;
@@ -63,7 +63,7 @@ mod module;
/// ```no_run
/// # #![feature(associated_type_defaults)]
/// # use vlcrs_macros::module;
-/// # use vlcrs_plugin::ModuleProtocol;
+/// # use vlcrs_core::plugin::ModuleProtocol;
/// # use std::ffi::{c_int, c_void};
/// # type ActivateFunction = unsafe extern "C" fn() -> c_int;
/// # type DeactivateFunction = unsafe extern "C" fn() -> c_void;
=====================================
src/rust/vlcrs-macros/src/module.rs
=====================================
@@ -546,7 +546,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
module as _,
- ::vlcrs_plugin::ModuleProperties::MODULE_HELP as _,
+ ::vlcrs_core::plugin::ModuleProperties::MODULE_HELP as _,
#help_with_nul,
)
} != 0
@@ -563,7 +563,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
module as _,
- ::vlcrs_plugin::ModuleProperties::MODULE_SHORTNAME as _,
+ ::vlcrs_core::plugin::ModuleProperties::MODULE_SHORTNAME as _,
#shortname_with_nul,
)
} != 0
@@ -587,7 +587,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
module as _,
- ::vlcrs_plugin::ModuleProperties::MODULE_SHORTCUT as _,
+ ::vlcrs_core::plugin::ModuleProperties::MODULE_SHORTCUT as _,
#shortcuts_with_nul_len,
SHORCUTS.as_ptr(),
)
@@ -605,9 +605,9 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
::std::ptr::null_mut(),
- ::vlcrs_plugin::ModuleProperties::CONFIG_CREATE as _,
- ::vlcrs_plugin::ConfigModule::SUBCATEGORY as i64,
- &mut config as *mut *mut ::vlcrs_plugin::vlc_param,
+ ::vlcrs_core::plugin::ModuleProperties::CONFIG_CREATE as _,
+ ::vlcrs_core::plugin::ConfigModule::SUBCATEGORY as i64,
+ &mut config as *mut *mut ::vlcrs_core::plugin::vlc_param,
)
} != 0
{
@@ -617,8 +617,8 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
config as _,
- ::vlcrs_plugin::ModuleProperties::CONFIG_VALUE as _,
- ::vlcrs_plugin::ConfigSubcategory::#category as i64,
+ ::vlcrs_core::plugin::ModuleProperties::CONFIG_VALUE as _,
+ ::vlcrs_core::plugin::ConfigSubcategory::#category as i64,
)
} != 0
{
@@ -664,9 +664,9 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
::std::ptr::null_mut(),
- ::vlcrs_plugin::ModuleProperties::CONFIG_CREATE as _,
- ::vlcrs_plugin::ConfigModule::SECTION as i64,
- &mut config as *mut *mut ::vlcrs_plugin::vlc_param,
+ ::vlcrs_core::plugin::ModuleProperties::CONFIG_CREATE as _,
+ ::vlcrs_core::plugin::ConfigModule::SECTION as i64,
+ &mut config as *mut *mut ::vlcrs_core::plugin::vlc_param,
)
} != 0
{
@@ -676,7 +676,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
config.cast(),
- ::vlcrs_plugin::ModuleProperties::CONFIG_DESC as _,
+ ::vlcrs_core::plugin::ModuleProperties::CONFIG_DESC as _,
#name_with_nul,
#description_with_nul,
)
@@ -698,9 +698,9 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
};
let item_type = if has_rgb {
- quote! { ::vlcrs_plugin::ConfigModule::ITEM_RGB }
+ quote! { ::vlcrs_core::plugin::ConfigModule::ITEM_RGB }
} else {
- quote! { ::vlcrs_plugin::ConfigModule::ITEM_INTEGER }
+ quote! { ::vlcrs_core::plugin::ConfigModule::ITEM_INTEGER }
};
let range_type = Some(quote! { i64 });
@@ -712,7 +712,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
::std::convert::Into::<::std::ffi::c_double>::into(#default_)
}
};
- let item_type = quote! { ::vlcrs_plugin::ConfigModule::ITEM_FLOAT };
+ let item_type = quote! { ::vlcrs_core::plugin::ConfigModule::ITEM_FLOAT };
let range_type = Some(quote! { ::std::ffi::c_double });
(value, item_type, range_type)
@@ -723,7 +723,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
::std::convert::Into::<i64>::into(#default_)
}
};
- let item_type = quote! { ::vlcrs_plugin::ConfigModule::ITEM_BOOL };
+ let item_type = quote! { ::vlcrs_core::plugin::ConfigModule::ITEM_BOOL };
(value, item_type, None)
} else if param.type_ == "str" {
@@ -739,17 +739,17 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
};
let item_type = if has_font {
- quote! { ::vlcrs_plugin::ConfigModule::ITEM_FONT }
+ quote! { ::vlcrs_core::plugin::ConfigModule::ITEM_FONT }
} else if has_savefile {
- quote! { ::vlcrs_plugin::ConfigModule::ITEM_SAVEFILE }
+ quote! { ::vlcrs_core::plugin::ConfigModule::ITEM_SAVEFILE }
} else if has_loadfile {
- quote! { ::vlcrs_plugin::ConfigModule::ITEM_LOADFILE }
+ quote! { ::vlcrs_core::plugin::ConfigModule::ITEM_LOADFILE }
} else if has_password {
- quote! { ::vlcrs_plugin::ConfigModule::ITEM_PASSWORD }
+ quote! { ::vlcrs_core::plugin::ConfigModule::ITEM_PASSWORD }
} else if has_directory {
- quote! { ::vlcrs_plugin::ConfigModule::ITEM_DIRECTORY }
+ quote! { ::vlcrs_core::plugin::ConfigModule::ITEM_DIRECTORY }
} else {
- quote! { ::vlcrs_plugin::ConfigModule::ITEM_STRING }
+ quote! { ::vlcrs_core::plugin::ConfigModule::ITEM_STRING }
};
(value, item_type, None)
@@ -762,9 +762,9 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
::std::ptr::null_mut(),
- ::vlcrs_plugin::ModuleProperties::CONFIG_CREATE as _,
+ ::vlcrs_core::plugin::ModuleProperties::CONFIG_CREATE as _,
#item_type as i64,
- &mut config as *mut *mut ::vlcrs_plugin::vlc_param,
+ &mut config as *mut *mut ::vlcrs_core::plugin::vlc_param,
)
} != 0
{
@@ -774,7 +774,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
config.cast(),
- ::vlcrs_plugin::ModuleProperties::CONFIG_DESC as _,
+ ::vlcrs_core::plugin::ModuleProperties::CONFIG_DESC as _,
#text_with_nul,
#long_text_with_nul,
)
@@ -786,7 +786,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
config.cast(),
- ::vlcrs_plugin::ModuleProperties::CONFIG_NAME as _,
+ ::vlcrs_core::plugin::ModuleProperties::CONFIG_NAME as _,
#name_with_nul,
)
} != 0
@@ -797,7 +797,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
config.cast(),
- ::vlcrs_plugin::ModuleProperties::CONFIG_VALUE as _,
+ ::vlcrs_core::plugin::ModuleProperties::CONFIG_VALUE as _,
#value,
)
} != 0
@@ -812,7 +812,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
config.cast(),
- ::vlcrs_plugin::ModuleProperties::CONFIG_REMOVED as _,
+ ::vlcrs_core::plugin::ModuleProperties::CONFIG_REMOVED as _,
)
} != 0
{
@@ -830,7 +830,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
config.cast(),
- ::vlcrs_plugin::ModuleProperties::CONFIG_RANGE as _,
+ ::vlcrs_core::plugin::ModuleProperties::CONFIG_RANGE as _,
0,
0xFFFFFF
)
@@ -858,7 +858,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
config.cast(),
- ::vlcrs_plugin::ModuleProperties::CONFIG_RANGE as _,
+ ::vlcrs_core::plugin::ModuleProperties::CONFIG_RANGE as _,
#from,
#to
)
@@ -901,7 +901,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
module as _,
- ::vlcrs_plugin::ModuleProperties::MODULE_CAPABILITY as _,
+ ::vlcrs_core::plugin::ModuleProperties::MODULE_CAPABILITY as _,
#capability_with_nul,
)
} != 0 {
@@ -911,7 +911,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
module as _,
- ::vlcrs_plugin::ModuleProperties::MODULE_SCORE as _,
+ ::vlcrs_core::plugin::ModuleProperties::MODULE_SCORE as _,
::std::convert::Into::<i32>::into(#score),
)
} != 0 {
@@ -922,7 +922,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
module as _,
- ::vlcrs_plugin::ModuleProperties::MODULE_DESCRIPTION as _,
+ ::vlcrs_core::plugin::ModuleProperties::MODULE_DESCRIPTION as _,
#description_with_nul,
)
} != 0
@@ -936,7 +936,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
module as _,
- ::vlcrs_plugin::ModuleProperties::MODULE_CB_OPEN as _,
+ ::vlcrs_core::plugin::ModuleProperties::MODULE_CB_OPEN as _,
#module_open_with_nul,
unsafe {
<#loader as ModuleProtocol<#type_>>::activate_function()
@@ -953,7 +953,7 @@ fn generate_module_code(module_info: &ModuleInfo) -> TokenStream2 {
vlc_set(
opaque,
module as _,
- ::vlcrs_plugin::ModuleProperties::MODULE_CB_CLOSE as _,
+ ::vlcrs_core::plugin::ModuleProperties::MODULE_CB_CLOSE as _,
#module_close_with_nul,
unsafe {
<#loader as ModuleProtocol<#type_>>::deactivate_function().unwrap()
@@ -999,7 +999,7 @@ fn vlc_entry_copyright(module_suffix: Option<&str>) -> TokenStream2 {
#[no_mangle]
#[doc(hidden)]
extern "C" fn #symbol() -> *const u8 {
- ::vlcrs_plugin::VLC_COPYRIGHT_VIDEOLAN.as_ptr()
+ ::vlcrs_core::plugin::VLC_COPYRIGHT_VIDEOLAN.as_ptr()
}
}
}
@@ -1010,7 +1010,7 @@ fn vlc_entry_license(module_suffix: Option<&str>) -> TokenStream2 {
#[no_mangle]
#[doc(hidden)]
extern "C" fn #symbol() -> *const u8 {
- ::vlcrs_plugin::VLC_LICENSE_LGPL_2_1_PLUS.as_ptr()
+ ::vlcrs_core::plugin::VLC_LICENSE_LGPL_2_1_PLUS.as_ptr()
}
}
}
@@ -1081,8 +1081,8 @@ pub fn module(input: TokenStream) -> TokenStream {
vlc_set(
opaque,
module as _,
- ::vlcrs_plugin::ModuleProperties::MODULE_CREATE as _,
- &mut module as *mut *mut ::vlcrs_plugin::module_t,
+ ::vlcrs_core::plugin::ModuleProperties::MODULE_CREATE as _,
+ &mut module as *mut *mut ::vlcrs_core::plugin::module_t,
)
} != 0
{
@@ -1103,19 +1103,19 @@ pub fn module(input: TokenStream) -> TokenStream {
#[no_mangle]
#[doc(hidden)]
extern "C" fn #symbol(
- vlc_set: ::vlcrs_plugin::sys::vlc_set_cb,
+ vlc_set: ::vlcrs_core::plugin::sys::vlc_set_cb,
opaque: *mut ::std::ffi::c_void,
) -> i32 {
- use vlcrs_plugin::ModuleProtocol;
- let mut module: *mut ::vlcrs_plugin::module_t = ::std::ptr::null_mut();
- let mut config: *mut ::vlcrs_plugin::vlc_param = ::std::ptr::null_mut();
+ use vlcrs_core::plugin::ModuleProtocol;
+ let mut module: *mut ::vlcrs_core::plugin::module_t = ::std::ptr::null_mut();
+ let mut config: *mut ::vlcrs_core::plugin::vlc_param = ::std::ptr::null_mut();
if unsafe {
vlc_set(
opaque,
::std::ptr::null_mut(),
- ::vlcrs_plugin::ModuleProperties::MODULE_CREATE as _,
- &mut module as *mut *mut ::vlcrs_plugin::module_t,
+ ::vlcrs_core::plugin::ModuleProperties::MODULE_CREATE as _,
+ &mut module as *mut *mut ::vlcrs_core::plugin::module_t,
)
} != 0
{
@@ -1125,7 +1125,7 @@ pub fn module(input: TokenStream) -> TokenStream {
vlc_set(
opaque,
module as _,
- ::vlcrs_plugin::ModuleProperties::MODULE_NAME as _,
+ ::vlcrs_core::plugin::ModuleProperties::MODULE_NAME as _,
#name_with_nul,
)
} != 0
@@ -1141,8 +1141,8 @@ pub fn module(input: TokenStream) -> TokenStream {
let module_entry_module_name = vlc_entry(Some(&module_suffix));
let module_entry = vlc_entry(None);
- let cfg_static = quote!{ #[cfg(vlc_static_plugins)] };
- let cfg_not_static = quote!{ #[cfg(not(vlc_static_plugins))] };
+ let cfg_static = quote! { #[cfg(vlc_static_plugins)] };
+ let cfg_not_static = quote! { #[cfg(not(vlc_static_plugins))] };
let expanded = quote! {
#type_params
=====================================
src/rust/vlcrs-macros/tests/common/mod.rs
=====================================
@@ -5,31 +5,35 @@
/* This should only be in the tests/ final modules but cargo doesn't
* seem to account them correctly otherwise. */
-use std::{ffi::{c_char, c_int, c_void}, marker::FnPtr};
-use vlcrs_plugin::{vlc_activate, vlc_deactivate};
+use std::{
+ ffi::{c_char, c_int, c_void},
+ marker::FnPtr,
+};
+use vlcrs_core::plugin::{vlc_activate, vlc_deactivate};
-pub struct TestContext<Activate, Deactivate=vlc_deactivate> {
+pub struct TestContext<Activate, Deactivate = vlc_deactivate> {
pub command_cursor: usize,
- pub commands: Vec<vlcrs_plugin::ModuleProperties>,
+ pub commands: Vec<vlcrs_core::plugin::ModuleProperties>,
pub open_cb: Option<Activate>,
pub close_cb: Option<Deactivate>,
}
pub fn load_manifest<Activate, Deactivate>(
context: &mut TestContext<Activate, Deactivate>,
- vlc_entry: extern "C" fn (vlc_set_cb: vlcrs_plugin::sys::vlc_set_cb, opaque: *mut c_void) -> c_int
-)
- -> i32
-{
- use vlcrs_plugin::ModuleProperties;
-
- unsafe extern "C" fn set_cb<T : Sized + FnPtr>(
+ vlc_entry: extern "C" fn(
+ vlc_set_cb: vlcrs_core::plugin::sys::vlc_set_cb,
+ opaque: *mut c_void,
+ ) -> c_int,
+) -> i32 {
+ use vlcrs_core::plugin::ModuleProperties;
+
+ unsafe extern "C" fn set_cb<T: Sized + FnPtr>(
context: *mut c_void,
_target: *mut c_void,
propid: c_int,
- mut args: ...) -> c_int
- {
- let context : *mut TestContext::<T> = context as *mut _;
+ mut args: ...
+ ) -> c_int {
+ let context: *mut TestContext<T> = context as *mut _;
let opcode = ModuleProperties::try_from(propid);
println!("PropId: {:?} ({})", opcode, propid);
@@ -39,23 +43,16 @@ pub fn load_manifest<Activate, Deactivate>(
assert_eq!((*context).commands[(*context).command_cursor], opcode);
(*context).command_cursor += 1;
- if opcode == ModuleProperties::MODULE_CB_OPEN
- {
+ if opcode == ModuleProperties::MODULE_CB_OPEN {
let _name = args.arg::<*const c_char>();
let func = args.arg::<*mut c_void>();
assert_ne!(func, std::ptr::null_mut());
- (*context).open_cb = unsafe {
- Some(std::mem::transmute_copy(&func))
- };
- }
- else if opcode == ModuleProperties::MODULE_CB_CLOSE
- {
+ (*context).open_cb = unsafe { Some(std::mem::transmute_copy(&func)) };
+ } else if opcode == ModuleProperties::MODULE_CB_CLOSE {
let _name = args.arg::<*const c_char>();
let func = args.arg::<*mut c_void>();
assert_ne!(func, std::ptr::null_mut());
- (*context).close_cb = unsafe {
- Some(std::mem::transmute_copy(&func))
- };
+ (*context).close_cb = unsafe { Some(std::mem::transmute_copy(&func)) };
}
0
=====================================
src/rust/vlcrs-macros/tests/module.rs
=====================================
@@ -13,36 +13,31 @@ use vlcrs_macros::module;
use std::ffi::c_int;
-use vlcrs_plugin::{vlc_activate, vlc_deactivate};
+use vlcrs_core::plugin::{vlc_activate, vlc_deactivate};
use vlcrs_core::object::Object;
-unsafe extern "C"
-fn activate_test<T: SpecificCapabilityModule>(_obj: *mut Object) -> c_int
-{
+unsafe extern "C" fn activate_test<T: SpecificCapabilityModule>(_obj: *mut Object) -> c_int {
0
}
-unsafe extern "C"
-fn deactivate_test<T: SpecificCapabilityModule>(_obj: *mut Object)
-{}
+unsafe extern "C" fn deactivate_test<T: SpecificCapabilityModule>(_obj: *mut Object) {}
-use vlcrs_plugin::ModuleProtocol;
+use vlcrs_core::plugin::ModuleProtocol;
pub struct ModuleLoader;
impl<T> ModuleProtocol<T> for ModuleLoader
- where T: SpecificCapabilityModule
+where
+ T: SpecificCapabilityModule,
{
type Activate = vlc_activate;
type Deactivate = vlc_deactivate;
- fn activate_function() -> Self::Activate
- {
+ fn activate_function() -> Self::Activate {
activate_test::<T>
}
- fn deactivate_function() -> Option<Self::Deactivate>
- {
+ fn deactivate_function() -> Option<Self::Deactivate> {
Some(deactivate_test::<T>)
}
}
@@ -68,9 +63,8 @@ module! {
}
#[test]
-fn test_module_load_common_activate()
-{
- use vlcrs_plugin::ModuleProperties;
+fn test_module_load_common_activate() {
+ use vlcrs_core::plugin::ModuleProperties;
let mut context = TestContext::<vlc_activate> {
command_cursor: 0,
=====================================
src/rust/vlcrs-macros/tests/module_default.rs
=====================================
@@ -13,17 +13,14 @@ use common::TestContext;
use vlcrs_macros::module;
use std::ffi::{c_int, CStr};
-use vlcrs_plugin::{ModuleProtocol,vlc_activate};
+use vlcrs_core::plugin::{vlc_activate, ModuleProtocol};
use vlcrs_core::object::Object;
-unsafe extern "C"
-fn activate_filter(_obj: *mut Object) -> c_int
-{
+unsafe extern "C" fn activate_filter(_obj: *mut Object) -> c_int {
0
}
-
//
// Create an implementation loader for the TestFilterCapability
//
@@ -33,12 +30,12 @@ pub struct FilterModuleLoader;
/// Signal the core that we can load modules with this loader
///
impl<T> ModuleProtocol<T> for FilterModuleLoader
- where T: TestNoDeactivateCapability
+where
+ T: TestNoDeactivateCapability,
{
type Activate = vlc_activate;
type Deactivate = *mut ();
- fn activate_function() -> vlc_activate
- {
+ fn activate_function() -> vlc_activate {
activate_filter
}
}
@@ -71,12 +68,11 @@ module! {
// module.
//
#[test]
-fn test_module_load_default_deactivate()
-{
- let version = unsafe{ CStr::from_ptr(vlc_entry_api_version() as *const i8) };
+fn test_module_load_default_deactivate() {
+ let version = unsafe { CStr::from_ptr(vlc_entry_api_version() as *const i8) };
assert_eq!(version, c"4.0.6");
- use vlcrs_plugin::ModuleProperties;
+ use vlcrs_core::plugin::ModuleProperties;
let mut context = TestContext::<vlc_activate> {
command_cursor: 0,
commands: vec![
=====================================
src/rust/vlcrs-macros/tests/module_multiple.rs
=====================================
@@ -12,27 +12,29 @@ use common::TestContext;
use vlcrs_macros::module;
use std::ffi::c_int;
-use vlcrs_plugin::ModuleProtocol;
+use vlcrs_core::plugin::ModuleProtocol;
-extern {
+extern "C" {
// Create a dummy different type to change the activation function.
#[allow(non_camel_case_types)]
pub type vlc_filter_t;
}
#[allow(non_camel_case_types)]
-type vlc_filter_activate = unsafe extern "C" fn (_obj: *mut vlc_filter_t, valid: &mut bool) -> c_int;
+type vlc_filter_activate = unsafe extern "C" fn(_obj: *mut vlc_filter_t, valid: &mut bool) -> c_int;
-unsafe extern "C"
-fn activate_filter<T: TestFilterCapability>(_obj: *mut vlc_filter_t, valid: &mut bool) -> c_int
-{
+unsafe extern "C" fn activate_filter<T: TestFilterCapability>(
+ _obj: *mut vlc_filter_t,
+ valid: &mut bool,
+) -> c_int {
T::open(_obj, valid);
0
}
-unsafe extern "C"
-fn activate_other_filter<T: TestOtherCapability>(_obj: *mut vlc_filter_t, valid: &mut bool) -> c_int
-{
+unsafe extern "C" fn activate_other_filter<T: TestOtherCapability>(
+ _obj: *mut vlc_filter_t,
+ valid: &mut bool,
+) -> c_int {
T::open(_obj, valid);
0
}
@@ -46,11 +48,11 @@ pub struct FilterModuleLoader;
/// Signal the core that we can load modules with this loader
///
impl<T> ModuleProtocol<T> for FilterModuleLoader
- where T: TestFilterCapability
+where
+ T: TestFilterCapability,
{
type Activate = vlc_filter_activate;
- fn activate_function() -> Self::Activate
- {
+ fn activate_function() -> Self::Activate {
activate_filter::<T>
}
}
@@ -71,13 +73,14 @@ impl TestFilterCapability for TestModuleFilter {
}
/* Implement dummy module capability */
-pub trait TestOtherCapability {
+pub trait TestOtherCapability {
fn open(obj: *mut vlc_filter_t, bool: &mut bool);
}
struct TestOtherCapabilityLoader;
impl<T> ModuleProtocol<T> for TestOtherCapabilityLoader
- where T: TestOtherCapability
+where
+ T: TestOtherCapability,
{
type Activate = vlc_filter_activate;
fn activate_function() -> Self::Activate {
@@ -94,7 +97,6 @@ impl TestOtherCapability for TestModuleFilter {
}
}
-
//
// Define a module manifest using this module capability
// and this module.
@@ -123,9 +125,8 @@ module! {
// module.
//
#[test]
-fn test_module_manifest_multiple_capabilities()
-{
- use vlcrs_plugin::ModuleProperties;
+fn test_module_manifest_multiple_capabilities() {
+ use vlcrs_core::plugin::ModuleProperties;
let mut context = TestContext::<vlc_filter_activate> {
command_cursor: 0,
commands: vec![
=====================================
src/rust/vlcrs-macros/tests/module_specific.rs
=====================================
@@ -12,30 +12,33 @@ use common::TestContext;
use vlcrs_macros::module;
use std::ffi::c_int;
-use vlcrs_plugin::ModuleProtocol;
+use vlcrs_core::plugin::ModuleProtocol;
-extern {
+extern "C" {
// Create a dummy different type to change the activation function.
#[allow(non_camel_case_types)]
pub type vlc_filter_t;
}
#[allow(non_camel_case_types)]
-type vlc_filter_activate = unsafe extern "C" fn (_obj: *mut vlc_filter_t, valid: &mut bool) -> c_int;
+type vlc_filter_activate = unsafe extern "C" fn(_obj: *mut vlc_filter_t, valid: &mut bool) -> c_int;
#[allow(non_camel_case_types)]
-type vlc_filter_deactivate = unsafe extern "C" fn (_obj: *mut vlc_filter_t, valid: &mut bool) -> c_int;
+type vlc_filter_deactivate =
+ unsafe extern "C" fn(_obj: *mut vlc_filter_t, valid: &mut bool) -> c_int;
-unsafe extern "C"
-fn activate_filter<T: TestFilterCapability>(_obj: *mut vlc_filter_t, valid: &mut bool) -> c_int
-{
+unsafe extern "C" fn activate_filter<T: TestFilterCapability>(
+ _obj: *mut vlc_filter_t,
+ valid: &mut bool,
+) -> c_int {
T::open(_obj, valid);
0
}
-unsafe extern "C"
-fn deactivate_filter<T: TestFilterCapability>(_obj: *mut vlc_filter_t, valid: &mut bool) -> c_int
-{
+unsafe extern "C" fn deactivate_filter<T: TestFilterCapability>(
+ _obj: *mut vlc_filter_t,
+ valid: &mut bool,
+) -> c_int {
T::close(_obj, valid);
0
}
@@ -49,13 +52,13 @@ pub struct FilterModuleLoader;
/// Signal the core that we can load modules with this loader
///
impl<T> ModuleProtocol<T> for FilterModuleLoader
- where T: TestFilterCapability
+where
+ T: TestFilterCapability,
{
type Activate = vlc_filter_activate;
type Deactivate = vlc_filter_deactivate;
- fn activate_function() -> Self::Activate
- {
+ fn activate_function() -> Self::Activate {
activate_filter::<T>
}
@@ -103,9 +106,8 @@ module! {
// module.
//
#[test]
-fn test_module_load_specific_open()
-{
- use vlcrs_plugin::ModuleProperties;
+fn test_module_load_specific_open() {
+ use vlcrs_core::plugin::ModuleProperties;
let mut context = TestContext::<vlc_filter_activate, vlc_filter_deactivate> {
command_cursor: 0,
commands: vec![
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/f9041c3467f0cd63fac456af5fe840d2137d1b68...3221c89f246cfe42fdceaa3c97e56b568f63b3b6
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/f9041c3467f0cd63fac456af5fe840d2137d1b68...3221c89f246cfe42fdceaa3c97e56b568f63b3b6
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list