Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package wl-screenrec for openSUSE:Factory checked in at 2026-08-24 12:11:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/wl-screenrec (Old) and /work/SRC/openSUSE:Factory/.wl-screenrec.new.1258 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "wl-screenrec" Mon Aug 24 12:11:12 2026 rev:11 rq:1373268 version:0.3.2+git.20260810T091406.73b5890 Changes: -------- --- /work/SRC/openSUSE:Factory/wl-screenrec/wl-screenrec.changes 2026-07-13 14:26:35.068375856 +0200 +++ /work/SRC/openSUSE:Factory/.wl-screenrec.new.1258/wl-screenrec.changes 2026-08-24 12:16:46.904025372 +0200 @@ -1,0 +2,9 @@ +Sun Aug 23 15:53:28 UTC 2026 - llyyr <[email protected]> + +- Update to version 0.3.1+git.20260810T091406.73b5890: + * actually update version in cargo.toml this time + * fix compile on ffmpeg 9 + * clippy lints + * update to ffmpeg crate 9.0 + +------------------------------------------------------------------- Old: ---- wl-screenrec-0.2.0+git.20260517T151356.0925290.tar.gz New: ---- wl-screenrec-0.3.2+git.20260810T091406.73b5890.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ wl-screenrec.spec ++++++ --- /var/tmp/diff_new_pack.dCM9PR/_old 2026-08-24 12:16:48.017065014 +0200 +++ /var/tmp/diff_new_pack.dCM9PR/_new 2026-08-24 12:16:48.021065156 +0200 @@ -17,7 +17,7 @@ Name: wl-screenrec -Version: 0.2.0+git.20260517T151356.0925290 +Version: 0.3.2+git.20260810T091406.73b5890 License: Apache-2.0 Release: 0 Summary: High performance hardware accelerated wlroots screen recorder ++++++ _service ++++++ --- /var/tmp/diff_new_pack.dCM9PR/_old 2026-08-24 12:16:48.099067934 +0200 +++ /var/tmp/diff_new_pack.dCM9PR/_new 2026-08-24 12:16:48.106068183 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/russelltg/wl-screenrec</param> <param name="scm">git</param> <param name="revision">main</param> - <param name="versionprefix">0.2.0+git</param> + <param name="versionprefix">0.3.2+git</param> <param name="versionformat">%ci.%h</param> <param name="changesgenerate">enable</param> </service> ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/wl-screenrec/vendor.tar.zst /work/SRC/openSUSE:Factory/.wl-screenrec.new.1258/vendor.tar.zst differ: char 7, line 1 ++++++ wl-screenrec-0.2.0+git.20260517T151356.0925290.tar.gz -> wl-screenrec-0.3.2+git.20260810T091406.73b5890.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.2.0+git.20260517T151356.0925290/.cargo/.config new/wl-screenrec-0.3.2+git.20260810T091406.73b5890/.cargo/.config --- old/wl-screenrec-0.2.0+git.20260517T151356.0925290/.cargo/.config 1970-01-01 01:00:00.000000000 +0100 +++ new/wl-screenrec-0.3.2+git.20260810T091406.73b5890/.cargo/.config 2026-08-10 17:14:06.000000000 +0200 @@ -0,0 +1,2 @@ +[env] +BINDGEN_EXTRA_CLANG_ARGS = "-include /usr/include/vulkan/vulkan.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.2.0+git.20260517T151356.0925290/Cargo.lock new/wl-screenrec-0.3.2+git.20260810T091406.73b5890/Cargo.lock --- old/wl-screenrec-0.2.0+git.20260517T151356.0925290/Cargo.lock 2026-05-17 23:13:56.000000000 +0200 +++ new/wl-screenrec-0.3.2+git.20260810T091406.73b5890/Cargo.lock 2026-08-10 17:14:06.000000000 +0200 @@ -90,15 +90,15 @@ "quote", "regex", "rustc-hash", - "shlex", + "shlex 1.3.0", "syn", ] [[package]] name = "bitflags" -version = "2.11.1" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "bytemuck" @@ -122,12 +122,12 @@ [[package]] name = "cc" -version = "1.2.62" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" +checksum = "5d262e149917187838d5b42777c8253bcb64500067342904e7d429499a6f277e" dependencies = [ "find-msvc-tools", - "shlex", + "shlex 2.0.1", ] [[package]] @@ -291,9 +291,9 @@ [[package]] name = "ffmpeg-next" -version = "8.1.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c4bd5ab1ac61f29c634df1175d350ded29cf74c3c6d4f7030431a5ae3c7d5d" +checksum = "6380599799e175191eb7ffe82c97f36a2a90a36cbc54c738a903e5287d7f516a" dependencies = [ "bitflags", "ffmpeg-sys-next", @@ -302,10 +302,10 @@ [[package]] name = "ffmpeg-sys-next" -version = "8.1.0" -source = "git+https://github.com/russelltg/rust-ffmpeg-sys?branch=vulkan#233554c454386b5a3493a20d2c1c4331e8de1090" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b939bf79dd5949412a4b81cfe21a07f48ea21b47fcbb5f57816c8c2de5ae30b" dependencies = [ - "ash", "bindgen", "cc", "libc", @@ -316,9 +316,9 @@ [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "26b73573e6edcd2af0cdf47bd6cb58f0b3839491263c314eaad1ccf24430e1de" [[package]] name = "glob" @@ -621,6 +621,12 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] name = "signal-hook" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -869,7 +875,7 @@ [[package]] name = "wl-screenrec" -version = "0.2.0" +version = "0.3.2" dependencies = [ "anyhow", "ash", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.2.0+git.20260517T151356.0925290/Cargo.toml new/wl-screenrec-0.3.2+git.20260810T091406.73b5890/Cargo.toml --- old/wl-screenrec-0.2.0+git.20260517T151356.0925290/Cargo.toml 2026-05-17 23:13:56.000000000 +0200 +++ new/wl-screenrec-0.3.2+git.20260810T091406.73b5890/Cargo.toml 2026-08-10 17:14:06.000000000 +0200 @@ -4,7 +4,7 @@ license-file = "LICENSE" homepage = "https://github.com/russelltg/wl-screenrec" repository = "https://github.com/russelltg/wl-screenrec" -version = "0.2.0" +version = "0.3.2" edition = "2024" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -27,8 +27,8 @@ "staging", ] } wayland-protocols-wlr = { version = "0.3", features = ["client"] } -ffmpeg-next = "8.0.0" -ffmpeg-sys-next = "8.0.1" # need direct dep on -sys to get metadata to consume in build.rs +ffmpeg-next = "9.0.0" +ffmpeg-sys-next = "9.0.0" # need direct dep on -sys to get metadata to consume in build.rs thiserror = "2.0.3" human-size = "0.4.2" anyhow = "1.0.71" @@ -43,10 +43,6 @@ signal-hook = "0.4.3" signal-hook-mio = { version = "0.3.0", features = ["support-v1_0"] } -[patch.crates-io] -# Waiting on https://github.com/zmwangx/rust-ffmpeg-sys/pull/91 -ffmpeg-sys-next = { git = "https://github.com/russelltg/rust-ffmpeg-sys", branch = "vulkan" } - # Uncomment for local dev # ffmpeg-next = { path = "../rust-ffmpeg" } # ffmpeg-sys-next = { path = "../rust-ffmpeg-sys" } @@ -60,7 +56,6 @@ [features] experimental-vulkan = [ - "ffmpeg-sys-next/vulkan", "ash" ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.2.0+git.20260517T151356.0925290/src/avhw.rs new/wl-screenrec-0.3.2+git.20260810T091406.73b5890/src/avhw.rs --- old/wl-screenrec-0.2.0+git.20260517T151356.0925290/src/avhw.rs 2026-05-17 23:13:56.000000000 +0200 +++ new/wl-screenrec-0.3.2+git.20260810T091406.73b5890/src/avhw.rs 2026-08-10 17:14:06.000000000 +0200 @@ -129,6 +129,8 @@ let sts = if self.fmt == Pixel::VULKAN { #[cfg(feature = "experimental-vulkan")] { + use std::mem; + use ash::vk; use ffmpeg::ffi::{ AVHWDeviceContext, AVVulkanDeviceContext, AVVulkanFramesContext, @@ -139,9 +141,26 @@ let inst = ash::Instance::load( &ash::StaticFn { - get_instance_proc_addr: vk_hwctx.get_proc_addr, + get_instance_proc_addr: mem::transmute::< + unsafe extern "C" fn( + *mut ffmpeg_sys_next::VkInstance_T, + *const i8, + ) + -> std::option::Option<unsafe extern "C" fn()>, + unsafe extern "system" fn( + ash::vk::Instance, + *const i8, + ) + -> std::option::Option< + unsafe extern "system" fn(), + >, + >( + vk_hwctx.get_proc_addr.unwrap() + ), }, - vk_hwctx.inst, + mem::transmute::<*mut ffmpeg_sys_next::VkInstance_T, ash::vk::Instance>( + vk_hwctx.inst, + ), ); let pixfmt_vk = vkfmt_from_pixfmt(pixfmt)?; @@ -161,7 +180,10 @@ Tiling::Drm(modifiers) => { let modifiers_filtered = vk_filter_drm_modifiers( inst, - vk_hwctx.phys_dev, + mem::transmute::< + *mut ffmpeg_sys_next::VkPhysicalDevice_T, + ash::vk::PhysicalDevice, + >(vk_hwctx.phys_dev), pixfmt_vk, vk_usage, modifiers, @@ -188,8 +210,8 @@ let vk_ptr = &mut *(hwframe_casted.hwctx as *mut AVVulkanFramesContext); - vk_ptr.tiling = tiling; - vk_ptr.usage = vk_usage; + vk_ptr.tiling = tiling.as_raw(); + vk_ptr.usage = vk_usage.as_raw() as i32; vk_ptr.create_pnext = vk_bufs.as_mut().chain_ptr(); vk = Some(vk_bufs); @@ -246,7 +268,7 @@ if res.is_null() { Err(ffmpeg::Error::InvalidData) } else { - Ok(*res) + Ok(ash::vk::Format::from_raw(*res)) } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.2.0+git.20260517T151356.0925290/src/main.rs new/wl-screenrec-0.3.2+git.20260810T091406.73b5890/src/main.rs --- old/wl-screenrec-0.2.0+git.20260517T151356.0925290/src/main.rs 2026-05-17 23:13:56.000000000 +0200 +++ new/wl-screenrec-0.3.2+git.20260810T091406.73b5890/src/main.rs 2026-08-10 17:14:06.000000000 +0200 @@ -834,13 +834,11 @@ flags: WEnum::Value(flags), width, height, - } => { - if flags.contains(Mode::Current) { - state.update_output_info_wl_output(&id, |info| { - info.refresh = Some(Rational(refresh, 1000)); - info.size_pixels = Some((width, height)); - }); - } + } if flags.contains(Mode::Current) => { + state.update_output_info_wl_output(&id, |info| { + info.refresh = Some(Rational(refresh, 1000)); + info.size_pixels = Some((width, height)); + }); } wl_output::Event::Geometry { transform, .. } => match transform { WEnum::Value(v) => { @@ -1255,7 +1253,7 @@ info!("output probe complete: {:?}", p.outputs); - let enabled_outputs: Vec<_> = p.outputs.iter().flat_map(|(_, o)| o).collect(); + let enabled_outputs: Vec<_> = p.outputs.values().flatten().collect(); let (output, roi) = match (self.args.geometry, self.args.output.as_str()) { (None, "") => { @@ -1695,12 +1693,16 @@ } } -fn get_encoder(args: &Args, format: &Output) -> anyhow::Result<ffmpeg::Codec> { +fn get_encoder(args: &Args, format: &Output) -> anyhow::Result<ffmpeg::codec::Video> { Ok(if let Some(encoder_name) = &args.ffmpeg_encoder { ffmpeg_next::encoder::find_by_name(encoder_name).ok_or_else(|| { format_err!( "Encoder {encoder_name} specified with --ffmpeg-encoder could not be instantiated" ) + })?.video().map_err(|_| { + format_err!( + "Encoder {encoder_name} specified with --ffmpeg-encoder is not a video encoder" + ) })? } else { let codec_id = match args.codec { @@ -1741,11 +1743,23 @@ } }, } + .video() + .map_err(|_| { + format_err!( + "Encoder for codec {codec_id:?} is not a video encoder, this is probably a bug" + ) + })? }) } -fn get_enc_pixfmt(args: &Args, encoder: &ffmpeg::Codec) -> anyhow::Result<EncodePixelFormat> { - let supported_formats = supported_formats(encoder); +fn get_enc_pixfmt( + args: &Args, + encoder: &ffmpeg::codec::Video, +) -> anyhow::Result<EncodePixelFormat> { + let supported_formats = encoder + .formats() + .map(|f| f.collect::<Vec<_>>()) + .unwrap_or_default(); Ok(if supported_formats.is_empty() { match args.encode_pixfmt { Some(fmt) => EncodePixelFormat::Sw(fmt), @@ -2204,18 +2218,6 @@ } } -fn supported_formats(codec: &ffmpeg::Codec) -> Vec<Pixel> { - unsafe { - let mut frmts = Vec::new(); - let mut fmt_ptr = (*codec.as_ptr()).pix_fmts; - while !fmt_ptr.is_null() && *fmt_ptr as c_int != -1 { - frmts.push(Pixel::from(*fmt_ptr)); - fmt_ptr = fmt_ptr.add(1); - } - frmts - } -} - struct InitialProbeState; impl Dispatch<WlRegistry, GlobalListContents> for InitialProbeState { fn event(
