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 2024-03-18 16:46:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/wl-screenrec (Old) and /work/SRC/openSUSE:Factory/.wl-screenrec.new.1905 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "wl-screenrec" Mon Mar 18 16:46:23 2024 rev:3 rq:1158921 version:0.1.3 Changes: -------- --- /work/SRC/openSUSE:Factory/wl-screenrec/wl-screenrec.changes 2023-12-28 23:02:33.880857394 +0100 +++ /work/SRC/openSUSE:Factory/.wl-screenrec.new.1905/wl-screenrec.changes 2024-03-18 16:46:42.651721432 +0100 @@ -1,0 +2,8 @@ +Mon Mar 18 08:25:18 UTC 2024 - Joshua Smith <smolsh...@opensuse.org> + +- Update to version 0.1.3: + * Add AV1 codec + * Support for SIGHUP + * General improvements, dependency updates + +------------------------------------------------------------------- Old: ---- wl-screenrec-0.1.2.tar.gz New: ---- wl-screenrec-0.1.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ wl-screenrec.spec ++++++ --- /var/tmp/diff_new_pack.RrvqKT/_old 2024-03-18 16:46:43.483752107 +0100 +++ /var/tmp/diff_new_pack.RrvqKT/_new 2024-03-18 16:46:43.483752107 +0100 @@ -1,7 +1,7 @@ # # spec file for package wl-screenrec # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: wl-screenrec -Version: 0.1.2 +Version: 0.1.3 License: Apache-2.0 Release: 0 Summary: High performance hardware accelerated wlroots screen recorder @@ -40,7 +40,9 @@ %description High performance screen recorder for wlroots Wayland. -Uses dma-buf transfers to get surface, and uses the GPU to do both the pixel format conversion and the encoding, meaning the raw video data never touches the CPU, leaving it free to run your applications. +Uses dma-buf transfers to get surface, and uses the GPU to do both the pixel +format conversion and the encoding, meaning the raw video data never touches the +CPU, leaving it free to run your applications. %prep %autosetup -a1 ++++++ vendor.tar.zst ++++++ Binary files /var/tmp/diff_new_pack.RrvqKT/_old and /var/tmp/diff_new_pack.RrvqKT/_new differ ++++++ wl-screenrec-0.1.2.tar.gz -> wl-screenrec-0.1.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.1.2/Cargo.lock new/wl-screenrec-0.1.3/Cargo.lock --- old/wl-screenrec-0.1.2/Cargo.lock 2023-12-04 04:07:52.000000000 +0100 +++ new/wl-screenrec-0.1.3/Cargo.lock 2024-02-16 06:09:17.000000000 +0100 @@ -13,9 +13,9 @@ [[package]] name = "anstream" -version = "0.6.4" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" dependencies = [ "anstyle", "anstyle-parse", @@ -27,49 +27,43 @@ [[package]] name = "anstyle" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" [[package]] name = "anstyle-parse" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "bindgen" @@ -99,9 +93,9 @@ [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "cc" @@ -129,20 +123,20 @@ [[package]] name = "clang-sys" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" dependencies = [ "glob", "libc", - "libloading 0.7.4", + "libloading", ] [[package]] name = "clap" -version = "4.4.10" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fffed7514f420abec6d183b1d3acfd9099c79c3a10a06ade4f8203f1411272" +checksum = "80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f" dependencies = [ "clap_builder", "clap_derive", @@ -150,9 +144,9 @@ [[package]] name = "clap_builder" -version = "4.4.9" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63361bae7eef3771745f02d8d892bec2fee5f6e34af316ba556e7f97a7069ff1" +checksum = "458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99" dependencies = [ "anstream", "anstyle", @@ -162,21 +156,21 @@ [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.49", ] [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "colorchoice" @@ -190,7 +184,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.1", + "libloading", ] [[package]] @@ -206,10 +200,20 @@ checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" [[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] name = "ffmpeg-next" -version = "6.1.0" +version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f45d337871329d85f5aad1e3d7b09d033cd611d50f734fd6464c731fe7c769bf" +checksum = "4e72c72e8dcf638fb0fb03f033a954691662b5dabeaa3f85a6607d101569fccd" dependencies = [ "bitflags 1.3.2", "ffmpeg-sys-next", @@ -244,9 +248,9 @@ [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" [[package]] name = "human-size" @@ -256,9 +260,9 @@ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "lazy_static" @@ -274,29 +278,25 @@ [[package]] name = "libc" -version = "0.2.150" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", - "winapi", + "windows-sys 0.48.0", ] [[package]] -name = "libloading" -version = "0.8.1" +name = "linux-raw-sys" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" -dependencies = [ - "cfg-if", - "windows-sys", -] +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "log" @@ -306,18 +306,9 @@ [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" - -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "minimal-lexical" @@ -327,23 +318,11 @@ [[package]] name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset", -] - -[[package]] -name = "nix" version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "cfg-if", "libc", ] @@ -376,42 +355,42 @@ [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] [[package]] name = "quick-xml" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] [[package]] name = "regex" -version = "1.10.2" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", @@ -421,9 +400,9 @@ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -443,10 +422,23 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] +name = "rustix" +version = "0.38.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +dependencies = [ + "bitflags 2.4.2", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] name = "ryu" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "scoped-tls" @@ -456,29 +448,29 @@ [[package]] name = "serde" -version = "1.0.193" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.49", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.113" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" dependencies = [ "itoa", "ryu", @@ -487,9 +479,9 @@ [[package]] name = "shlex" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook" @@ -512,15 +504,15 @@ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" [[package]] name = "syn" @@ -535,9 +527,9 @@ [[package]] name = "syn" -version = "2.0.39" +version = "2.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "915aea9e586f80826ee59f8453c1101f9d1c4b3964cd2460185ee8e299ada496" dependencies = [ "proc-macro2", "quote", @@ -546,22 +538,22 @@ [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.49", ] [[package]] @@ -584,13 +576,13 @@ [[package]] name = "wayland-backend" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19152ddd73f45f024ed4534d9ca2594e0ef252c1847695255dae47f34df9fbe4" +checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" dependencies = [ "cc", "downcast-rs", - "nix 0.26.4", + "rustix", "scoped-tls", "smallvec", "wayland-sys", @@ -598,23 +590,23 @@ [[package]] name = "wayland-client" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca7d52347346f5473bf2f56705f360e8440873052e575e55890c4fa57843ed3" +checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" dependencies = [ - "bitflags 2.4.1", - "nix 0.26.4", + "bitflags 2.4.2", + "rustix", "wayland-backend", "wayland-scanner", ] [[package]] name = "wayland-protocols" -version = "0.31.0" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e253d7107ba913923dc253967f35e8561a3c65f914543e46843c88ddd729e21c" +checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "wayland-backend", "wayland-client", "wayland-scanner", @@ -626,7 +618,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "wayland-backend", "wayland-client", "wayland-protocols", @@ -635,9 +627,9 @@ [[package]] name = "wayland-scanner" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb8e28403665c9f9513202b7e1ed71ec56fde5c107816843fb14057910b2c09c" +checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" dependencies = [ "proc-macro2", "quick-xml", @@ -656,34 +648,21 @@ ] [[package]] -name = "winapi" -version = "0.3.9" +name = "windows-sys" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "windows-targets 0.48.5", ] [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] name = "windows-sys" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.0", ] [[package]] @@ -692,13 +671,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -708,44 +702,86 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + +[[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + +[[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + +[[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + +[[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + +[[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + +[[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] name = "wl-screenrec" -version = "0.1.2" +version = "0.1.3" dependencies = [ "anyhow", "clap", @@ -753,7 +789,7 @@ "ffmpeg-next", "human-size", "libc", - "nix 0.27.1", + "nix", "serde_json", "signal-hook", "thiserror", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.1.2/Cargo.toml new/wl-screenrec-0.1.3/Cargo.toml --- old/wl-screenrec-0.1.2/Cargo.toml 2023-12-04 04:07:52.000000000 +0100 +++ new/wl-screenrec-0.1.3/Cargo.toml 2024-02-16 06:09:17.000000000 +0100 @@ -4,7 +4,7 @@ license-file = "LICENSE" homepage = "https://github.com/russelltg/wl-screenrec" repository = "https://github.com/russelltg/wl-screenrec" -version = "0.1.2" +version = "0.1.3" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.1.2/README.md new/wl-screenrec-0.1.3/README.md --- old/wl-screenrec-0.1.2/README.md 2023-12-04 04:07:52.000000000 +0100 +++ new/wl-screenrec-0.1.3/README.md 2024-02-16 06:09:17.000000000 +0100 @@ -138,7 +138,7 @@ -f, --filename <FILENAME> filename to write to. container type is detected from extension [default: screenrecord.mp4] -g, --geometry <GEOMETRY> - geometry to capture, format x,y WxH. Compatiable with the output of `slurp`. Mutually exclusive with --output + geometry to capture, format x,y WxH. Compatible with the output of `slurp`. Mutually exclusive with --output -o, --output <OUTPUT> Which output to record to. Mutually exclusive with --geometry. Defaults to your only display if you only have one [default: ] -v, --verbose... @@ -148,7 +148,7 @@ --low-power <LOW_POWER> [default: auto] [possible values: auto, on, off] --codec <CODEC> - which codec to use. Used in conjunction with --no-hw to determine which encoder to use. Ignored if `encoder` is supplied [default: auto] [possible values: auto, avc, hevc, vp8, vp9] + which video codec to use. Ignored if `--ffmpeg-encoder` is supplied [default: auto] [possible values: auto, avc, hevc, vp8, vp9, av1] --ffmpeg-muxer <FFMPEG_MUXER> Which ffmpeg muxer to use. Guessed from output filename by default --ffmpeg-encoder <FFMPEG_ENCODER> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.1.2/src/main.rs new/wl-screenrec-0.1.3/src/main.rs --- old/wl-screenrec-0.1.2/src/main.rs 2023-12-04 04:07:52.000000000 +0100 +++ new/wl-screenrec-0.1.3/src/main.rs 2024-02-16 06:09:17.000000000 +0100 @@ -1,8 +1,9 @@ extern crate ffmpeg_next as ffmpeg; use std::{ - collections::{BTreeMap, VecDeque}, + collections::{HashMap, VecDeque}, ffi::{c_int, CStr}, + marker::PhantomData, mem::swap, num::ParseIntError, os::fd::{AsRawFd, BorrowedFd}, @@ -32,9 +33,10 @@ media, Packet, Rational, }; use human_size::{Byte, Megabyte, Size, SpecificSize}; -use signal_hook::consts::{SIGINT, SIGTERM, SIGUSR1}; +use signal_hook::consts::{SIGHUP, SIGINT, SIGTERM, SIGUSR1}; use thiserror::Error; use wayland_client::{ + backend::ObjectId, event_created_child, globals::{registry_queue_init, GlobalListContents}, protocol::{ @@ -108,7 +110,7 @@ )] filename: String, - #[clap(long, short, value_parser=parse_geometry, help="geometry to capture, format x,y WxH. Compatiable with the output of `slurp`. Mutually exclusive with --output", allow_hyphen_values=true)] + #[clap(long, short, value_parser=parse_geometry, help="geometry to capture, format x,y WxH. Compatible with the output of `slurp`. Mutually exclusive with --output", allow_hyphen_values=true)] geometry: Option<(i32, i32, u32, u32)>, #[clap( @@ -135,7 +137,7 @@ long, value_enum, default_value_t, - help = "which codec to use. Used in conjunction with --no-hw to determine which encoder to use. Ignored if `encoder` is supplied" + help = "which video codec to use. Ignored if `--ffmpeg-encoder` is supplied" )] codec: Codec, @@ -194,6 +196,7 @@ Hevc, VP8, VP9, + AV1, } #[derive(clap::ValueEnum, Debug, Clone, Default)] @@ -312,6 +315,7 @@ size_pixels: Option<(i32, i32)>, refresh: Option<Rational>, output: WlOutput, + has_recvd_done: bool, } impl PartialOutputInfo { fn complete(&self, fractional_scale: f64) -> Option<OutputInfo> { @@ -354,6 +358,22 @@ } } +#[derive(Default)] +struct PartialOutputInfoWlr { + name: Option<String>, + scale: Option<f64>, + enabled: Option<bool>, +} + +#[derive(Hash, PartialEq, Eq, Clone)] +struct TypedObjectId<T>(ObjectId, PhantomData<T>); + +impl<T> TypedObjectId<T> { + fn new(from: &impl Proxy) -> Self { + TypedObjectId(from.id(), Default::default()) + } +} + struct State { surfaces_owned_by_compositor: VecDeque<( frame::Video, @@ -369,9 +389,9 @@ starting_timestamp: Option<i64>, fps_counter: FpsCounter, args: Args, - output_fractional_scales: BTreeMap<u32, (Option<String>, Option<f64>)>, // key is zwlr_output_head name (object ID) -> (name property, fractional scale) - partial_outputs: BTreeMap<u32, PartialOutputInfo>, // key is xdg-output name (wayland object ID) - outputs: BTreeMap<u32, OutputInfo>, + partial_outputs_wlr: HashMap<TypedObjectId<ZwlrOutputHeadV1>, PartialOutputInfoWlr>, + partial_outputs: HashMap<TypedObjectId<WlOutput>, PartialOutputInfo>, // key is xdg-output name (wayland object ID) + outputs: HashMap<TypedObjectId<WlOutput>, Option<OutputInfo>>, // none for disabled quit_flag: Arc<AtomicBool>, sigusr1_flag: Arc<AtomicBool>, dri_device: Option<String>, @@ -633,28 +653,34 @@ } } -impl Dispatch<WlOutput, u32> for State { +impl Dispatch<WlOutput, ()> for State { fn event( state: &mut Self, - _proxy: &WlOutput, + proxy: &WlOutput, event: <WlOutput as Proxy>::Event, - data: &u32, + _data: &(), _conn: &Connection, qhandle: &QueueHandle<Self>, ) { - if let wl_output::Event::Mode { - refresh, - flags: WEnum::Value(flags), - width, - height, - } = event - { - if flags.contains(Mode::Current) { - state.update_output_info_wl_output(*data, qhandle, |info| { - info.refresh = Some(Rational(refresh, 1000)); - info.size_pixels = Some((width, height)); - }); + let id = TypedObjectId::new(proxy); + match event { + wl_output::Event::Mode { + refresh, + 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)); + }); + } } + wl_output::Event::Done => { + state.done_output_info_wl_output(id, qhandle); + } + _ => (), } } } @@ -671,24 +697,24 @@ } } -impl Dispatch<ZxdgOutputV1, u32> for State { +impl Dispatch<ZxdgOutputV1, TypedObjectId<WlOutput>> for State { fn event( state: &mut Self, _proxy: &ZxdgOutputV1, event: <ZxdgOutputV1 as Proxy>::Event, - data: &u32, + out_id: &TypedObjectId<WlOutput>, _conn: &Connection, - qhandle: &QueueHandle<Self>, + _qhandle: &QueueHandle<Self>, ) { match event { zxdg_output_v1::Event::Name { name } => { - state.update_output_info_wl_output(*data, qhandle, |info| info.name = Some(name)); + state.update_output_info_wl_output(out_id, |info| info.name = Some(name)); } zxdg_output_v1::Event::LogicalPosition { x, y } => { - state.update_output_info_wl_output(*data, qhandle, |info| info.loc = Some((x, y))); + state.update_output_info_wl_output(out_id, |info| info.loc = Some((x, y))); } zxdg_output_v1::Event::LogicalSize { width, height } => { - state.update_output_info_wl_output(*data, qhandle, |info| { + state.update_output_info_wl_output(out_id, |info| { info.logical_size = Some((width, height)) }); } @@ -723,15 +749,18 @@ event: <ZwlrOutputHeadV1 as Proxy>::Event, _data: &(), _conn: &Connection, - qhandle: &QueueHandle<Self>, + _qhandle: &QueueHandle<Self>, ) { - let id = proxy.id().protocol_id(); + let id = TypedObjectId::new(proxy); match event { zwlr_output_head_v1::Event::Name { name } => { - state.update_output_info_zwlr_head(id, qhandle, |data| data.0 = Some(name)); + state.update_output_info_zwlr_head(id, |data| data.name = Some(name)); } zwlr_output_head_v1::Event::Scale { scale } => { - state.update_output_info_zwlr_head(id, qhandle, |data| data.1 = Some(scale)); + state.update_output_info_zwlr_head(id, |data| data.scale = Some(scale)); + } + zwlr_output_head_v1::Event::Enabled { enabled } => { + state.update_output_info_zwlr_head(id, |data| data.enabled = Some(enabled != 0)); } _ => {} } @@ -815,37 +844,23 @@ let eq: QueueHandle<State> = queue.handle(); let man: ZwlrScreencopyManagerV1 = gm - .bind( - &eq, - ZwlrScreencopyManagerV1::interface().version - ..=ZwlrScreencopyManagerV1::interface().version, - (), - ) + .bind(&eq, 3..=ZwlrScreencopyManagerV1::interface().version, ()) .unwrap(); - let dma: ZwpLinuxDmabufV1 = gm - .bind( - &eq, - ZwpLinuxDmabufV1::interface().version..=ZwpLinuxDmabufV1::interface().version, - (), - ) + .bind(&eq, 4..=ZwpLinuxDmabufV1::interface().version, ()) .unwrap(); let registry = display.get_registry(&eq, ()); let xdg_output_man: ZxdgOutputManagerV1 = gm - .bind( - &eq, - ZxdgOutputManagerV1::interface().version..=ZxdgOutputManagerV1::interface().version, - (), - ) + .bind(&eq, 3..=ZxdgOutputManagerV1::interface().version, ()) .unwrap(); // bind to get events so we can get the fractional scale let _wlr_output_man: ZwlrOutputManagerV1 = gm .bind( &eq, - 1..=4, + 1..=ZwlrOutputManagerV1::interface().version, (), ) .expect("Your compositor does not seem to support the wlr-output-manager protocol. wl-screenrec requires a wlroots based compositor like sway or Hyprland"); @@ -869,17 +884,17 @@ None // will be filled by the callback }; - let mut partial_outputs = BTreeMap::new(); + let mut partial_outputs = HashMap::new(); for g in gm.contents().clone_list() { if g.interface == WlOutput::interface().name { let output: WlOutput = - registry.bind(g.name, WlOutput::interface().version, &eq, g.name); + registry.bind(g.name, WlOutput::interface().version, &eq, ()); // query so we get the dispatch callbacks - let _xdg = xdg_output_man.get_xdg_output(&output, &eq, g.name); + let _xdg = xdg_output_man.get_xdg_output(&output, &eq, TypedObjectId::new(&output)); partial_outputs.insert( - g.name, + TypedObjectId::new(&output), PartialOutputInfo { name: None, loc: None, @@ -887,6 +902,7 @@ size_pixels: None, refresh: None, output, + has_recvd_done: false, }, ); } @@ -903,8 +919,8 @@ args, wl_output: None, partial_outputs, - outputs: BTreeMap::new(), - output_fractional_scales: BTreeMap::new(), + outputs: HashMap::new(), + partial_outputs_wlr: HashMap::new(), quit_flag, sigusr1_flag, dri_device, @@ -922,75 +938,114 @@ fn update_output_info_wl_output( &mut self, - wl_output_name: u32, - qhandle: &QueueHandle<State>, + id: &TypedObjectId<WlOutput>, f: impl FnOnce(&mut PartialOutputInfo), ) { - let output = self.partial_outputs.get_mut(&wl_output_name).unwrap(); + let output = self.partial_outputs.get_mut(id).unwrap(); f(output); + } + + fn done_output_info_wl_output( + &mut self, + id: TypedObjectId<WlOutput>, + qhandle: &QueueHandle<State>, + ) { + let output = self.partial_outputs.get_mut(&id).unwrap(); + + // for each output, we will get 2 done events + // * when we create the WlOutput the first time + // * then again when we probe the xdg output + // we only care about the second one, as we want the xdg output info + if !output.has_recvd_done { + output.has_recvd_done = true; + return; + } + + let name = match &output.name { + Some(name) => name, + None => { + eprintln!( + "compositor did not provide name for wl_output {}, strange", + id.0.protocol_id() + ); + "<unknown>" + } + }; // see if the associated zwlr_head has been probed yet - if let Some(name) = &output.name { - if let Some((_head_name, (_name, Some(scale)))) = self - .output_fractional_scales - .iter() - .find(|elem| elem.1 .0.as_ref() == Some(name)) - { - if let Some(info) = output.complete(*scale) { - self.outputs.insert(wl_output_name, info); - self.start_if_output_probe_complete(qhandle); + if let Some(( + _head_name, + PartialOutputInfoWlr { + scale: Some(scale), + enabled: Some(enabled), + .. + }, + )) = self + .partial_outputs_wlr + .iter() + .find(|elem| elem.1.name.as_deref() == Some(name)) + { + if let Some(info) = output.complete(*scale) { + if *enabled { + self.outputs.insert(id, Some(info)); + } else { + self.outputs.insert(id, None); } } } + + self.start_if_output_probe_complete(qhandle); } fn update_output_info_zwlr_head( &mut self, - zwlr_head_name: u32, - qhandle: &QueueHandle<State>, - f: impl FnOnce(&mut (Option<String>, Option<f64>)), + id: TypedObjectId<ZwlrOutputHeadV1>, + f: impl FnOnce(&mut PartialOutputInfoWlr), ) { - let output = self - .output_fractional_scales - .entry(zwlr_head_name) - .or_default(); + let output = self.partial_outputs_wlr.entry(id).or_default(); f(output); + } + + fn zwlr_ouptut_info_done(&mut self, qhandle: &QueueHandle<State>) { + for wlr_info in self.partial_outputs_wlr.values() { + let enabled = match wlr_info.enabled { + None => { + eprintln!( + "compositor did not report if output {} is enabled, strange", + wlr_info.name.as_deref().unwrap_or("<unknown>") + ); + true + } + Some(enabled) => enabled, + }; + + let name = match &wlr_info.name { + Some(name) => name, + None => { + eprintln!("compositor did not report output name, strange"); + "<unknown>" + } + }; - if let (Some(name), Some(fractional_scale)) = output { if let Some((wl_output_name, partial_output)) = self .partial_outputs .iter() - .find(|po| po.1.name.as_ref() == Some(name)) + .find(|po| po.1.name.as_deref() == Some(name)) { - if let Some(info) = partial_output.complete(*fractional_scale) { - self.outputs.insert(*wl_output_name, info); - self.start_if_output_probe_complete(qhandle); + if let Some(info) = partial_output.complete(wlr_info.scale.unwrap_or(1.)) { + if enabled { + if wlr_info.scale.is_none() { + eprintln!("compositor did not report fractional scale for enabled output {name}"); + } + self.outputs.insert(wl_output_name.clone(), Some(info)); + } else { + self.outputs.insert(wl_output_name.clone(), None); + } } } } - } - fn zwlr_ouptut_info_done(&mut self, qhandle: &QueueHandle<State>) { - let keys = self - .output_fractional_scales - .keys() - .copied() - .collect::<Vec<_>>(); - for k in keys { - self.update_output_info_zwlr_head(k, qhandle, |(name, scale)| { - if name.is_none() { - eprintln!("compositor did not report output name, strange"); - *name = Some("<unknown>".to_owned()); - } - if scale.is_none() { - eprintln!( - "compositor did not report scale for output {}, assuming one", - name.as_deref().unwrap() - ); - *scale = Some(1.); - } - }); - } + self.start_if_output_probe_complete(qhandle); } fn start_if_output_probe_complete(&mut self, qhandle: &QueueHandle<State>) { @@ -1001,21 +1056,25 @@ return; } + let enabled_outputs: Vec<_> = self.outputs.iter().flat_map(|(_, o)| o).collect(); + let (output, (x, y), (w, h)) = match (self.args.geometry, self.args.output.as_str()) { (None, "") => { // default case, capture whole monitor - if self.outputs.len() != 1 { - eprintln!("multiple displays and no --geometry or --output supplied, bailing"); + if enabled_outputs.len() != 1 { + eprintln!( + "multiple enabled displays and no --geometry or --output supplied, bailing" + ); self.quit_flag.store(true, Ordering::SeqCst); return; } - let output = self.outputs.iter().next().unwrap().1; + let output = enabled_outputs[0]; (output, (0, 0), output.size_pixels) } (None, disp) => { - // --output but no --geoemetry - if let Some((_, output)) = self.outputs.iter().find(|(_, i)| i.name == disp) { + // --output but no --geometry + if let Some(&output) = enabled_outputs.iter().find(|i| i.name == disp) { (output, (0, 0), output.size_pixels) } else { eprintln!("display {} not found, bailing", disp); @@ -1027,7 +1086,7 @@ let w = w as i32; let h = h as i32; // --geometry but no --output - if let Some((_, output)) = self.outputs.iter().find(|(_, i)| { + if let Some(&output) = enabled_outputs.iter().find(|i| { x >= i.loc.0 && x + w <= i.loc.0 + i.logical_size.0 && // x within y >= i.loc.1 && y + h <= i.loc.1 + i.logical_size.1 // y within }) { @@ -1096,6 +1155,7 @@ codec::Id::H265 | codec::Id::HEVC => Some("hevc_vaapi"), codec::Id::VP8 => Some("vp8_vaapi"), codec::Id::VP9 => Some("vp9_vaapi"), + codec::Id::AV1 => Some("av1_vaapi"), _ => None, } } @@ -1176,6 +1236,7 @@ Codec::Hevc => codec::Id::HEVC, Codec::VP8 => codec::Id::VP8, Codec::VP9 => codec::Id::VP9, + Codec::AV1 => codec::Id::AV1, }; let maybe_hw_codec = if args.hw { @@ -1668,6 +1729,7 @@ signal_hook::flag::register(SIGINT, Arc::clone(&quit_flag)).unwrap(); signal_hook::flag::register(SIGTERM, Arc::clone(&quit_flag)).unwrap(); + signal_hook::flag::register(SIGHUP, Arc::clone(&quit_flag)).unwrap(); signal_hook::flag::register(SIGUSR1, Arc::clone(&sigusr1_flag)).unwrap(); let args = Args::parse();