Winit 0.19 uses uninitialized variables which is invalid since Rust
1.48, leading to a runtime panic [1]. Updating to the latest version
resolves these issues but requires significant refactoring since the
event loop now runs entirely within a closure.
[1]: https://github.com/rust-windowing/winit/issues/1811
If EGL and Wayland were both set the Wayland bit of code would never be
build-tested nor used. Now if both are enabled try to acquire a
GLDisplay through both handles before bailing. The methods can still be
tested in isolation by not enabling one or the other feature.
Solves the following warning:
gstreamer-rs/examples/Cargo.toml: unused manifest key: bin.31.features
Enabling features when a single bin is built is not supported, and users
would have to manually select desired features anyway: -wayland cannot
be used in conjunction with -egl thanks to the cfg_if.
Gir now prints all directories and their hashes in the version file and
comments; useful now that gstreamer-rs is being generated from both
gir-files/ and gst-gir-files/ submodules.
We were already using `gir -d` and especially now that our files are
separated across two directories that are relative to the directory
containing Gir.toml this only becomes cumbersome. Besides `gir` lacks
functionality to normalize the path, leading to ie.
gstreamer-gl/egl/sys/../../../gir-files in the version comment as a
result.
The sys crates have not been generated with 1.20 introspected gir files
yet, and break the documentation that is already compiling with the
v1_20 feature. Function body contents don't truly matter for the
documentation build anyway.
This crate was added right around the same date the conversion to the
`lgpl_docs` crate took place in 801998c7 ("Generate documentation from
the docs crate directly") and hence likely missed out.
Fixes: 4120ded4 ("Add gstreamer-controller")
Docs generated using:
./gir/target/release/gir -m doc -c gstreamer-controller/Gir.toml -d gir-files -o unused
Followed by `mv gstreamer-controller/docs/gstreamer-controller docs/`.
The `-o` option is required but ignored in favour of a toml
`doc_target_path` config option.
Quite a few issues slipped in over time because the docs are only
extended with `embed-lgpl-docs` and provided as artifact as part of a
manual action, that isn't clicked often.
Using `.ok()` is more concise when loosing error context in favour of a
simple `None` value.
Automatic replacement SSR pattern in rust-analyzer:
{let $a = $b;match $c {Ok($d) => Some($e), Err(_) => None }} ==>> {$b.ok()}
Note that rust-analyzer does not support:
- duplicate labels (ie. $c should be equal to $a, and $e equal to $d);
- statement lists yet, hence both sides are wrapped in braces.
But it performs the desired operation well enough here.
This scales better as there will only be only such data instead of two
or more when having deeper class hierarchies with multiple Rust
elements, and also makes it unnecessary to use a special instance struct
so the default works well.
While this allows to remove the pad probe multiple times, which would
cause a g_warning(), this is not actually making the situation worse
than before while making some code patterns easier to implement:
- Probes could already be removed twice by return
gst::PadProbeReturn::Remove and then calling pad.remove_probe()
- Probes could be removed from a different pad than where they were
added
As such let's go with the simple solution here for now and allow giving
owned access to the probe id from the probe callback.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/286