François Laignel
eb4d997f0a
gst/format: shuffle types and traits
2022-10-01 00:49:42 +02:00
François Laignel
79377337a4
gst/format: move related modules under a directory
2022-10-01 00:49:39 +02:00
69ea30dbda
gstreamer: meta: Allow to register custom meta without transform function
2022-09-29 14:05:35 +02:00
François Laignel
99e344af4d
gst/format: simplify some ops impl
...
The `SpecificFormattedValue` types are newtypes of `u64` or `u32`
and they all implement `Copy`. It shouldn't be needed to implement
operations on `&Type` nor `&inner_type`.
2022-09-22 00:05:28 +02:00
François Laignel
86549dc06e
gst/Segment: return immediately from some functions...
...
... if the input `is_none`.
2022-09-21 17:20:43 +00:00
François Laignel
8595b67218
gst/Signed: impl option-operations
traits
2022-09-21 17:20:43 +00:00
François Laignel
183a399d1d
gst/Signed: impl MulDiv
2022-09-21 17:20:43 +00:00
François Laignel
2b4fcb131e
gst/Signed: impl div & mul
2022-09-21 17:20:43 +00:00
François Laignel
1411c9e35e
gst/Signed: use a new trait for into_{signed,positive,negative}
...
The functions `into_{signed,positive,negative}` used to be implemented
on the `FormattedValue` trait for convenience. This was wrong for the
following reasons:
- They aren't specific to `FormattedValue`s: they can also be
implemented for regular unsigned integers such as `u64`, `usize` or
`u32`.
- They were implemented for `format::Undefined` and all variants of
`GenericFormattedValue`, some of which are already signed.
This commit introduces the new trait `UnsignedIntoSigned`, which makes
it possible to fix both of the above problems.
Users can build a `Signed` from an `Undefined`, an `i64`, `isize` or
`i32` thanks to the `From` trait implementations.
2022-09-21 17:20:43 +00:00
François Laignel
960befb2f5
gst/Signed: move signed ops macro to macro.rs
...
This will help with the implementation of Signed muls & divs for
`FormattedValue`s since we need to know about the inner types.
2022-09-21 17:20:43 +00:00
François Laignel
0d229b4c69
gst/format: separate non trait ops format macros from common ops
2022-09-21 17:20:43 +00:00
François Laignel
432cb36611
gst/Signed: add tests and fix some ops impl
2022-09-21 17:20:43 +00:00
François Laignel
8e6afe147e
gst/Signed: impl Display and Displayable
2022-09-21 17:20:43 +00:00
François Laignel
a1dbc7a0ee
gst/format: use fmt::Display whenever possible
...
Previous implementation for the glib format new types built a
`String` for the displayable value. This commit uses `fmt`
mechanisms so as to limit useless allocations.
2022-09-21 17:20:43 +00:00
François Laignel
e0d9f886e3
gst/format: add Signed::{positive, negative}
...
It's more convenient to use than:
```rust
signed_val.positive_or(()).ok()
```
2022-09-21 17:20:43 +00:00
François Laignel
55ef309b16
gst/ClockTime: panic building from GST_CLOCK_TIME_NONE
...
Using `ClockTime::from_nseconds` it was possible to build a valid
`ClockTime` which would match `GST_CLOCK_TIME_NONE` when passed to
the C API, leading to unexpected behaviour as `GST_CLOCK_TIME_NONE`
is represented as an `Option::<ClockTime>::None` in Rust.
This commit panics when this function is called with
`GST_CLOCK_TIME_NONE` (defined as `u64::MAX`). This is similar to
what happens when calling other `ClockTime` constructors (e.g.
`from_seconds`) with too large a value: the internal multiplication
overflows leading to a panic.
2022-09-21 17:20:43 +00:00
François Laignel
b8e1c25c85
gst/log: log arg eval fix non regression test
2022-09-21 17:20:43 +00:00
Sebastian Dröge
64829ac47a
gstreamer: Use type parameters instead of trait objects for TypeFindFactory::call_function()
...
No need to do dynamic dispatch here.
2022-09-16 11:26:24 +03:00
Sebastian Dröge
1b10c5324d
gstreamer: Add BinImpl::do_latency()
2022-09-16 06:54:55 +00:00
Sebastian Dröge
8a6de3ca4f
gstreamer: Implement various operations on Signed
for working with it more easily
2022-09-14 12:20:47 +03:00
François Laignel
f294339240
log: differ formatted args evaluation
...
When the `format_args!` macro is used, formatted args are evaluated
in order to form the argument collection that ends up being formatted
when requested to do so.
For the log macro, this means that any argument that is an expression
was evaluated even if the log level was below current threshold. This
can be examplified by the following code:
```rust
gst::debug!(CAT, "{}", {
println!("fmt arg executed");
"A debug log"
});
```
This used to print "fmt arg executed" even when the log threshold for
`CAT` was filtering `debug` out.
Note that this could break existing code that would incorrectly rely
on the side effect.
2022-09-13 19:25:14 +02:00
Sebastian Dröge
dec112d0a8
Regenerate with latest gir/gir-files/gst-gir-files
2022-09-13 12:13:07 +03:00
François Laignel
f014505e1c
regen: rename feature 'ser_de' as 'serde'
2022-09-12 19:36:32 +02:00
François Laignel
069c6a2c01
Rename feature 'ser_de' as 'serde'
...
When I introduced the 'ser_de' feature, I couldn't find a way to
name it 'serde' while also make it pull the optional 'serde'
crate together with the other related dependencies.
With rustc >= 1.60 we can use 'dep:serde' to refer to the 'serde'
dependency as part of the 'serde' feature.
2022-09-12 19:36:30 +02:00
Sebastian Dröge
efe13948cc
ci: Update gst-gir-files and bring autogenerated code in sync
2022-09-04 20:51:07 +03:00
Sebastian Dröge
201eed8400
gstreamer: Sync param spec API with glib
2022-09-04 10:34:05 +03:00
Sebastian Dröge
44d899a0eb
Regenerate with latest gir / gir-files / gst-gir-files
2022-08-31 11:13:08 +03:00
Guillaume Desmottes
e229288ecd
gstreamer: manually implement Debug on PromiseReply
...
The default implementation was not very useful:
PromiseReply(
Promise {
inner: Shared {
inner: 0x00007ff108001090,
},
},
)
2022-08-29 08:59:21 +00:00
Guillaume Desmottes
1e24e2d133
gstreamer: caps: improve Debug implementation
2022-08-25 10:54:16 +02:00
Guillaume Desmottes
0c9158f404
gstreamer: taglist: improve Debug implementation
2022-08-25 10:54:16 +02:00
Guillaume Desmottes
64c09353b7
gstreamer: structure: improve Debug implementation
...
g_strdup_value_contents() output is not easily readable with nested
structures
2022-08-25 10:54:16 +02:00
Thibault Saunier
e9d95eda59
gstreamer: Add extension trait to mark API as plugins API
...
This adds an extension trait implemented for GType so we can
add and check plugins API status.
Required so we can document plugins written in rust.
2022-08-24 10:38:06 -04:00
Sebastian Dröge
76f01516e3
Regenerate with latest GStreamer gir files
2022-08-19 19:42:05 +03:00
Sebastian Dröge
fbad0fd0bc
Regenerate with latest gir / gir-files / gst-gir-files
2022-08-14 14:02:50 +03:00
Guillaume Desmottes
c5d19e7c80
miniobject: implement ptr_eq() on ref type
2022-08-12 11:15:08 +02:00
Guillaume Desmottes
c0fd8a8aad
gstreamer: add BufferRef::ptr_eq()
2022-08-12 08:29:49 +02:00
Guillaume Desmottes
2dcd5cf9eb
as_ptr() and as_mut_ptr() accessors are safe
...
Nothing unsafe about getting a pointer, deferencing it is unsafe.
2022-08-12 08:29:49 +02:00
Sebastian Dröge
b06a692dea
Fix a new beta clippy warning
...
warning: unused return value of `std::boxed::Box::<T>::from_raw` that must be used
--> gstreamer-rtsp-server/src/rtsp_session_pool.rs:23:5
|
23 | Box::<F>::from_raw(ptr as *mut _);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_must_use)]` on by default
= note: call `drop(from_raw(ptr))` if you intend to drop the `Box`
2022-08-10 10:27:27 +00:00
Sebastian Dröge
2cb7fc8122
gstreamer: Add GstParamSpecBuilderExt trait to easily allow setting controllable, mutable-ready and other extension flags
2022-08-10 12:28:05 +03:00
Sebastian Dröge
446f09fec6
gstreamer: Implement new ParamSpecBuilderExt trait from glib
2022-08-10 12:03:51 +03:00
François Laignel
2d17d46c50
gst: use Signed where applicable
2022-07-18 23:26:20 +02:00
François Laignel
414222aa99
gst/format: Signed wrapper
...
Functions such as Segment::to_running_time_full replicate the C
signature for the return type: an integer indicates whether the
resulting value must be interpreted as positive or negative.
In Rust, alternatives are usually represented using an enum.
This commit implements an enum wrapper to represent the sign
and adds functions to FormattedValue to ease Signed handling.
2022-07-18 23:26:20 +02:00
Sebastian Dröge
b5920ee729
Regenerate with latest gir
2022-07-18 13:25:36 +03:00
Sebastian Dröge
cf1a64ecf8
gstreamer: Hide some useless enum variants that only make sense in C
2022-07-18 13:13:48 +03:00
François Laignel
a787197254
Use CompatibleFormattedValue where applicable
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1059
2022-07-11 19:45:52 +02:00
François Laignel
865df62f8d
gst/format: add CompatibleFormattedValue
...
The trait CompatibleFormattedValue can be used to check argument
compatibility to a certain Format. This is convenient to define
function which accept several FormattedValues which must hold
values of the same Format.
This trait enforces format compatibility at compilation time for
SpecificFormattedValues and at runtime when a GenericFormattedValue
is provided.
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1059
2022-07-11 19:45:52 +02:00
François Laignel
fe319af598
Implement FormattedValue on any candidate type
...
The trait FormattedValue was only implemented on types which
could implement the full range of values for a Format. In order
to declare a function which could take both the intrinsic type
of any Format (e.g. `ClockTime`) as well the full range of values
(e.g. `Option<ClockTime>`), the argument was declared:
```rust
impl Into<GenericFormattedValue>,
```
This commit implements `FormattedValue` for any type representing
a format. E.g.: both `ClockTime` and `Option<ClockTime>` will now
implement `FormattedValue`. The trait `FormattedValueFullRange`
is implemented on types which can be built from any raw value.
These changes are intended to help for the implementation of a
means to enforce format conformity at compilation time for
functions with multiple formatted value arguments.
The following signatures were found to be incorrect and are fixed:
- `message::StepDone`: forced the type for `amount` and `duration`
to be of the same type, when `duration` is expected to be of the
`Time` format.
- `query::Convert::set`: the two arguments were forced to the same
type, so potentialy the same format, unless a
`GenericFormattedValue` was used.
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1059
2022-07-11 19:45:52 +02:00
Paolo Borelli
f2a2e6702c
caps: add new_empty_simple constructor
2022-07-05 14:49:21 +02:00
Sebastian Dröge
4dade30f0d
Fix/silence a couple new clippy warnings
2022-06-30 13:08:33 +00:00
Sebastian Dröge
65629426cb
tracer: Add bindings for new pad chain hooks
2022-06-30 08:46:06 +03:00
Sebastian Dröge
90aaa32957
Regenerate
2022-06-30 08:46:06 +03:00
Sebastian Dröge
c61d913ec6
tracer: Add support for the 1.20 "plugin-feature-loaded" hook
2022-06-29 10:13:59 +03:00
Sebastian Dröge
9e77ab3212
tracer: Re-order trait functions slightly for the order to make more sense
2022-06-29 10:13:36 +03:00
Sebastian Dröge
14f485d0b1
bus: Take ownership of the message in post()
2022-06-28 23:36:08 +03:00
Sebastian Dröge
20ac231146
gstreamer: Allow borrowing Segment
s from Value
s without copying
2022-06-27 22:28:49 +03:00
Sebastian Dröge
c9d07219c8
Store whether GStreamer was initialized in an AtomicBool
...
Avoids a function call in the normal case.
2022-06-27 10:28:28 +03:00
Sebastian Dröge
b28664ccbd
gstreamer: Fix serde serialization tests
...
ron serialization is now writing `1.0` instead of just `1`.
2022-06-24 11:13:06 +03:00
Stephan Seitz
c254c5fd1a
gstreamer: add PadProbeId::as_raw()
...
This allows to convert PadProbeId to numberic values without
taking them by value (like `into_glib`).
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/382#note_1391236
2022-05-23 08:19:47 +00:00
Sebastian Dröge
cb1f08a425
gstreamer: Implement FusedFuture for PromiseFuture
2022-05-22 12:42:42 +03:00
Sebastian Dröge
aaf601831e
gstreamer: Index structures/taglist more safely
...
Accessing after the length will lead to a critical warning and should
not happen.
2022-05-22 12:42:42 +03:00
Sebastian Dröge
d4430ecc6a
Implement more iterator functions / traits in custom iterators for efficiency reasons
2022-05-22 12:42:42 +03:00
Philippe Renon
8f1c94f45d
Regenerate with latest gir
2022-05-20 17:48:40 +02:00
Sebastian Dröge
e76ae3f434
gstreamer: Fix a few new clippy warnings
2022-05-20 11:19:07 +03:00
Philippe Renon
5d2f36fac3
gstreamer: implement FromGlibPtrBorrow trait for gst::Structure
...
needed for callbacks that pass GstStructure by reference
for example: the PlaySignalAdapter error and warning signals
needed by https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1036
2022-05-17 23:19:35 +02:00
Sebastian Dröge
45e16f7753
gstreamer: Add #[must_use]
annotation to PadTemplateBuilder
2022-05-08 11:41:54 +03:00
Guillaume Gomez
c1d3ed5eac
Use IntoGlibPtr trait instead of implementing into_ptr
2022-05-07 13:38:11 +02:00
Sebastian Dröge
cd49659fae
gstreamer: Add a PadTemplateBuilder
...
And only allow setting documentation caps via that. It's not actually
allowed to update the documentation caps at random times as it is not
thread-safe.
2022-05-06 16:57:06 +03:00
Sebastian Dröge
0aa59be45c
gstreamer: Improve accessors to various pad template fields
2022-05-06 16:22:40 +03:00
Sebastian Dröge
45856ac35b
gstreamer: Return a glib::List
instead of a Vec
for the pad template list
...
Avoids an unnecessary allocation for the `Vec`.
2022-05-06 12:42:52 +03:00
Vivienne Watermeier
1b22be2e15
Add De/Serialization for most bitflag types
...
Represents combinations of flags with a '+' separated string of nicks,
or an empty string for no flags set.
Note that most flag types will ignore any flags using multiple bits when
serializing, since in most cases these flags cover all used bits.
2022-05-06 09:05:52 +00:00
Vivienne Watermeier
94b5a13f4b
Regenerate with Gir.toml changes
2022-05-06 09:05:52 +00:00
Sebastian Dröge
4a28a188d9
Regenerate with latest gir/gir-files
2022-05-03 15:37:25 +03:00
Sebastian Dröge
2b7a63fc8e
gstreamer: Implement FusedStream
for the Bus
stream
2022-04-30 21:10:59 +03:00
Sebastian Dröge
7420a72831
gstreamer: Add error/warning/info message constructors from a pre-existing glib::Error
2022-04-21 15:33:51 +03:00
Sebastian Dröge
40dcdcbf5c
gstreamer: Simplify error/warning/info message builders
2022-04-21 15:03:50 +03:00
Jan Alexander Steffens (heftig)
7d2ab1450e
gstreamer: Export subclass::TaskPoolFunction
...
This must be accessible in order to subclass TaskPool.
2022-04-07 17:57:59 +00:00
Sebastian Dröge
4651c9db4d
Update minimum supported version to 1.14
...
This is the version that is available in Ubuntu 18.04.
2022-04-07 12:45:47 +03:00
Sebastian Dröge
9a8ca0cadd
gstreamer: Add bindings for the new 1.22 selectable query
2022-04-06 10:18:48 +03:00
Sebastian Dröge
627f4d798e
gstreamer: Get rid of some duplicated feature cfg attributes
2022-04-06 10:18:48 +03:00
Sebastian Dröge
bcf4f63ac6
gstreamer: Don't make the bitrate query available at all with v1_16
2022-04-06 09:51:19 +03:00
Sebastian Dröge
b36b63c60a
Regenerate with latest gir files
2022-04-06 09:38:34 +03:00
Sebastian Dröge
23e4d1efa8
Regenerate with latest GStreamer gir files
2022-04-05 19:49:05 +00:00
Sebastian Dröge
8d03a0d032
gstreamer: Complete the Task bindings
2022-04-04 18:56:25 +03:00
Sebastian Dröge
4d002786ec
gstreamer: Don't re-export traits from the crate root
2022-04-04 08:51:04 +00:00
Sebastian Dröge
73ab9054c4
Don't use unnecessary RefCell wrappers for FnMut callbacks
...
They don't add any safety as this is via unsafe code anyway and are not
needed to get mutable references in this context anyway, while adding a
bit of runtime overhead.
2022-04-03 11:15:19 +03:00
Jan Alexander Steffens (heftig)
b7afdd4dd0
gstreamer: Add TaskPool bindings and subclassing
...
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/14
2022-03-30 23:01:21 +02:00
Jan Alexander Steffens (heftig)
44b2eba600
Update gir
2022-03-30 22:36:53 +02:00
Sebastian Dröge
07be60a22f
Don't unnecessarily borrow dereferenced values explicitly
...
warning: this expression borrows a value the compiler would automatically borrow
--> gstreamer-rtsp-server/src/rtsp_session_pool.rs:16:5
|
16 | (&mut *func.borrow_mut())(&from_glib_borrow(pool)).into_glib()
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `(*func.borrow_mut())`
|
= note: `#[warn(clippy::needless_borrow)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
2022-03-24 12:40:52 +02:00
Sebastian Dröge
609a744d6c
Regenerate autogenerated bindings
2022-03-17 18:05:13 +02:00
Sebastian Dröge
12f1483d43
gstreamer: Create plugins with version 1.21 if v1_22 is selected
2022-03-17 11:06:26 +02:00
Christian Meissl
44d39f8824
Add infrastructure for casting from/to memory subtypes
2022-03-12 14:19:40 +00:00
Sebastian Dröge
b69043d462
gstreamer: Require Send
and not Sync
for the values of an Array
/ List
...
`Sync` is more than required here: only sending of the values to another
thread is required.
2022-03-08 14:46:13 +02:00
Sebastian Dröge
1f7a0f29d9
gstreamer: Update for optional glib::Value
type refactoring
2022-03-07 13:20:08 +02:00
Sebastian Dröge
0f22eb7633
Remove now unnecessary Send+Sync
impls for element/etc subclasses
...
This is now automatically implemented.
2022-02-28 18:25:15 +02:00
Sebastian Dröge
319f1c68a5
gstreamer: Simplify and speed up log message string construction
...
For pre-1.20 simply use `%s` as format string instead of escaping the
`%` inline while writing. This allows a simpler implementation and is
also faster, see https://github.com/gtk-rs/gtk-rs-core/pull/583 .
2022-02-26 13:33:00 +02:00
Sebastian Dröge
fc1185b951
gstreamer: Add builders for the fraction/array paramspecs
2022-02-22 00:00:39 +02:00
François Laignel
972c4e75ac
remove gst_ prefix for log macros
...
It's quite quite common to use similar macros in the form `log::debug!`
or `glib::clone!`. This MR renames the gst log macros so that we can
`gst::debug!` instead of `gst_debug!` and whithout the need for
`use gst::gst_debug`.
2022-02-21 18:56:06 +01:00
Marijn Suijten
462e19dee9
gstreamer/plugin_1_14: Use minor version 20 instead of 19 for v1_20
...
Now that gstreamer 1.20 is out all v1_20 plugins will be linked against
the 1.20 stable release, not the unstable 1.19 development release.
2022-02-18 11:33:17 +01:00
Sebastian Dröge
d68c359db5
gstreamer: Fix downcast_ref()
/ downcast_mut()
impls on MiniObjectRef
...
They have to return the `Ref` type and not the owned type.
2022-02-16 12:13:19 +02:00
Sebastian Dröge
a1fed48e8c
gstreamer: Add Debug
impl for MiniObject
/ MiniObjectRef
2022-02-16 12:13:03 +02:00
Sebastian Dröge
d1f978f9f1
gstreamer: Improve StreamsSelectedBuilder::streams()
...
It's much easier to use if it takes any kind of iterator instead of a
slice of references.
2022-02-14 13:44:19 +02:00
Christian Meissl
033dac2270
support for subclassing buffer pool
2022-02-08 15:59:55 +01:00
Sebastian Dröge
0173b73170
Handle empty slices correctly
...
Passing `NULL` to `slice::from_raw_parts` is invalid.
2022-02-07 12:50:37 +02:00
Sebastian Dröge
47ae1c8658
Regenerate with latest gir files
2022-02-04 12:35:01 +02:00
Sebastian Dröge
deced8b3b8
Regenerate with latest GStreamer gir files
2022-01-29 18:17:26 +02:00
Sebastian Dröge
26f2ed30ae
Regenerate with latest gst-gir-files
2022-01-25 13:10:58 +02:00
Sebastian Dröge
06cf5de45f
Get rid of fragile dependency and use GLib API instead
2022-01-24 19:33:15 +02:00
Sebastian Dröge
13eb483444
Regenerate everything with latest gir
2022-01-24 19:29:18 +02:00
Sebastian Dröge
eecce101da
gstreamer: Implement FromValue
for mini object references
2022-01-24 13:13:24 +00:00
Sebastian Dröge
b66a00ed07
gstreamer: Minor cleanup
2022-01-24 14:48:36 +02:00
Sebastian Dröge
ab0eb8a1a4
gstreamer: Add bindings for gst_debug_log_get_line()
2022-01-24 14:48:21 +02:00
Sebastian Dröge
5e2249d368
message/query/event: Implement views in a more consistent way
...
Co-authored-by: Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>
2022-01-19 13:29:59 +02:00
Sebastian Dröge
68d492bb33
gstreamer: Mark Structure
and CapsFeatures
as #[repr(transparent)]
too
2022-01-17 19:42:20 +00:00
Jan Alexander Steffens (heftig)
fb56bbda6e
gstreamer: Split parsers for owned and borrowed views
...
When we have a view like `Caps<&EventRef>`, we can return a `CapsRef`
borrowing from the wrapped `EventRef`. This way, the `CapsRef` we return
can outlive the view itself.
This is in contrast to a `Caps<Event>` view which owns the `Event`.
Here, the `CapsRef` we return cannot outlive the view.
gstreamer-rs 0.18 consolidated code and treated everything like the
latter case. Fix this by duplicating the accessors for each case.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/367
2022-01-17 19:13:47 +00:00
Sebastian Dröge
8f5e373882
gstreamer: Mark miniobject wrapper types as #[repr(transparent)]
...
That way they're treated everywhere exactly like a raw pointer.
2022-01-17 18:04:40 +00:00
Sebastian Dröge
8fa1076dfa
Replace Foo::from_instance(foo)
with foo.imp()
2022-01-17 19:34:06 +02:00
Sebastian Dröge
711a4bb76e
gstreamer: Silence a new clippy warning in the tests
2022-01-14 12:58:26 +02:00
Sebastian Dröge
605c633579
Ignore clippy::non_send_fields_in_send_ty
lint
...
It's useless in its current shape and wrongly triggering on all types.
See https://github.com/rust-lang/rust-clippy/issues/8045
2022-01-13 23:38:11 +02:00
Sebastian Dröge
9eb479cf78
Regenerate everything
2022-01-12 15:40:36 +02:00
Sebastian Dröge
843d3749b7
caps: Add bindings for foreach()
, map_in_place() and
filter_map_in_place()`
2022-01-11 13:37:40 +00:00
Sebastian Dröge
1b46bca2db
structure: Add bindings for foreach()
, map_in_place() and
filter_map_in_place()`
2022-01-11 13:37:40 +00:00
Sebastian Dröge
6d63180bfc
Update for glib::Quark API changes
2022-01-11 12:50:13 +02:00
Guillaume Gomez
ac9b1e881c
Add missing #[must_use] attribute for clippy
2022-01-04 19:43:07 +01:00
Guillaume Gomez
27dd305cb4
Regen to get #[must_use] attributes generated
2022-01-04 19:02:58 +01:00
Sebastian Dröge
bbcd221e8d
Change from impl_() to imp()
2021-12-28 17:50:06 +02:00
Sebastian Dröge
1e18c59d2a
Implement glib::ValueTypeOptional for various types
2021-12-16 17:40:39 +00:00
Luca BRUNO
c30eff771a
Regenerate with latest gir (gboolean return codes)
2021-12-14 11:43:30 +00:00
Paolo Borelli
97f59d34fa
Add the has_name() fn to EventRef, MessageRef and StructureRef
...
They are handy and they match the C api
2021-12-14 09:59:39 +01:00
Sebastian Dröge
9bf5f641ff
Regenerate with latest gir
2021-12-12 17:54:20 +02:00
Sebastian Dröge
1541fbf32a
gstreamer: Add many new doc aliases for C function
2021-12-12 17:52:32 +02:00
Luca BRUNO
d1cc8d1298
Regenerate with latest gir (assert safe gerror)
2021-12-07 12:07:45 +00:00
Sebastian Dröge
ee1a5e8395
Add #[must_use] attribute to many builders
2021-12-04 10:26:08 +02:00
Sebastian Dröge
f6dc14b946
Add a few missing docs aliases for constants
2021-12-03 10:19:22 +02:00
Sebastian Dröge
7d968d78bb
Silence false needless_option_as_deref
clippy warnings
...
See https://github.com/rust-lang/rust-clippy/issues/8047
2021-12-02 17:52:23 +02:00
Mathieu Duponchelle
8e6c08f8fd
gstreamer/value_serde: fix nested structures
...
When serializing a structure, if it contains a nested structure
the serialization / deserialization code goes through value_serde,
which was lacking support for Structure.
2021-12-01 17:41:48 +00:00
Sebastian Dröge
c965217e54
gstreamer: bufferlist: Implement buffer foreach functions around ControlFlow
enum
...
This makes it clearer than a plain `bool` or `Result<Option<Buffer>, Option<Buffer>>`.
Also pass a `&Buffer` instead of a `&BufferRef` to the immutable foreach
function to allow taking references of the buffer outside the scope of
the closure by cloning instead of requiring a full copy.
2021-12-01 14:16:33 +02:00
Sebastian Dröge
15fbb17a09
gstreamer: buffer: Implement meta foreach functions around ControlFlow
enum
...
This makes it clearer than a plain `bool` or `Result<bool, bool>`.
2021-12-01 14:02:50 +02:00
Tim-Philipp Müller
e0e17b8b25
gstreamer: pad: use ControlFlow with custom enum for sticky_events_foreach() return value
...
... instead of Result<Option<Event>,Option<Event>> which isn't very nice.
And use static dispatch instead of dynamic dispatch.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/361
2021-12-01 14:02:50 +02:00
Piotrek Brzeziński
abd2d4dfd7
gstreamer: Add getters for ElementFactory/DeviceProviderFactory metadata
2021-11-28 21:00:05 +01:00
Bilal Elmoussaoui
86b07ce5b9
regen per emit_by_name changes
2021-11-21 09:35:36 +01:00
Sebastian Dröge
668b2b3fdf
gstreamer: Use glib::List
in various places for reducing allocations when working with factory lists
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/359
2021-11-20 14:44:49 +02:00
Sebastian Dröge
9263c9f42e
gstreamer: Correctly rename ParamSpecArray
constructor
2021-11-20 13:47:18 +02:00
Sebastian Dröge
21d38e41d6
gstreamer: Rename DateTime
constructors to replace the new_
prefix with from_
2021-11-20 12:20:25 +02:00
Sebastian Dröge
3b28bccf03
Update for GLib constructor renames
...
See https://github.com/gtk-rs/gtk-rs-core/pull/384
2021-11-20 12:20:17 +02:00
Sebastian Dröge
ddf398e3da
gstreamer: Add various missing doc aliases to event/message/query functions
...
This is going to make it easier to find them from the corresponding C
function names.
2021-11-19 10:38:46 +00:00
Sebastian Dröge
2471150e72
gstreamer: Add bindings for StreamCollection::stream-notify
signal
2021-11-19 10:57:54 +02:00
Sebastian Dröge
63f6d6a7d3
gstreamer: Make child proxy property API more consistent with the object property API
...
And especially check various conditions for the property and the value.
Also add `ChildProxy::lookup()`.
2021-11-19 10:54:52 +02:00
Sebastian Dröge
7c1ed9ff4d
Regenerate with latest gir
...
Updates to use system-deps 6
2021-11-18 16:32:17 +02:00
Bilal Elmoussaoui
e61b83f592
regenerate with not renamed libs on ffi crates
2021-11-17 12:00:06 +01:00
Sebastian Dröge
279f1a404b
gstreamer: Use glib::SList
instead of our own version of it for listing all debug categories
2021-11-16 20:18:31 +02:00
Sebastian Dröge
e68790d579
gstreamer: Directly format into a NUL
-terminated C string for debug log messages
...
And also replace `%` with `%%` for < 1.20 inline, and for >= 1.20 use
the new `gst_debug_log_literal()` function that doesn't require this and
also reduces string allocations further.
2021-11-16 20:18:31 +02:00
Sebastian Dröge
e74f54a64f
Regenerate with latest gst-gir-files
2021-11-16 20:18:31 +02:00
Bilal Elmoussaoui
0d391d5031
regenerate with latest gir
2021-11-16 15:47:44 +01:00
Sebastian Dröge
a2e22416fe
gstreamer: Don't try removing locked metas from buffers
...
And return success from the `remove()` function.
2021-11-16 13:08:23 +02:00
Sebastian Dröge
df36a7c57a
gstreamer: Add gst::MetaFlags
and accessor on meta
2021-11-16 13:05:47 +02:00
Sebastian Dröge
0b544ffbd3
Simplify glib::IsImplementable
trait implementations
2021-11-15 11:48:14 +02:00
Sebastian Dröge
dd9e12822f
Regenerate with latest gir
2021-11-13 11:05:09 +02:00
Sebastian Dröge
c6c499aed2
gstreamer: Update test for glib::EnumClass API changes
2021-11-13 11:03:52 +02:00
Bilal Elmoussaoui
d788a10856
re-generate with per crate min version
2021-11-11 12:26:29 +01:00
Sebastian Dröge
f27a2bddd6
gstreamer: Add bindings for DebugCategory::all() to list all available debug categories
2021-11-09 09:58:22 +00:00
Bilal Elmoussaoui
e3a65a3a88
gst object: add a panicking variant of set_property_from_str
...
Similar to what was added to ObjectExt
2021-11-08 14:42:59 +01:00
Bilal Elmoussaoui
213020165a
manual changes post ObjectExt improvements
2021-11-08 14:42:59 +01:00
Bilal Elmoussaoui
0d009bca31
regen with latest gir
2021-11-08 14:42:59 +01:00
Sebastian Dröge
0444660d1f
gstreamer: Don't use a trait object for the property value in ChildProxy::set_child_property()
...
This makes it nicer to use as `1` can be passed directly instead of `&1`.
2021-11-06 09:36:38 +02:00
Sebastian Dröge
220c500799
gstreamer: Add numer()/denom() functions to gst::Fraction to get the values by value instead of reference
2021-11-06 00:23:07 +02:00
Sebastian Dröge
a3015ab507
gstreamer: Refactor gst::IntRange constructors to not require specifying the contained type necessarily
2021-11-06 00:23:07 +02:00
Sebastian Dröge
9901f0c6a2
gstreamer: Refactor gst::Array / gst::List bindings to work correctly with the refactored traits in glib
...
Also allow only a single type inside them.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/360
2021-11-06 00:23:07 +02:00
Sebastian Dröge
30bb699cbc
gstreamer: Use plain &str for parameters instead of Into<&str>
...
The latter doesn't really have any advantage and only bloats the API.
2021-11-05 17:37:41 +02:00
François Laignel
82b7239379
regen: NONE as associated consts
2021-11-04 18:42:06 +01:00
Sebastian Dröge
c942a1d563
gstreamer: Implement Element::request_pad_simple()
only once
...
With < 1.20 it will use `gst_element_get_request_pad()` and otherwise
`gst_element_request_pad_simple()`. It's not marked as deprecated in
either case.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/358
2021-11-04 15:44:35 +02:00
Sebastian Dröge
cdfe4b3d67
Remove unneeded std::convert::TryFrom/TryInto and std::str::FromStr imports
2021-10-31 18:20:31 +02:00
Sebastian Dröge
d785bf8c3a
Regenerate with latest gir
2021-10-31 11:47:34 +02:00
Sebastian Dröge
e657e676d5
Relax main context checks in Bus::add_local()
and gst_video::convert_sample_async_local()
2021-10-25 09:54:33 +00:00
Sebastian Dröge
92f9f3be39
Remove various unnecessary & from property/structure field related code
2021-10-24 20:52:23 +03:00
Sebastian Dröge
b4a3738b82
Move more code to caps/structure builders
...
Instead of the new() functions requiring slices. The code reads cleaner.
2021-10-24 18:57:15 +03:00
Sebastian Dröge
7f0ca0011c
Add gst::GstObjectImpl, gst::ProxyPadImpl, gst_audio::AudioBaseSrc, gst_audio::AudioBaseSink subclassing traits
...
These were missing from the type hierarchy previously and are now
required because of more strict checks in the GLib bindings.
2021-10-23 11:59:03 +03:00
Sebastian Dröge
12fec484c7
Simplify IsSubclassable trait impls
2021-10-23 11:27:46 +03:00
Sebastian Dröge
cc76442601
gstreamer: Update ron dev-dependency to 0.7
2021-10-23 10:40:24 +03:00
Sebastian Dröge
18e45dd991
gstreamer: Add FromIterator/Extend impls based on owned Strings and glib::Quark
2021-10-20 14:28:14 +03:00
Sebastian Dröge
a7be9ea9d9
gstreamer: Implement Extend trait for buffer, buffer list, caps, caps features and structure
...
And also implement FromIterator<Memory> for buffer.
2021-10-20 13:53:23 +03:00
Sebastian Dröge
e6b78d1489
gstreamer: Have Structure::from_iter() take owned values
...
They were copied internally, which can be avoided in many cases if
working with owned values anyway.
2021-10-18 16:36:15 +03:00
François Laignel
4bbd201377
Impl Option*{Div,Mul,Rem}
...
Use the inner type for Rhs, as implemented for Duration.
These operations make sense without providing a "unit".
2021-10-18 14:30:59 +02:00
François Laignel
deb22b264e
format, clock_time: gather macros together
...
The modules format and clock_time share common macros which are
scattered between each modules. This cross reference makes it
difficult to maintain the macros.
This commit also make it possible to use macro
impl_common_ops_for_newtype_uint for Percent.
2021-10-18 14:30:59 +02:00
François Laignel
986a136492
clock_time & format: basic opt-ops impl
...
The option-operations crate provides traits to improve usability
when dealing with `Option`s, which is often the case with
`ClockTime` & most formats.
2021-10-18 14:30:59 +02:00
François Laignel
051df59cd1
clock_time, format: fix checked, saturating, wrapping ops
...
These operations were implemented using the integer implementations.
These types' MAX values are different from the integers so they must
use specific implementations.
Also add the overflowing variants.
2021-10-18 14:30:59 +02:00
Guillaume Desmottes
675fe349a7
gstreamer: implement Sum on ClockTime
...
Small convenient helper.
2021-10-18 08:05:56 +02:00
Sebastian Dröge
67af5ac569
gstreamer: Add support for 1.18 instant rate request message
2021-10-17 14:39:38 +03:00
Sebastian Dröge
cdddf48f08
gstreamer: Correctly mark various messages as new in 1.10/1.16
2021-10-17 14:33:34 +03:00
Sebastian Dröge
6e3878c8f5
gstreamer: Add bindings for 1.18 instant-rate-change related events
2021-10-17 14:27:44 +03:00
Sebastian Dröge
8b77bd4068
gstreamer: Mark select-streams / stream-collection as only available in 1.10
2021-10-17 14:11:56 +03:00
Sebastian Dröge
d01ed466d0
gstreamer: Use #[non_exhaustive] annotation instead of a dummy enum variant
2021-10-17 14:04:18 +03:00
Sebastian Dröge
aab0a45cfc
gstreamer: Implement pad sticky event getter by type
...
This allows the caller to directly use the specific event type API on
the result instead of first having to match on it first.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/314
2021-10-17 14:04:18 +03:00
Sebastian Dröge
87e7a84a27
gstreamer: Remove one unnecessary use of unsafe in query code
2021-10-17 12:38:59 +03:00
Sebastian Dröge
e989899467
gstreamer: Remove FromIterator impls on references
...
Creating copies silently while calling collect() is unexpected and can
explicitly added to the iterator via map() if needed.
2021-10-17 11:21:31 +03:00
Sebastian Dröge
3670076f07
gstreamer: Implement IntoIterator / FromIterator for Buffer, BufferList, Caps, CapsFeatures, StreamCollection and Structure
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/285
2021-10-16 23:24:08 +03:00
Philippe Normand
b9cd38b796
gstreamer: query: Tidy up allocation pool API
...
Use `impl IsA<BufferPool>` and make the `set_nth_` and
`remove_nth_` methods check the index bounds.
2021-10-12 17:16:21 +01:00
Philippe Normand
6d88e18772
gstreamer: Add bindings for querying allocation params
...
This can be used to query downstream for custom allocators.
2021-10-12 17:16:21 +01:00
Sebastian Dröge
8fb37c5134
gstreamer: Implement Deref<Target=[glib::SendValue]> for List and Array
2021-10-12 11:24:54 +03:00
Sebastian Dröge
1c7b4516f9
Regenerate everything with latest GStreamer gir files
2021-10-08 19:44:38 +03:00
Sebastian Dröge
c4cbcecc7c
Regenerate everything
2021-09-28 18:11:20 +03:00
Sebastian Dröge
baccf52e43
Regenerate with latest gir
2021-09-28 15:46:37 +03:00
Sebastian Dröge
f5f5fae815
Regenerate with latest gir and gtk-rs gir-files
2021-09-28 12:55:58 +03:00
Jan Alexander Steffens (heftig)
c05d2e24af
gstreamer/clock_time: Format Debug like Display
...
This allows us to drop `.to_string()` from the custom Debug
implementations, which now also no longer print as strings.
2021-09-23 02:19:41 +02:00
Sebastian Dröge
14edcf9aaf
Regenerate with latest gir
2021-09-22 12:02:53 +03:00
Marijn Suijten
226419003d
Use impl
for some Into*
trait bounds
2021-09-21 23:54:11 +02:00
Marijn Suijten
669bf52291
Use impl
for AsRef
trait bounds
2021-09-21 23:54:07 +02:00
Marijn Suijten
13165938ab
Regen
2021-09-20 20:38:25 +02:00
Marijn Suijten
e2a9f83f5b
gir: Update and regenerate with impl Trait
instead of named types
...
https://github.com/gtk-rs/gir/pull/1153
2021-09-20 20:19:04 +02:00
Sebastian Dröge
a1c4a58180
Bind various new API
2021-09-19 13:12:58 +00:00
Sebastian Dröge
4b8f85c4c6
Regenerate with new gir and gir files
2021-09-19 13:12:58 +00:00
Sebastian Dröge
1856d47a06
gstreamer: Add bindings to MiniObject together with casting functionality
...
This is only possible with 1.20 because gst_mini_object_get_type() was
added then. Previous versions only provide bindings for the specific
types, like Caps, Event, etc.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/353
2021-09-19 13:12:58 +00:00
Sebastian Dröge
538ce91987
gstreamer: Provide getter for meta type in addition to meta API type
2021-09-19 15:45:58 +03:00
Sebastian Dröge
7c5303c492
gstreamer: Add support for gst::CustomMeta
2021-09-19 15:45:58 +03:00
Sebastian Dröge
80ee1edec5
gstreamer: Clean up meta code a bit
2021-09-19 15:45:58 +03:00
Jonas Platte
4b2f0a936b
Derive PartialOrd, Ord and Hash for PadProbeId
2021-09-15 20:12:03 +02:00
Sebastian Dröge
6b4f6ca45c
gstreamer/device_provider: Add constructor for device provider metadata
2021-09-13 11:34:00 +03:00
Guillaume Gomez
c68b601c74
regen
2021-08-31 15:11:15 +02:00
Simonas Kazlauskas
db30c121a0
const ElementMetadata constructor
...
The usual use of this will be through the `ElementImpl::metadata`
method, which requires a `&'static` reference to `ElementMetadata` to be
returned, so we better make it easy to construct these (without forcing
people to resort to `Lazy`'n'stuff)
2021-08-31 09:10:31 +00:00
Marijn Suijten
adfb6e35a4
Update gir and regenerate with attributes removed from macro calls
...
See https://github.com/gtk-rs/gir/pull/1213 .
2021-08-30 09:52:36 +02:00
Marijn Suijten
12887f1931
gstreamer: Move attributes on macro-calls like cfg_if
inside the macro
...
Attributes don't do anything when applied to macro invocations:
warning: unused attribute `doc`
--> gstreamer/src/lib.rs:146:29
|
146 | #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_14")))]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_attributes)]` on by default
note: the built-in attribute `doc` will be ignored, since it's applied to the macro invocation `cfg_if::cfg_if`
--> gstreamer/src/lib.rs:147:1
|
147 | cfg_if::cfg_if! {
| ^^^^^^^^^^^^^^
And, on line 294-295:
warning: unused attribute `doc`
--> gstreamer/src/lib.rs:294:33
|
294 | #[cfg_attr(feature = "dox", doc(cfg(feature = "v1_14")))]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: the built-in attribute `doc` will be ignored, since it's applied to the macro invocation `cfg_if::cfg_if`
--> gstreamer/src/lib.rs:295:5
|
295 | cfg_if::cfg_if! {
| ^^^^^^^^^^^^^^
Fortunately these two `cfg_if`'s for the Unix and Windows bus already
apply unnecessary trickery that duplicates the `mod`s and `use`s in
order to get documenation for both no matter the target platform; we can
capitalize on that by removing the `cfg_if` altogether and instead
applying the `cfg` and `doc(cfg())` attributes directly.
2021-08-29 11:21:46 +02:00
Simonas Kazlauskas
782d84bede
Remove the links
annotations
...
The `links` annotation in `Cargo.toml` is intended to ensure that in the
crate graph there's at most one crate that's an implementation of
some sort concept.
This can make sense in some scenarios, most prominent of which is when
the crate defines `#[no_mangle]` symbols (e.g. by compiling a vendored C
library.) In that situation linking a binary that depends on two
versions of the library cannot work because of colliding symbol names.
There does not appear to be a similar reason to impose such a
restriction on the users of `gstreamer-sys` and similar, however. All of
these crates link to a system library, they do not define any
`#[no_mangle]` symbols nor they vendor and build C libraries as part of
their build process. All they do is linking to a system library. Most
likely all the different versions of the bindings will link to the exact
same library too.
I haven't seen any global resources that these bindings use to ensure
soundness of the library, either.
2021-08-23 16:56:27 +00:00
Sebastian Dröge
bdccaeee0d
gstreamer: Manually implement Object::set_property_from_str() to be able to catch deserialization errors
2021-08-17 09:12:38 +03:00
Sebastian Dröge
43bfd1ae85
gstreamer: Add Value::deserialize_with_pspec() from 1.20
2021-08-17 08:53:53 +03:00
Sebastian Dröge
c5c9fd81e4
gstreamer: Value::deserialize() needs to take the target type as parameter
...
Otherwise it will always fail.
2021-08-17 08:53:52 +03:00
Jordan Petridis
2ded2837ba
tracer: add rustdoc-stripper-ignore-next annotations
2021-08-16 18:49:23 +03:00
Edward Hervey
f504493134
gstreamer: Add serde support for more enums and flags
...
PadDirection, PadPresence, URITYpe, Rank
2021-08-16 15:05:37 +02:00
Simonas Kazlauskas
cb475e0965
Bindings to GstTracer and GstTracerFactory
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/147
2021-08-16 14:38:22 +03:00
Simonas Kazlauskas
3ad9d3340b
Make plugin date-time optional
...
It is described as optional in
https://gstreamer.freedesktop.org/documentation/gstreamer/gstplugin.html?gi-language=c#GstPluginDesc
and is also pretty difficult to provide for Rust plugins, I feel. For C
stuff the expectation is that build system would set something like
GST_PACKAGE_RELEASE_DATETIME=`date -u "+%Y-%m-%dT%H:%MZ"` which is
terrible.
2021-08-10 17:38:55 +03:00
Guillaume Gomez
26a6fba6e2
regen
2021-08-03 11:55:44 +02:00
Guillaume Gomez
e2264a3f3f
Fix (new) clippy warnings
2021-08-03 10:08:32 +02:00
Guillaume Gomez
a0d82ec741
Merge README files and crate documentation
2021-07-30 20:26:11 +02:00
Sebastian Dröge
b1afc4804a
Fix various needless-borrow clippy warnings
2021-07-30 13:19:24 +03:00
Olivier Crête
93c794b338
subclass: Declare minimum to be 1.19 for v1_20
2021-07-13 08:42:56 +03:00
Sebastian Dröge
b73b4428ba
gstreamer/segment: Return a segment reference instead of the value itself from the getter
2021-07-12 14:22:09 +03:00
Vivia Nikolaidou
eb5df0ae26
event: Implement gap_flags
2021-07-09 16:27:41 +03:00
Vivia Nikolaidou
45f8035ccb
structure, caps: Implement 1.20 serialize functions
2021-07-09 15:10:02 +03:00
Sebastian Dröge
edac1a1d3a
gstreamer/element: Include ElementExtManual::request_pad_simple() in the docs too
...
Currently only the v1_20 ElementExt::request_pad_simple() appears in the
docs but it's available from the other trait in older versions.
2021-06-30 09:26:51 +00:00
Sebastian Dröge
c0904af4a7
Regenerate with latest gir-files
2021-06-28 18:34:03 +03:00
Sebastian Dröge
9123143b57
Regenerate
2021-06-24 08:58:46 +03:00
Guillaume Gomez
dfeb777513
regen
2021-06-21 23:07:45 +02:00
Sebastian Dröge
a94d84e780
Silence/fix various clippy warnings
2021-06-20 10:59:49 +03:00
Guillaume Gomez
64d1598336
regen
2021-06-13 20:52:12 +02:00
Sebastian Dröge
0a71e3c8da
Regenerate with latest gir
2021-06-10 12:53:52 +03:00
François Laignel
e31ce9d07b
Manual ClockTime updates
2021-06-04 22:09:38 +02:00
François Laignel
90bb458e64
Rework ClockTime & FormattedValues
2021-06-04 22:09:38 +02:00
François Laignel
8dda8def6e
Manual try_from_glib shortcuts + unsafe
2021-06-04 22:09:38 +02:00
François Laignel
03e8e6d22f
regen: use TryFromGlib::Option for ClockTime
2021-06-04 22:09:38 +02:00
Marijn Suijten
510e4cd2b1
Regenerate with 1.19.1 updates
2021-06-04 11:51:00 +02:00
Marijn Suijten
9fd768425e
Rename request_pad_simple to avoid 1.19.1 clash
...
Fixes: 3f442d977
("prep for regen: relaxed get fn identification")
2021-06-03 20:35:35 +02:00
Marijn Suijten
3d8d1ffb19
Update gir and regenerate with automated enum/flag member versioning
...
https://github.com/gtk-rs/gir/pull/1180
2021-06-03 20:33:34 +02:00