diff --git a/.github/workflows/image.yml b/.github/workflows/image.yml index e54645692802..18b0791bb3c5 100644 --- a/.github/workflows/image.yml +++ b/.github/workflows/image.yml @@ -16,7 +16,7 @@ on: jobs: docker: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - name: Login to GitHub Container Registry uses: docker/login-action@v3 diff --git a/.typos.toml b/.typos.toml index 0313c2fa76be..bfea46492d61 100644 --- a/.typos.toml +++ b/.typos.toml @@ -15,3 +15,4 @@ ot = "ot" siz = "siz" vai = "vai" guid = "guid" +typ = "typ" diff --git a/Cargo.lock b/Cargo.lock index 5e5e92a5a68d..21577692368d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -51,18 +51,18 @@ checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "basic-toml" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8" +checksum = "ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a" dependencies = [ "serde", ] [[package]] name = "bitflags" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" [[package]] name = "bumpalo" @@ -102,9 +102,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.14" +version = "1.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9" +checksum = "32db95edf998450acc7881c932f94cd9b05c87b4b2599e8bab064753da4acfd1" dependencies = [ "shlex", ] @@ -154,18 +154,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.29" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acebd8ad879283633b343856142139f2da2317c96b05b4dd6181c61e2480184" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.29" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ba32cbda51c7e1dfd49acc1457ba1a7dec5b64fe360e828acb13ca8dc9c2f9" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" dependencies = [ "anstyle", "clap_lex", @@ -173,9 +173,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "criterion" @@ -246,9 +246,9 @@ checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "equivalent" @@ -258,9 +258,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" dependencies = [ "libc", "windows-sys 0.59.0", @@ -415,9 +415,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", @@ -426,14 +426,14 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -581,19 +581,18 @@ dependencies = [ [[package]] name = "half" -version = "2.4.1" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" dependencies = [ - "cfg-if", "crunchy", ] [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" [[package]] name = "heck" @@ -603,15 +602,15 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" [[package]] name = "indexmap" -version = "2.7.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", "hashbrown", @@ -619,9 +618,9 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.15" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ "hermit-abi", "libc", @@ -639,9 +638,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" @@ -655,15 +654,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.169" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "linux-raw-sys" -version = "0.4.15" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "lock_api" @@ -677,9 +676,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.25" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "memchr" @@ -698,15 +697,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.3" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "oorandom" -version = "11.1.4" +version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[package]] name = "pango" @@ -793,9 +792,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "plotters" @@ -827,31 +826,37 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "rayon" version = "1.10.0" @@ -874,9 +879,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" dependencies = [ "bitflags", ] @@ -927,13 +932,13 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.9" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e75ec5e92c4d8aede845126adc388046234541629e76029599ed35a003c7ed24" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", "untrusted 0.9.0", "windows-sys 0.52.0", @@ -941,9 +946,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.44" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ "bitflags", "errno", @@ -975,15 +980,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "ryu" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -996,9 +1001,9 @@ dependencies = [ [[package]] name = "scc" -version = "2.3.3" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea091f6cac2595aa38993f04f4ee692ed43757035c36e67c180b6828356385b1" +checksum = "22b2d775fb28f245817589471dd49c5edf64237f4a19d10ce9a92ff4651a27f4" dependencies = [ "sdd", ] @@ -1015,30 +1020,30 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.9", + "ring 0.17.14", "untrusted 0.9.0", ] [[package]] name = "sdd" -version = "3.0.7" +version = "3.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b07779b9b918cc05650cb30f404d4d7835d26df37c235eded8a6832e2fb82cca" +checksum = "584e070911c7017da6cb2eb0788d09f43d789029b5877d3e5ecc8acf86ceee21" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", @@ -1047,9 +1052,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -1114,9 +1119,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" [[package]] name = "spin" @@ -1126,9 +1131,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "syn" -version = "2.0.98" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -1156,13 +1161,12 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.16.0" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "cfg-if", "fastrand", - "getrandom 0.3.1", + "getrandom 0.3.3", "once_cell", "rustix", "windows-sys 0.59.0", @@ -1189,9 +1193,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.20" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" dependencies = [ "serde", "serde_spanned", @@ -1201,18 +1205,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ "indexmap", "serde", @@ -1238,9 +1242,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "untrusted" @@ -1278,9 +1282,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi" -version = "0.13.3+wasi-0.2.2" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" dependencies = [ "wit-bindgen-rt", ] @@ -1359,7 +1363,7 @@ version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" dependencies = [ - "ring 0.17.9", + "ring 0.17.14", "untrusted 0.9.0", ] @@ -1487,18 +1491,18 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.7.2" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59690dea168f2198d1a3b0cac23b8063efcd11012f10ae4698f284808c8ef603" +checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" dependencies = [ "memchr", ] [[package]] name = "wit-bindgen-rt" -version = "0.33.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ "bitflags", ] diff --git a/Dockerfile b/Dockerfile index d847c4c58add..d1430bc6542f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM fedora:latest RUN dnf update -y && \ dnf install wget git meson cmake gcc gcc-c++ \ - libpng-devel turbojpeg-devel libXext-devel libXrender-devel gobject-introspection-devel python3-packaging -y && \ + freetype-devel fontconfig-devel libxml2-devel fribidi-devel libpng-devel libjpeg-turbo-devel libXext-devel libXrender-devel gobject-introspection-devel python3-packaging -y && \ dnf clean all -y RUN git clone https://gitlab.gnome.org/GNOME/glib.git --depth=1 && \ diff --git a/cairo/src/error.rs b/cairo/src/error.rs index de1e2ca1ee77..05d7b9eb2d45 100644 --- a/cairo/src/error.rs +++ b/cairo/src/error.rs @@ -117,7 +117,7 @@ impl fmt::Display for Error { Error::NullPointer => fmt.write_str("Null Pointer"), Error::InvalidString => fmt.write_str("Invalid String"), Error::InvalidPathData => fmt.write_str("Invalid Path Data"), - Error::ReadError => fmt.write_str("Cairo : Read Error"), + Error::ReadError => fmt.write_str("Read Error"), Error::WriteError => fmt.write_str("Write Error"), Error::SurfaceFinished => fmt.write_str("Surface Finished"), Error::SurfaceTypeMismatch => fmt.write_str("Surface Type Mismatch"), @@ -127,7 +127,7 @@ impl fmt::Display for Error { Error::InvalidVisual => fmt.write_str("Invalid Visual"), Error::FileNotFound => fmt.write_str("File Not Found"), Error::InvalidDash => fmt.write_str("Invalid Dash"), - Error::InvalidDscComment => fmt.write_str("Invalid Dash Comment"), + Error::InvalidDscComment => fmt.write_str("Invalid DSC Comment"), Error::InvalidIndex => fmt.write_str("Invalid Index"), Error::ClipNotRepresentable => fmt.write_str("Clip Not Representable"), Error::TempFileError => fmt.write_str("Temp File Error"), diff --git a/cairo/src/surface.rs b/cairo/src/surface.rs index 6407c6731dba..af59dae494ef 100644 --- a/cairo/src/surface.rs +++ b/cairo/src/surface.rs @@ -78,14 +78,16 @@ impl Surface { #[doc(alias = "cairo_surface_get_mime_data")] #[doc(alias = "get_mime_data")] pub fn mime_data(&self, mime_type: &str) -> Option> { - let data_ptr: *mut u8 = ptr::null_mut(); + let mut data_ptr: *mut u8 = ptr::null_mut(); let mut length: c_ulong = 0; + // The function actually needs a mutable pointer + #[allow(clippy::unnecessary_mut_passed)] unsafe { let mime_type = CString::new(mime_type).unwrap(); ffi::cairo_surface_get_mime_data( self.to_raw_none(), mime_type.as_ptr(), - &data_ptr, + &mut data_ptr, &mut length, ); if !data_ptr.is_null() && length != 0 { @@ -99,15 +101,19 @@ impl Surface { #[doc(alias = "cairo_surface_get_mime_data")] #[doc(alias = "get_mime_data_raw")] pub unsafe fn mime_data_raw(&self, mime_type: &str) -> Option<&[u8]> { - let data_ptr: *mut u8 = ptr::null_mut(); + let mut data_ptr: *mut u8 = ptr::null_mut(); let mut length: c_ulong = 0; let mime_type = CString::new(mime_type).unwrap(); - ffi::cairo_surface_get_mime_data( - self.to_raw_none(), - mime_type.as_ptr(), - &data_ptr, - &mut length, - ); + // The function actually needs a mutable pointer + #[allow(clippy::unnecessary_mut_passed)] + { + ffi::cairo_surface_get_mime_data( + self.to_raw_none(), + mime_type.as_ptr(), + &mut data_ptr, + &mut length, + ); + } if !data_ptr.is_null() && length != 0 { Some(slice::from_raw_parts( data_ptr as *const u8, diff --git a/gdk-pixbuf/src/auto/versions.txt b/gdk-pixbuf/src/auto/versions.txt index 06f50dbf182f..3452117ae8f7 100644 --- a/gdk-pixbuf/src/auto/versions.txt +++ b/gdk-pixbuf/src/auto/versions.txt @@ -1,2 +1,2 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 2b05eaddce95) -from gir-files (https://github.com/gtk-rs/gir-files @ 5089b7ff80cd) +Generated by gir (https://github.com/gtk-rs/gir @ 661ac5598ed5) +from gir-files (https://github.com/gtk-rs/gir-files @ 7b3bc8e1ca20) diff --git a/gdk-pixbuf/sys/versions.txt b/gdk-pixbuf/sys/versions.txt index 06f50dbf182f..3452117ae8f7 100644 --- a/gdk-pixbuf/sys/versions.txt +++ b/gdk-pixbuf/sys/versions.txt @@ -1,2 +1,2 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 2b05eaddce95) -from gir-files (https://github.com/gtk-rs/gir-files @ 5089b7ff80cd) +Generated by gir (https://github.com/gtk-rs/gir @ 661ac5598ed5) +from gir-files (https://github.com/gtk-rs/gir-files @ 7b3bc8e1ca20) diff --git a/gio/Cargo.toml b/gio/Cargo.toml index 99e8cfdc654a..6a858bc0aeec 100644 --- a/gio/Cargo.toml +++ b/gio/Cargo.toml @@ -32,6 +32,7 @@ v2_78 = ["v2_76", "gio-sys/v2_78", "glib/v2_78"] v2_80 = ["v2_78", "gio-sys/v2_80", "glib/v2_80"] v2_82 = ["v2_80", "gio-sys/v2_82", "glib/v2_82"] v2_84 = ["v2_82", "gio-sys/v2_84", "glib/v2_84"] +v2_86 = ["v2_84", "gio-sys/v2_86", "glib/v2_86"] [dependencies] libc.workspace = true diff --git a/gio/Gir.toml b/gio/Gir.toml index f26bd9864f26..7448735b816d 100644 --- a/gio/Gir.toml +++ b/gio/Gir.toml @@ -249,9 +249,9 @@ status = "generate" ignore = true [[object.function]] name = "content_type_guess" - [[object.function.parameter]] - name = "filename" - string_type = "filename" + # implemented manually until gir generates nullable array parameters + # https://github.com/gtk-rs/gir/issues/1133 + manual = true [[object]] name = "Gio.ActionGroup" @@ -607,6 +607,11 @@ status = "generate" pattern = "signal_.*subscribe" #wrapped with newtype manually manual = true + [[object.function]] + name = "register_object_with_closures2" + #old version is wrapped correctly and we don't require + #the new version + ignore = true [[object]] name = "Gio.DBusConnectionFlags" diff --git a/gio/src/auto/app_info.rs b/gio/src/auto/app_info.rs index 899cfc307f44..ad6be910f426 100644 --- a/gio/src/auto/app_info.rs +++ b/gio/src/auto/app_info.rs @@ -287,7 +287,7 @@ impl AppInfo { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_app_info_launch_default_for_uri_finish(res, &mut error); + ffi::g_app_info_launch_default_for_uri_finish(res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/async_initable.rs b/gio/src/auto/async_initable.rs index 378f0973848e..870304e02d8a 100644 --- a/gio/src/auto/async_initable.rs +++ b/gio/src/auto/async_initable.rs @@ -50,7 +50,7 @@ pub trait AsyncInitableExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_async_initable_init_finish(_source_object as *mut _, res, &mut error); + ffi::g_async_initable_init_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/dbus_connection.rs b/gio/src/auto/dbus_connection.rs index 8afaa8adb94b..0e91d48aa90d 100644 --- a/gio/src/auto/dbus_connection.rs +++ b/gio/src/auto/dbus_connection.rs @@ -1,6 +1,7 @@ // This file was generated by gir (https://github.com/gtk-rs/gir) // from gir-files (https://github.com/gtk-rs/gir-files) // DO NOT EDIT +#![allow(deprecated)] #[cfg(unix)] #[cfg_attr(docsrs, doc(cfg(unix)))] @@ -409,7 +410,7 @@ impl DBusConnection { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_dbus_connection_close_finish(_source_object as *mut _, res, &mut error); + ffi::g_dbus_connection_close_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -518,7 +519,7 @@ impl DBusConnection { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_dbus_connection_flush_finish(_source_object as *mut _, res, &mut error); + ffi::g_dbus_connection_flush_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/drive.rs b/gio/src/auto/drive.rs index e551d4b32bc8..1b2ece331bc6 100644 --- a/gio/src/auto/drive.rs +++ b/gio/src/auto/drive.rs @@ -94,8 +94,7 @@ pub trait DriveExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = - ffi::g_drive_eject_with_operation_finish(_source_object as *mut _, res, &mut error); + ffi::g_drive_eject_with_operation_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -267,7 +266,7 @@ pub trait DriveExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_drive_poll_for_media_finish(_source_object as *mut _, res, &mut error); + ffi::g_drive_poll_for_media_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -328,7 +327,7 @@ pub trait DriveExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_drive_start_finish(_source_object as *mut _, res, &mut error); + ffi::g_drive_start_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -399,7 +398,7 @@ pub trait DriveExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_drive_stop_finish(_source_object as *mut _, res, &mut error); + ffi::g_drive_stop_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/dtls_connection.rs b/gio/src/auto/dtls_connection.rs index 41ccfac1be9f..23b3ae0c5a49 100644 --- a/gio/src/auto/dtls_connection.rs +++ b/gio/src/auto/dtls_connection.rs @@ -82,7 +82,7 @@ pub trait DtlsConnectionExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_dtls_connection_close_finish(_source_object as *mut _, res, &mut error); + ffi::g_dtls_connection_close_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -294,8 +294,7 @@ pub trait DtlsConnectionExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = - ffi::g_dtls_connection_handshake_finish(_source_object as *mut _, res, &mut error); + ffi::g_dtls_connection_handshake_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -456,8 +455,7 @@ pub trait DtlsConnectionExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = - ffi::g_dtls_connection_shutdown_finish(_source_object as *mut _, res, &mut error); + ffi::g_dtls_connection_shutdown_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/file.rs b/gio/src/auto/file.rs index b40ba4e85439..72b207390ac3 100644 --- a/gio/src/auto/file.rs +++ b/gio/src/auto/file.rs @@ -519,7 +519,7 @@ pub trait FileExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_file_delete_finish(_source_object as *mut _, res, &mut error); + ffi::g_file_delete_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -590,7 +590,7 @@ pub trait FileExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_file_eject_mountable_with_operation_finish( + ffi::g_file_eject_mountable_with_operation_finish( _source_object as *mut _, res, &mut error, @@ -951,7 +951,7 @@ pub trait FileExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_file_make_directory_finish(_source_object as *mut _, res, &mut error); + ffi::g_file_make_directory_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -1126,11 +1126,7 @@ pub trait FileExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_file_mount_enclosing_volume_finish( - _source_object as *mut _, - res, - &mut error, - ); + ffi::g_file_mount_enclosing_volume_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -1412,7 +1408,7 @@ pub trait FileExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_file_poll_mountable_finish(_source_object as *mut _, res, &mut error); + ffi::g_file_poll_mountable_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -2346,12 +2342,7 @@ pub trait FileExt: IsA + sealed::Sealed + 'static { ) { let mut error = std::ptr::null_mut(); let mut info = std::ptr::null_mut(); - let _ = ffi::g_file_set_attributes_finish( - _source_object as *mut _, - res, - &mut info, - &mut error, - ); + ffi::g_file_set_attributes_finish(_source_object as *mut _, res, &mut info, &mut error); let result = if error.is_null() { Ok(from_glib_full(info)) } else { @@ -2548,7 +2539,7 @@ pub trait FileExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_file_start_mountable_finish(_source_object as *mut _, res, &mut error); + ffi::g_file_start_mountable_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -2621,7 +2612,7 @@ pub trait FileExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_file_stop_mountable_finish(_source_object as *mut _, res, &mut error); + ffi::g_file_stop_mountable_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -2720,7 +2711,7 @@ pub trait FileExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_file_trash_finish(_source_object as *mut _, res, &mut error); + ffi::g_file_trash_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -2785,7 +2776,7 @@ pub trait FileExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_file_unmount_mountable_with_operation_finish( + ffi::g_file_unmount_mountable_with_operation_finish( _source_object as *mut _, res, &mut error, diff --git a/gio/src/auto/file_enumerator.rs b/gio/src/auto/file_enumerator.rs index f24174051e7c..1c1ae97205da 100644 --- a/gio/src/auto/file_enumerator.rs +++ b/gio/src/auto/file_enumerator.rs @@ -70,7 +70,7 @@ pub trait FileEnumeratorExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_file_enumerator_close_finish(_source_object as *mut _, res, &mut error); + ffi::g_file_enumerator_close_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/functions.rs b/gio/src/auto/functions.rs index aeecbd2a3814..5a3df411f7dc 100644 --- a/gio/src/auto/functions.rs +++ b/gio/src/auto/functions.rs @@ -178,24 +178,6 @@ pub fn content_type_get_symbolic_icon(type_: &str) -> Icon { } } -#[doc(alias = "g_content_type_guess")] -pub fn content_type_guess( - filename: Option>, - data: &[u8], -) -> (glib::GString, bool) { - let data_size = data.len() as _; - unsafe { - let mut result_uncertain = std::mem::MaybeUninit::uninit(); - let ret = from_glib_full(ffi::g_content_type_guess( - filename.as_ref().map(|p| p.as_ref()).to_glib_none().0, - data.to_glib_none().0, - data_size, - result_uncertain.as_mut_ptr(), - )); - (ret, from_glib(result_uncertain.assume_init())) - } -} - #[doc(alias = "g_content_type_guess_for_tree")] pub fn content_type_guess_for_tree(root: &impl IsA) -> Vec { unsafe { diff --git a/gio/src/auto/input_stream.rs b/gio/src/auto/input_stream.rs index 13291bc4c41e..cd74927fa99f 100644 --- a/gio/src/auto/input_stream.rs +++ b/gio/src/auto/input_stream.rs @@ -77,7 +77,7 @@ pub trait InputStreamExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_input_stream_close_finish(_source_object as *mut _, res, &mut error); + ffi::g_input_stream_close_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/io_stream.rs b/gio/src/auto/io_stream.rs index 341b32e7be91..a21ab644bd4e 100644 --- a/gio/src/auto/io_stream.rs +++ b/gio/src/auto/io_stream.rs @@ -81,7 +81,7 @@ pub trait IOStreamExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_io_stream_close_finish(_source_object as *mut _, res, &mut error); + ffi::g_io_stream_close_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/mount.rs b/gio/src/auto/mount.rs index 16eccbc9e5dc..0d864a704b8b 100644 --- a/gio/src/auto/mount.rs +++ b/gio/src/auto/mount.rs @@ -71,8 +71,7 @@ pub trait MountExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = - ffi::g_mount_eject_with_operation_finish(_source_object as *mut _, res, &mut error); + ffi::g_mount_eject_with_operation_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -299,7 +298,7 @@ pub trait MountExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_mount_remount_finish(_source_object as *mut _, res, &mut error); + ffi::g_mount_remount_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -379,11 +378,7 @@ pub trait MountExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_mount_unmount_with_operation_finish( - _source_object as *mut _, - res, - &mut error, - ); + ffi::g_mount_unmount_with_operation_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/network_monitor.rs b/gio/src/auto/network_monitor.rs index ddce73f3207f..e10077d69192 100644 --- a/gio/src/auto/network_monitor.rs +++ b/gio/src/auto/network_monitor.rs @@ -87,8 +87,7 @@ pub trait NetworkMonitorExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = - ffi::g_network_monitor_can_reach_finish(_source_object as *mut _, res, &mut error); + ffi::g_network_monitor_can_reach_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/output_stream.rs b/gio/src/auto/output_stream.rs index 720fd6f75a84..6cc2d840a0ff 100644 --- a/gio/src/auto/output_stream.rs +++ b/gio/src/auto/output_stream.rs @@ -77,7 +77,7 @@ pub trait OutputStreamExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_output_stream_close_finish(_source_object as *mut _, res, &mut error); + ffi::g_output_stream_close_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -159,7 +159,7 @@ pub trait OutputStreamExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_output_stream_flush_finish(_source_object as *mut _, res, &mut error); + ffi::g_output_stream_flush_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/permission.rs b/gio/src/auto/permission.rs index cc992f05e1cb..cfc0a408206b 100644 --- a/gio/src/auto/permission.rs +++ b/gio/src/auto/permission.rs @@ -73,7 +73,7 @@ pub trait PermissionExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_permission_acquire_finish(_source_object as *mut _, res, &mut error); + ffi::g_permission_acquire_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -197,7 +197,7 @@ pub trait PermissionExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_permission_release_finish(_source_object as *mut _, res, &mut error); + ffi::g_permission_release_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/settings.rs b/gio/src/auto/settings.rs index aa491fee519a..7f1a2c55898f 100644 --- a/gio/src/auto/settings.rs +++ b/gio/src/auto/settings.rs @@ -255,7 +255,7 @@ pub trait SettingsExt: IsA + sealed::Sealed + 'static { //#[doc(alias = "g_settings_get_mapped")] //#[doc(alias = "get_mapped")] - //fn mapped(&self, key: &str, mapping: /*Unimplemented*/FnMut(&glib::Variant, /*Unimplemented*/Option) -> bool, user_data: /*Unimplemented*/Option) -> /*Unimplemented*/Option { + //fn mapped(&self, key: &str, mapping: /*Unimplemented*/FnMut(Option<&glib::Variant>, /*Unimplemented*/Option) -> bool, user_data: /*Unimplemented*/Option) -> /*Unimplemented*/Option { // unsafe { TODO: call ffi:g_settings_get_mapped() } //} diff --git a/gio/src/auto/socket_connection.rs b/gio/src/auto/socket_connection.rs index bbbd5d9d9c09..21655d19abdd 100644 --- a/gio/src/auto/socket_connection.rs +++ b/gio/src/auto/socket_connection.rs @@ -109,8 +109,7 @@ pub trait SocketConnectionExt: IsA + sealed::Sealed + 'static user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = - ffi::g_socket_connection_connect_finish(_source_object as *mut _, res, &mut error); + ffi::g_socket_connection_connect_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/subprocess.rs b/gio/src/auto/subprocess.rs index fc28eb7f84ff..1d407ef6fb49 100644 --- a/gio/src/auto/subprocess.rs +++ b/gio/src/auto/subprocess.rs @@ -95,7 +95,7 @@ impl Subprocess { let mut error = std::ptr::null_mut(); let mut stdout_buf = std::ptr::null_mut(); let mut stderr_buf = std::ptr::null_mut(); - let _ = ffi::g_subprocess_communicate_finish( + ffi::g_subprocess_communicate_finish( _source_object as *mut _, res, &mut stdout_buf, @@ -294,7 +294,7 @@ impl Subprocess { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_subprocess_wait_finish(_source_object as *mut _, res, &mut error); + ffi::g_subprocess_wait_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -376,7 +376,7 @@ impl Subprocess { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_subprocess_wait_check_finish(_source_object as *mut _, res, &mut error); + ffi::g_subprocess_wait_check_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/tls_connection.rs b/gio/src/auto/tls_connection.rs index 48cf5cd6cc80..a4e61a6871d4 100644 --- a/gio/src/auto/tls_connection.rs +++ b/gio/src/auto/tls_connection.rs @@ -212,8 +212,7 @@ pub trait TlsConnectionExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = - ffi::g_tls_connection_handshake_finish(_source_object as *mut _, res, &mut error); + ffi::g_tls_connection_handshake_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/auto/unix_connection.rs b/gio/src/auto/unix_connection.rs index e579a88fabf8..4ee4654aafde 100644 --- a/gio/src/auto/unix_connection.rs +++ b/gio/src/auto/unix_connection.rs @@ -175,7 +175,7 @@ pub trait UnixConnectionExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_unix_connection_send_credentials_finish( + ffi::g_unix_connection_send_credentials_finish( _source_object as *mut _, res, &mut error, diff --git a/gio/src/auto/versions.txt b/gio/src/auto/versions.txt index 06f50dbf182f..3452117ae8f7 100644 --- a/gio/src/auto/versions.txt +++ b/gio/src/auto/versions.txt @@ -1,2 +1,2 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 2b05eaddce95) -from gir-files (https://github.com/gtk-rs/gir-files @ 5089b7ff80cd) +Generated by gir (https://github.com/gtk-rs/gir @ 661ac5598ed5) +from gir-files (https://github.com/gtk-rs/gir-files @ 7b3bc8e1ca20) diff --git a/gio/src/auto/volume.rs b/gio/src/auto/volume.rs index 1ac9b94bd6e6..00cf209ae05d 100644 --- a/gio/src/auto/volume.rs +++ b/gio/src/auto/volume.rs @@ -71,11 +71,7 @@ pub trait VolumeExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_volume_eject_with_operation_finish( - _source_object as *mut _, - res, - &mut error, - ); + ffi::g_volume_eject_with_operation_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { @@ -221,7 +217,7 @@ pub trait VolumeExt: IsA + sealed::Sealed + 'static { user_data: glib::ffi::gpointer, ) { let mut error = std::ptr::null_mut(); - let _ = ffi::g_volume_mount_finish(_source_object as *mut _, res, &mut error); + ffi::g_volume_mount_finish(_source_object as *mut _, res, &mut error); let result = if error.is_null() { Ok(()) } else { diff --git a/gio/src/cancellable.rs b/gio/src/cancellable.rs index 3a36a947fd20..b7d520069b8a 100644 --- a/gio/src/cancellable.rs +++ b/gio/src/cancellable.rs @@ -1,6 +1,6 @@ // Take a look at the license at the top of the repository in the LICENSE file. -use std::num::NonZeroU64; +use std::{future::IntoFuture, num::NonZeroU64}; use futures_channel::oneshot; use futures_core::Future; @@ -151,6 +151,26 @@ pub trait CancellableExtManual: sealed::Sealed + IsA { impl> CancellableExtManual for O {} +impl IntoFuture for Cancellable { + type Output = (); + + type IntoFuture = std::pin::Pin + Send + Sync + 'static>>; + + fn into_future(self) -> Self::IntoFuture { + self.future() + } +} + +impl IntoFuture for &Cancellable { + type Output = (); + + type IntoFuture = std::pin::Pin + Send + Sync + 'static>>; + + fn into_future(self) -> Self::IntoFuture { + self.future() + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/gio/src/content_type.rs b/gio/src/content_type.rs new file mode 100644 index 000000000000..37a8d13bad08 --- /dev/null +++ b/gio/src/content_type.rs @@ -0,0 +1,26 @@ +// Take a look at the license at the top of the repository in the LICENSE file. + +use std::ptr; + +use glib::translate::*; + +use crate::ffi; + +#[doc(alias = "g_content_type_guess")] +pub fn content_type_guess<'a>( + filename: Option>, + data: impl Into>, +) -> (glib::GString, bool) { + let data = data.into(); + let data_size = data.map_or(0, |d| d.len()); + unsafe { + let mut result_uncertain = std::mem::MaybeUninit::uninit(); + let ret = from_glib_full(ffi::g_content_type_guess( + filename.as_ref().map(|p| p.as_ref()).to_glib_none().0, + data.map_or(ptr::null(), |d| d.to_glib_none().0), + data_size, + result_uncertain.as_mut_ptr(), + )); + (ret, from_glib(result_uncertain.assume_init())) + } +} diff --git a/gio/src/input_stream.rs b/gio/src/input_stream.rs index 59ae974c11e4..10ab9ed50fd1 100644 --- a/gio/src/input_stream.rs +++ b/gio/src/input_stream.rs @@ -422,7 +422,7 @@ impl> InputStreamAsyncBufRead { fn set_has_data(&mut self, buffer: Vec, valid: (usize, usize)) { match self.state { - State::Reading { .. } | State::Transitioning { .. } => { + State::Reading { .. } | State::Transitioning => { self.state = State::HasData { buffer, valid } } _ => panic!("Invalid state"), diff --git a/gio/src/lib.rs b/gio/src/lib.rs index fd0765fa4a77..f11e3fb2338a 100644 --- a/gio/src/lib.rs +++ b/gio/src/lib.rs @@ -22,6 +22,7 @@ mod cancellable; pub use cancellable::CancelledHandlerId; mod cancellable_future; pub use crate::cancellable_future::{CancellableFuture, Cancelled}; +mod content_type; mod converter; mod credentials; mod data_input_stream; @@ -116,6 +117,7 @@ pub mod builders { pub mod functions { pub use super::auto::functions::*; + pub use super::content_type::content_type_guess; } pub use crate::auto::*; diff --git a/gio/sys/Cargo.toml b/gio/sys/Cargo.toml index 77e007f993f9..c538b58f858b 100644 --- a/gio/sys/Cargo.toml +++ b/gio/sys/Cargo.toml @@ -33,6 +33,7 @@ v2_78 = ["v2_76"] v2_80 = ["v2_78"] v2_82 = ["v2_80"] v2_84 = ["v2_82"] +v2_86 = ["v2_84"] [lib] name = "gio_sys" @@ -111,7 +112,10 @@ version = "2.80" version = "2.82" [package.metadata.system-deps.gio_2_0.v2_84] -version = "2.83" +version = "2.84" + +[package.metadata.system-deps.gio_2_0.v2_86] +version = "2.85" [package.metadata.docs.rs] rustc-args = ["--cfg", "docsrs"] diff --git a/gio/sys/src/lib.rs b/gio/sys/src/lib.rs index 6fea7c31b83d..34ca7b92631a 100644 --- a/gio/sys/src/lib.rs +++ b/gio/sys/src/lib.rs @@ -10880,6 +10880,17 @@ extern "C" { set_property_closure: *mut gobject::GClosure, error: *mut *mut glib::GError, ) -> c_uint; + #[cfg(feature = "v2_84")] + #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))] + pub fn g_dbus_connection_register_object_with_closures2( + connection: *mut GDBusConnection, + object_path: *const c_char, + interface_info: *mut GDBusInterfaceInfo, + method_call_closure: *mut gobject::GClosure, + get_property_closure: *mut gobject::GClosure, + set_property_closure: *mut gobject::GClosure, + error: *mut *mut glib::GError, + ) -> c_uint; pub fn g_dbus_connection_register_subtree( connection: *mut GDBusConnection, object_path: *const c_char, diff --git a/gio/sys/versions.txt b/gio/sys/versions.txt index 06f50dbf182f..3452117ae8f7 100644 --- a/gio/sys/versions.txt +++ b/gio/sys/versions.txt @@ -1,2 +1,2 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 2b05eaddce95) -from gir-files (https://github.com/gtk-rs/gir-files @ 5089b7ff80cd) +Generated by gir (https://github.com/gtk-rs/gir @ 661ac5598ed5) +from gir-files (https://github.com/gtk-rs/gir-files @ 7b3bc8e1ca20) diff --git a/gio/tests/content_type.rs b/gio/tests/content_type.rs new file mode 100644 index 000000000000..b05193430e72 --- /dev/null +++ b/gio/tests/content_type.rs @@ -0,0 +1,15 @@ +// Take a look at the license at the top of the repository in the LICENSE file. + +#[cfg(unix)] +#[test] +fn test_content_type_guess() { + // We only test for directory and file without extension here as we can't guarantee the + // CI runners will have any mimetypes installed. + let ret: (glib::GString, bool) = + gio::functions::content_type_guess(Some(std::path::Path::new("test/")), None); + assert_eq!(ret.0, "inode/directory"); + + let ret: (glib::GString, bool) = + gio::functions::content_type_guess(Some(std::path::Path::new("test")), None); + assert_eq!(ret.0, "application/octet-stream"); +} diff --git a/gir b/gir index 2b05eaddce95..661ac5598ed5 160000 --- a/gir +++ b/gir @@ -1 +1 @@ -Subproject commit 2b05eaddce95ba2ef7cf123e2aa95f8c7feafd77 +Subproject commit 661ac5598ed5b2063951f9f4ec356e1561d995a0 diff --git a/gir-files b/gir-files index 5089b7ff80cd..7b3bc8e1ca20 160000 --- a/gir-files +++ b/gir-files @@ -1 +1 @@ -Subproject commit 5089b7ff80cd84874a6eb3fd30350e64158a5050 +Subproject commit 7b3bc8e1ca2040ee04af5172c03c9ced7bfefc89 diff --git a/glib/Cargo.toml b/glib/Cargo.toml index 69a7cb208f5b..b5045c202b47 100644 --- a/glib/Cargo.toml +++ b/glib/Cargo.toml @@ -54,6 +54,7 @@ v2_78 = ["v2_76", "glib-sys/v2_78", "gobject-sys/v2_78"] v2_80 = ["v2_78", "glib-sys/v2_80", "gobject-sys/v2_80"] v2_82 = ["v2_80", "glib-sys/v2_82", "gobject-sys/v2_82"] v2_84 = ["v2_82", "glib-sys/v2_84", "gobject-sys/v2_84"] +v2_86 = ["v2_84", "glib-sys/v2_86", "gobject-sys/v2_86"] log = ["rs-log"] log_macros = ["log"] compiletests = [] diff --git a/glib/gobject-sys/Cargo.toml b/glib/gobject-sys/Cargo.toml index ee4da0925527..5636d27b748c 100644 --- a/glib/gobject-sys/Cargo.toml +++ b/glib/gobject-sys/Cargo.toml @@ -23,7 +23,8 @@ v2_76 = ["v2_74"] v2_78 = ["v2_74"] v2_80 = ["v2_78"] v2_82 = ["v2_80"] -v2_84 = ["v2_80"] +v2_84 = ["v2_82"] +v2_86 = ["v2_84"] [lib] name = "gobject_sys" @@ -96,7 +97,10 @@ version = "2.80" version = "2.82" [package.metadata.system-deps.gobject_2_0.v2_84] -version = "2.83" +version = "2.84" + +[package.metadata.system-deps.gobject_2_0.v2_86] +version = "2.85" [package.metadata.docs.rs] rustc-args = ["--cfg", "docsrs"] diff --git a/glib/gobject-sys/Gir.toml b/glib/gobject-sys/Gir.toml index f213e172fe1f..ca5fa5540871 100644 --- a/glib/gobject-sys/Gir.toml +++ b/glib/gobject-sys/Gir.toml @@ -9,7 +9,9 @@ girs_directories = ["../../gir-files"] external_libraries = [ "GLib", ] - +extra_versions = [ + "2.82" +] ignore = [ "GObject.VaClosureMarshal", "GObject.SignalCVaMarshaller", diff --git a/glib/gobject-sys/src/lib.rs b/glib/gobject-sys/src/lib.rs index 1eb4af702b4d..119544301286 100644 --- a/glib/gobject-sys/src/lib.rs +++ b/glib/gobject-sys/src/lib.rs @@ -114,6 +114,8 @@ pub const G_SIGNAL_ACTION: GSignalFlags = 32; pub const G_SIGNAL_NO_HOOKS: GSignalFlags = 64; pub const G_SIGNAL_MUST_COLLECT: GSignalFlags = 128; pub const G_SIGNAL_DEPRECATED: GSignalFlags = 256; +#[cfg(feature = "v2_68")] +#[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))] pub const G_SIGNAL_ACCUMULATOR_FIRST_RUN: GSignalFlags = 131072; pub type GSignalMatchType = c_uint; diff --git a/glib/gobject-sys/versions.txt b/glib/gobject-sys/versions.txt index 06f50dbf182f..3452117ae8f7 100644 --- a/glib/gobject-sys/versions.txt +++ b/glib/gobject-sys/versions.txt @@ -1,2 +1,2 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 2b05eaddce95) -from gir-files (https://github.com/gtk-rs/gir-files @ 5089b7ff80cd) +Generated by gir (https://github.com/gtk-rs/gir @ 661ac5598ed5) +from gir-files (https://github.com/gtk-rs/gir-files @ 7b3bc8e1ca20) diff --git a/glib/src/auto/versions.txt b/glib/src/auto/versions.txt index 06f50dbf182f..3452117ae8f7 100644 --- a/glib/src/auto/versions.txt +++ b/glib/src/auto/versions.txt @@ -1,2 +1,2 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 2b05eaddce95) -from gir-files (https://github.com/gtk-rs/gir-files @ 5089b7ff80cd) +Generated by gir (https://github.com/gtk-rs/gir @ 661ac5598ed5) +from gir-files (https://github.com/gtk-rs/gir-files @ 7b3bc8e1ca20) diff --git a/glib/src/gobject/auto/flags.rs b/glib/src/gobject/auto/flags.rs index c1dedf817290..a9fd255e47d1 100644 --- a/glib/src/gobject/auto/flags.rs +++ b/glib/src/gobject/auto/flags.rs @@ -115,6 +115,8 @@ bitflags! { const MUST_COLLECT = crate::gobject_ffi::G_SIGNAL_MUST_COLLECT as _; #[doc(alias = "G_SIGNAL_DEPRECATED")] const DEPRECATED = crate::gobject_ffi::G_SIGNAL_DEPRECATED as _; + #[cfg(feature = "v2_68")] + #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))] #[doc(alias = "G_SIGNAL_ACCUMULATOR_FIRST_RUN")] const ACCUMULATOR_FIRST_RUN = crate::gobject_ffi::G_SIGNAL_ACCUMULATOR_FIRST_RUN as _; } diff --git a/glib/src/gstring.rs b/glib/src/gstring.rs index 7c77dd88a202..44cb44e9dd95 100644 --- a/glib/src/gstring.rs +++ b/glib/src/gstring.rs @@ -289,6 +289,39 @@ impl GStr { } } pub const NONE: Option<&'static GStr> = None; + + // rustdoc-stripper-ignore-next + /// Interns the string and returns the canonical representation. + #[inline] + #[doc(alias = "g_intern_string")] + pub fn intern(&self) -> &'static GStr { + unsafe { + let s = ffi::g_intern_string(self.to_glib_none().0); + GStr::from_ptr(s) + } + } + + // rustdoc-stripper-ignore-next + /// Interns the `'static` string and returns the canonical representation. + #[inline] + #[doc(alias = "g_intern_static_string")] + pub fn intern_static(&'static self) -> &'static GStr { + unsafe { + let s = ffi::g_intern_static_string(self.to_glib_none().0); + GStr::from_ptr(s) + } + } + + // rustdoc-stripper-ignore-next + /// Interns the string and returns the canonical representation. + #[inline] + #[doc(alias = "g_intern_string")] + pub fn intern_from_str(s: impl AsRef) -> &'static GStr { + unsafe { + let s = ffi::g_intern_string(s.as_ref().to_glib_none().0); + GStr::from_ptr(s) + } + } } // rustdoc-stripper-ignore-next @@ -1015,6 +1048,18 @@ impl std::hash::Hash for GStringPtr { } } +impl> From for GStringPtr { + fn from(value: T) -> Self { + unsafe { + let value = value.as_ref(); + GStringPtr(ptr::NonNull::new_unchecked(ffi::g_strndup( + value.as_ptr() as *const _, + value.len(), + ))) + } + } +} + // size_of::() minus two bytes for length and enum discriminant const INLINE_LEN: usize = mem::size_of::>>() + mem::size_of::() - mem::size_of::() * 2; diff --git a/glib/src/thread_guard.rs b/glib/src/thread_guard.rs index 916dffffdab0..bdc511d9b846 100644 --- a/glib/src/thread_guard.rs +++ b/glib/src/thread_guard.rs @@ -113,3 +113,17 @@ impl Drop for ThreadGuard { unsafe impl Send for ThreadGuard {} unsafe impl Sync for ThreadGuard {} + +impl std::ops::Deref for ThreadGuard { + type Target = T; + + fn deref(&self) -> &Self::Target { + self.get_ref() + } +} + +impl std::ops::DerefMut for ThreadGuard { + fn deref_mut(&mut self) -> &mut Self::Target { + self.get_mut() + } +} diff --git a/glib/src/variant.rs b/glib/src/variant.rs index 0712b284341f..0a9491ffa26a 100644 --- a/glib/src/variant.rs +++ b/glib/src/variant.rs @@ -1601,6 +1601,7 @@ where /// assert_eq!(dict.n_children(), 2); /// assert_eq!(dict.type_().as_str(), "a{su}"); /// ``` +#[derive(Debug, Clone)] pub struct DictEntry { key: K, value: V, diff --git a/glib/sys/Cargo.toml b/glib/sys/Cargo.toml index 15806cf5117b..23caf11c4071 100644 --- a/glib/sys/Cargo.toml +++ b/glib/sys/Cargo.toml @@ -23,6 +23,7 @@ v2_78 = ["v2_76"] v2_80 = ["v2_78"] v2_82 = ["v2_80"] v2_84 = ["v2_82"] +v2_86 = ["v2_84"] [lib] name = "glib_sys" @@ -101,7 +102,10 @@ version = "2.80" version = "2.82" [package.metadata.system-deps.glib_2_0.v2_84] -version = "2.83" +version = "2.84" + +[package.metadata.system-deps.glib_2_0.v2_86] +version = "2.85" [package.metadata.system-deps.gobject_2_0] name = "gobject-2.0" diff --git a/glib/sys/src/lib.rs b/glib/sys/src/lib.rs index de45848440f8..2bf7a9b665f5 100644 --- a/glib/sys/src/lib.rs +++ b/glib/sys/src/lib.rs @@ -3295,6 +3295,9 @@ extern "C" { pub fn g_date_get_monday_week_of_year(date: *const GDate) -> c_uint; pub fn g_date_get_month(date: *const GDate) -> GDateMonth; pub fn g_date_get_sunday_week_of_year(date: *const GDate) -> c_uint; + #[cfg(feature = "v2_86")] + #[cfg_attr(docsrs, doc(cfg(feature = "v2_86")))] + pub fn g_date_get_week_of_year(date: *const GDate, first_day_of_week: GDateWeekday) -> c_uint; pub fn g_date_get_weekday(date: *const GDate) -> GDateWeekday; pub fn g_date_get_year(date: *const GDate) -> GDateYear; pub fn g_date_is_first_of_month(date: *const GDate) -> gboolean; @@ -3317,6 +3320,9 @@ extern "C" { pub fn g_date_get_days_in_month(month: GDateMonth, year: GDateYear) -> u8; pub fn g_date_get_monday_weeks_in_year(year: GDateYear) -> u8; pub fn g_date_get_sunday_weeks_in_year(year: GDateYear) -> u8; + #[cfg(feature = "v2_86")] + #[cfg_attr(docsrs, doc(cfg(feature = "v2_86")))] + pub fn g_date_get_weeks_in_year(year: GDateYear, first_day_of_week: GDateWeekday) -> u8; pub fn g_date_is_leap_year(year: GDateYear) -> gboolean; pub fn g_date_strftime( s: *mut c_char, @@ -5232,6 +5238,9 @@ extern "C" { pub fn g_string_ascii_down(string: *mut GString) -> *mut GString; pub fn g_string_ascii_up(string: *mut GString) -> *mut GString; pub fn g_string_assign(string: *mut GString, rval: *const c_char) -> *mut GString; + #[cfg(feature = "v2_86")] + #[cfg_attr(docsrs, doc(cfg(feature = "v2_86")))] + pub fn g_string_copy(string: *mut GString) -> *mut GString; pub fn g_string_down(string: *mut GString) -> *mut GString; pub fn g_string_equal(v: *const GString, v2: *const GString) -> gboolean; pub fn g_string_erase(string: *mut GString, pos: ssize_t, len: ssize_t) -> *mut GString; @@ -6354,11 +6363,22 @@ extern "C" { ) -> size_t; pub fn g_basename(file_name: *const c_char) -> *const c_char; pub fn g_bit_lock(address: *mut c_int, lock_bit: c_int); + #[cfg(feature = "v2_86")] + #[cfg_attr(docsrs, doc(cfg(feature = "v2_86")))] + pub fn g_bit_lock_and_get(address: *mut c_int, lock_bit: c_uint, out_val: *mut c_int); pub fn g_bit_nth_lsf(mask: c_ulong, nth_bit: c_int) -> c_int; pub fn g_bit_nth_msf(mask: c_ulong, nth_bit: c_int) -> c_int; pub fn g_bit_storage(number: c_ulong) -> c_uint; pub fn g_bit_trylock(address: *mut c_int, lock_bit: c_int) -> gboolean; pub fn g_bit_unlock(address: *mut c_int, lock_bit: c_int); + #[cfg(feature = "v2_86")] + #[cfg_attr(docsrs, doc(cfg(feature = "v2_86")))] + pub fn g_bit_unlock_and_set( + address: *mut c_int, + lock_bit: c_uint, + new_val: c_int, + preserve_mask: c_int, + ); pub fn g_build_filename(first_element: *const c_char, ...) -> *mut c_char; //pub fn g_build_filename_valist(first_element: *const c_char, args: /*Unimplemented*/*mut va_list) -> *mut c_char; pub fn g_build_filenamev(args: *mut *mut c_char) -> *mut c_char; @@ -6726,6 +6746,9 @@ extern "C" { message: *const c_char, unused_data: gpointer, ); + #[cfg(feature = "v2_86")] + #[cfg_attr(docsrs, doc(cfg(feature = "v2_86")))] + pub fn g_log_get_always_fatal() -> GLogLevelFlags; #[cfg(feature = "v2_72")] #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))] pub fn g_log_get_debug_enabled() -> gboolean; diff --git a/glib/sys/versions.txt b/glib/sys/versions.txt index 06f50dbf182f..3452117ae8f7 100644 --- a/glib/sys/versions.txt +++ b/glib/sys/versions.txt @@ -1,2 +1,2 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 2b05eaddce95) -from gir-files (https://github.com/gtk-rs/gir-files @ 5089b7ff80cd) +Generated by gir (https://github.com/gtk-rs/gir @ 661ac5598ed5) +from gir-files (https://github.com/gtk-rs/gir-files @ 7b3bc8e1ca20) diff --git a/graphene/src/auto/versions.txt b/graphene/src/auto/versions.txt index 06f50dbf182f..3452117ae8f7 100644 --- a/graphene/src/auto/versions.txt +++ b/graphene/src/auto/versions.txt @@ -1,2 +1,2 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 2b05eaddce95) -from gir-files (https://github.com/gtk-rs/gir-files @ 5089b7ff80cd) +Generated by gir (https://github.com/gtk-rs/gir @ 661ac5598ed5) +from gir-files (https://github.com/gtk-rs/gir-files @ 7b3bc8e1ca20) diff --git a/graphene/src/matrix.rs b/graphene/src/matrix.rs index db29803c9575..973deb140d50 100644 --- a/graphene/src/matrix.rs +++ b/graphene/src/matrix.rs @@ -246,6 +246,7 @@ impl ops::MulAssign for Matrix { impl ops::Mul for Matrix { type Output = Vec4; + // rustdoc-stripper-ignore-next /// Transforms this `Vec4` using the provided matrix. /// See [Matrix::transform_vec4]. fn mul(self, rhs: Vec4) -> Self::Output { @@ -256,6 +257,7 @@ impl ops::Mul for Matrix { impl ops::Mul for Matrix { type Output = Vec3; + // rustdoc-stripper-ignore-next /// Transforms this `Vec3` using the provided matrix. /// See [Matrix::transform_vec3]. fn mul(self, rhs: Vec3) -> Self::Output { @@ -274,6 +276,7 @@ impl ops::Mul for Matrix { impl ops::Mul for Matrix { type Output = Point3D; + // rustdoc-stripper-ignore-next /// Transforms this point using the provided matrix. /// See [Matrix::transform_point3d]. fn mul(self, rhs: Point3D) -> Self::Output { diff --git a/graphene/sys/versions.txt b/graphene/sys/versions.txt index 06f50dbf182f..3452117ae8f7 100644 --- a/graphene/sys/versions.txt +++ b/graphene/sys/versions.txt @@ -1,2 +1,2 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 2b05eaddce95) -from gir-files (https://github.com/gtk-rs/gir-files @ 5089b7ff80cd) +Generated by gir (https://github.com/gtk-rs/gir @ 661ac5598ed5) +from gir-files (https://github.com/gtk-rs/gir-files @ 7b3bc8e1ca20) diff --git a/pango/Gir.toml b/pango/Gir.toml index 33f2ec581793..2998e9d05da8 100644 --- a/pango/Gir.toml +++ b/pango/Gir.toml @@ -112,8 +112,17 @@ status = "generate" manual = true [[object.function]] name = "shape_with_flags" - # ivanlid length computation on a Option, it should fallback to 0. + # invalid length computation on a Option, it should fallback to 0. manual = true + [[object.function]] + name = "shape" + # invalid length computation on Stash instead of str + manual = true + [[object.function]] + name = "shape_item" + # invalid length computation on Stash instead of str + # Needs PangoLogAttr bindings + ignore = true [[object]] name = "Pango.Attribute" diff --git a/pango/src/auto/functions.rs b/pango/src/auto/functions.rs index 152f48b6494e..0f60a789d07b 100644 --- a/pango/src/auto/functions.rs +++ b/pango/src/auto/functions.rs @@ -3,8 +3,7 @@ // DO NOT EDIT use crate::{ - ffi, Analysis, AttrIterator, AttrList, Context, Direction, GlyphString, Item, Stretch, Style, - Variant, Weight, + ffi, AttrIterator, AttrList, Context, Direction, Item, Stretch, Style, Variant, Weight, }; use glib::translate::*; @@ -12,12 +11,12 @@ use glib::translate::*; //#[allow(deprecated)] //#[doc(alias = "pango_break")] //#[doc(alias = "break")] -//pub fn break_(text: &str, analysis: &mut Analysis, attrs: /*Ignored*/&[LogAttr]) { +//pub fn break_(text: &str, analysis: &mut Analysis, attrs: /*Ignored*/Vec) { // unsafe { TODO: call ffi:pango_break() } //} //#[doc(alias = "pango_default_break")] -//pub fn default_break(text: &str, analysis: Option<&mut Analysis>, attrs: /*Ignored*/&mut LogAttr, attrs_len: i32) { +//pub fn default_break(text: &str, analysis: Option<&mut Analysis>, attrs: /*Ignored*/Vec) { // unsafe { TODO: call ffi:pango_default_break() } //} @@ -48,7 +47,7 @@ pub fn find_paragraph_boundary(text: &str) -> (i32, i32) { //#[doc(alias = "pango_get_log_attrs")] //#[doc(alias = "get_log_attrs")] -//pub fn log_attrs(text: &str, level: i32, language: &mut Language, attrs: /*Ignored*/&[LogAttr]) { +//pub fn log_attrs(text: &str, level: i32, language: &mut Language, attrs: /*Ignored*/Vec) { // unsafe { TODO: call ffi:pango_get_log_attrs() } //} @@ -245,30 +244,10 @@ pub fn quantize_line_geometry(thickness: &mut i32, position: &mut i32) { } } -#[doc(alias = "pango_shape")] -pub fn shape(text: &str, analysis: &Analysis, glyphs: &mut GlyphString) { - let length = text.len() as _; - unsafe { - ffi::pango_shape( - text.to_glib_none().0, - length, - analysis.to_glib_none().0, - glyphs.to_glib_none_mut().0, - ); - } -} - -//#[cfg(feature = "v1_50")] -//#[cfg_attr(docsrs, doc(cfg(feature = "v1_50")))] -//#[doc(alias = "pango_shape_item")] -//pub fn shape_item(item: &mut Item, paragraph_text: Option<&str>, log_attrs: /*Ignored*/Option<&mut LogAttr>, glyphs: &mut GlyphString, flags: ShapeFlags) { -// unsafe { TODO: call ffi:pango_shape_item() } -//} - //#[cfg(feature = "v1_44")] //#[cfg_attr(docsrs, doc(cfg(feature = "v1_44")))] //#[doc(alias = "pango_tailor_break")] -//pub fn tailor_break(text: &str, analysis: &mut Analysis, offset: i32, attrs: /*Ignored*/&[LogAttr]) { +//pub fn tailor_break(text: &str, analysis: &mut Analysis, offset: i32, attrs: /*Ignored*/Vec) { // unsafe { TODO: call ffi:pango_tailor_break() } //} diff --git a/pango/src/auto/glyph_item.rs b/pango/src/auto/glyph_item.rs index 2d0cdec554f5..8363b2d82cbb 100644 --- a/pango/src/auto/glyph_item.rs +++ b/pango/src/auto/glyph_item.rs @@ -18,10 +18,10 @@ glib::wrapper! { impl GlyphItem { #[doc(alias = "pango_glyph_item_apply_attrs")] - pub fn apply_attrs(&mut self, text: &str, list: &AttrList) -> Vec { + pub fn apply_attrs(self, text: &str, list: &AttrList) -> Vec { unsafe { FromGlibPtrContainer::from_glib_full(ffi::pango_glyph_item_apply_attrs( - self.to_glib_none_mut().0, + self.into_glib_ptr(), text.to_glib_none().0, list.to_glib_none().0, )) diff --git a/pango/src/auto/versions.txt b/pango/src/auto/versions.txt index 06f50dbf182f..3452117ae8f7 100644 --- a/pango/src/auto/versions.txt +++ b/pango/src/auto/versions.txt @@ -1,2 +1,2 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 2b05eaddce95) -from gir-files (https://github.com/gtk-rs/gir-files @ 5089b7ff80cd) +Generated by gir (https://github.com/gtk-rs/gir @ 661ac5598ed5) +from gir-files (https://github.com/gtk-rs/gir-files @ 7b3bc8e1ca20) diff --git a/pango/src/functions.rs b/pango/src/functions.rs index 6f2aec065596..9452a3515ffc 100644 --- a/pango/src/functions.rs +++ b/pango/src/functions.rs @@ -1,6 +1,7 @@ // Take a look at the license at the top of the repository in the LICENSE file. use glib::translate::*; +use std::{ffi::c_char, ptr}; pub use crate::auto::functions::*; #[cfg(feature = "v1_44")] @@ -23,17 +24,17 @@ pub fn shape_full( analysis: &Analysis, glyphs: &mut GlyphString, ) { - let paragraph_length = match paragraph_text { - Some(s) => s.len(), - None => 0, - } as i32; - let paragraph_text = paragraph_text.to_glib_none(); let item_length = item_text.len() as i32; + let paragraph_length = paragraph_text.map(|t| t.len() as i32).unwrap_or_default(); + let paragraph_ptr = paragraph_text.map_or(ptr::null(), |t| t.as_ptr() as *const c_char); unsafe { + // The function does not take null-terminated strings when a length is provided. + // It also requires item_text to point to a subsequence of paragraph_text. + // Using to_glib_none() on &str will copy the string and cause problems. ffi::pango_shape_full( - item_text.to_glib_none().0, + item_text.as_ptr() as *const c_char, item_length, - paragraph_text.0, + paragraph_ptr, paragraph_length, analysis.to_glib_none().0, glyphs.to_glib_none_mut().0, @@ -41,6 +42,21 @@ pub fn shape_full( } } +#[doc(alias = "pango_shape")] +pub fn shape(item_text: &str, analysis: &Analysis, glyphs: &mut GlyphString) { + let item_length = item_text.len() as i32; + unsafe { + // The function does not take null-terminated strings when a length is provided. + // Using to_glib_none() on &str will copy the string unnecessarily. + ffi::pango_shape( + item_text.as_ptr() as *const c_char, + item_length, + analysis.to_glib_none().0, + glyphs.to_glib_none_mut().0, + ); + } +} + #[cfg(feature = "v1_44")] #[cfg_attr(docsrs, doc(cfg(feature = "v1_44")))] #[doc(alias = "pango_shape_with_flags")] @@ -53,11 +69,13 @@ pub fn shape_with_flags( ) { let item_length = item_text.len() as i32; let paragraph_length = paragraph_text.map(|t| t.len() as i32).unwrap_or_default(); + let paragraph_ptr = paragraph_text.map_or(ptr::null(), |t| t.as_ptr() as *const c_char); unsafe { + // See: shape_full ffi::pango_shape_with_flags( - item_text.to_glib_none().0, + item_text.as_ptr() as *const c_char, item_length, - paragraph_text.to_glib_none().0, + paragraph_ptr, paragraph_length, analysis.to_glib_none().0, glyphs.to_glib_none_mut().0, diff --git a/pango/sys/versions.txt b/pango/sys/versions.txt index 06f50dbf182f..3452117ae8f7 100644 --- a/pango/sys/versions.txt +++ b/pango/sys/versions.txt @@ -1,2 +1,2 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 2b05eaddce95) -from gir-files (https://github.com/gtk-rs/gir-files @ 5089b7ff80cd) +Generated by gir (https://github.com/gtk-rs/gir @ 661ac5598ed5) +from gir-files (https://github.com/gtk-rs/gir-files @ 7b3bc8e1ca20) diff --git a/pangocairo/src/auto/versions.txt b/pangocairo/src/auto/versions.txt index 06f50dbf182f..3452117ae8f7 100644 --- a/pangocairo/src/auto/versions.txt +++ b/pangocairo/src/auto/versions.txt @@ -1,2 +1,2 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 2b05eaddce95) -from gir-files (https://github.com/gtk-rs/gir-files @ 5089b7ff80cd) +Generated by gir (https://github.com/gtk-rs/gir @ 661ac5598ed5) +from gir-files (https://github.com/gtk-rs/gir-files @ 7b3bc8e1ca20) diff --git a/pangocairo/sys/versions.txt b/pangocairo/sys/versions.txt index 06f50dbf182f..3452117ae8f7 100644 --- a/pangocairo/sys/versions.txt +++ b/pangocairo/sys/versions.txt @@ -1,2 +1,2 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 2b05eaddce95) -from gir-files (https://github.com/gtk-rs/gir-files @ 5089b7ff80cd) +Generated by gir (https://github.com/gtk-rs/gir @ 661ac5598ed5) +from gir-files (https://github.com/gtk-rs/gir-files @ 7b3bc8e1ca20)