Marijn Suijten
cb362e6fbc
gstreamer: plugin: Prefix glib:: with $crate:: in gst_plugin_define
...
Crates using gst_plugin_define might not (need to) import `glib`
directly into their scope; use the one imported in `gstreamer`s root
to make this macro more portable.
Besides, `glib` is prefixed with `$crate::` just below.
2020-10-10 11:54:20 +02:00
Marijn Suijten
10bc09ba82
gstreamer: error: Prefix gst_error_msg with $crate
...
This macro might not have been imported in the surrounding scope where
gst_panic_to_error is used, thus reference it directly by the full
namespace.
2020-10-10 11:47:41 +02:00
Sebastian Dröge
4f5b2f5060
Update for removal of ObjectImpl::get_type_data()
2020-07-26 18:02:05 +03:00
Sebastian Dröge
0cc32a02cc
gstreamer/element: Don't catch panics in post_message() vfunc
...
Otherwise we would post a message, which calls into this code again and
then does the whole thing recursively forever.
2020-07-01 01:36:16 +03:00
Sebastian Dröge
4fbbf48622
gstreamer/element: Change post_message() vfunc return type to bool
...
It regularly fails in normal situations, e.g. when the element is not
inside a bin and has no bus, and we don't really want to log errors for
that.
2020-07-01 01:15:57 +03:00
Sebastian Dröge
9cc99b27e0
gstreamer/element: Let post_message() and post_error_message() take ownership of the message
...
This is more in line with the C API and simplifies callers in Rust.
2020-06-30 23:55:02 +03:00
Sebastian Dröge
5b3d6418f0
gstreamer/element: Add support for overriding post_message vfunc
2020-06-30 23:46:51 +03:00
Sebastian Dröge
79c457c8c4
gstreamer/pad: Rename Pad::builder_from_template() to builder_with_template()
...
Sounds more natural as it creates a build that is initialized *with* a
template.
But keep Pad::from_template() as it creates a new pad *from* a template.
2020-06-22 11:26:24 +03:00
Sebastian Dröge
0c0d671922
gstreamer/pad: Don't provide constructors anymore but instead a builder
...
This handles safely setting the pad functions during construction and
also has special support for ghost pads.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/247
2020-06-22 10:55:24 +03:00
Sebastian Dröge
bfde1fd9d5
Update for new_with_XXX/new_from_XXX function renaming
2020-06-16 11:45:12 +03:00
Guillaume Desmottes
7b2fe31cc1
update gir generator and regenerate
2020-06-11 12:33:49 +02:00
Guillaume Desmottes
6cd711cfdf
subclass: clean up subclassing prelude/re-exports
...
Use re-export pattern from glib.
Fix #255
2020-06-09 14:36:37 +02:00
Sebastian Dröge
3f495ce1da
gstreamer/plugin: Register plugins with the correct minor version when building for 1.18
2020-05-08 14:32:50 +03:00
Sebastian Dröge
019afd54f9
Update for new from_glib_borrow signature
...
See https://github.com/gtk-rs/glib/pull/605
2020-04-05 18:48:48 +03:00
Sebastian Dröge
2b5f16391d
gstreamer/childproxy: Fix unused variable compiler warnings
2020-01-22 19:57:41 +02:00
Sebastian Dröge
280fe38fe4
gstreamer/childproxy: Don't require implementing child_added/removed() signal vfuncs
...
Most implementers will not care about default handlers for these signals
so requiring to implement them is only unnecessarily verbose.
2020-01-22 17:14:38 +02:00
Guillaume Desmottes
01c4d08501
gstreamer: use thiserror crate
...
Make code simpler and fix deprecated warning when building on nightly as
Error::description is being deprecated.
2020-01-10 18:54:50 +05:30
Sebastian Dröge
69be1ce2fc
Fix various new clippy warnings from 1.40
2019-12-22 12:10:27 +02:00
Sebastian Dröge
2ba5105b80
Implement Sync/Send for more types and don't implement Send for TypeFind
...
They can actually be shared with multiple threads at the same time
safely as all functions requiring an immutable reference are
thread-safe.
OTOH TypeFind can't be shared safely between different threads as not
all implementations of the TypeFind struct are thread-safe.
2019-12-18 18:37:44 +02:00
Sebastian Dröge
be3c378f28
Use Results instead of Options where they signal an error instead of just a missing value
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/216
2019-12-17 22:21:28 +02:00
Sebastian Dröge
f417d68820
Remove usage of glib_floating_reference_guard!()
...
It's not needed anymore.
2019-12-07 23:05:14 +02:00
Sebastian Dröge
2375c9da59
gstreamer/element: Don't steal floating references passed into release_pad()
...
They are apparently not part of this element so we can directly return
here instead of stealing the reference.
2019-12-07 22:58:26 +02:00
Sebastian Dröge
802fa4fcb4
gstreamer/bin: Take a strong reference of the element passed into remove_element()
...
It might be gone once we called into the parent class' implementation so
we need to keep a strong reference around here. Also we need to ensure
that we don't accidentally steal a floating reference from the caller
here: if the element is still floating it is apparently not part of this
bin and we can directly return FALSE.
2019-12-07 22:56:11 +02:00
Sebastian Dröge
bef1143df3
gstreamer/device: Preserve floating reference flag from create_element() parent class' implementation
2019-12-07 22:51:57 +02:00
Sebastian Dröge
84ac2ef073
bin: Use from_glib_none() in Bin::add() for subclasses
...
This way we take ownership of any floating references passed in here, as
required by the GstBin API, instead of just borrowing the reference and
having someone else sink it or not.
2019-12-04 18:49:12 +02:00
François Laignel
dc7937a8d4
Don't leak missing Safety doc clippy warnings
...
With rustc 1.40.0, clippy checks that the `unsafe` functions come with
a `Safety` section. When running clippy on a downstream crate, the
macros such as `gst_plugin_define!` leak the clippy warnings for the
unsafe functions.
Silence the warnings for now.
2019-11-18 10:25:06 +01:00
Sebastian Dröge
861f5c1e1a
Re-run cargo fmt
...
Minor changes in the latest version.
2019-10-04 08:19:24 +03:00
Sebastian Dröge
19b3427909
clock: Move wake_id() from ClockId to ClockImpl
...
This shouldn't really be called on anything outside a Clock
implementation.
2019-09-26 11:25:52 +03:00
Sebastian Dröge
6abb0d3506
gstreamer: Add support for subclassing gst::SystemClock
2019-09-25 17:22:15 +03:00
Sebastian Dröge
1c8b2c671b
gstreamer: Add support for subclassing gst::Clock
2019-09-25 17:22:15 +03:00
Sebastian Dröge
74b05f0272
gstreamer: Add support for implementing gst::TagSetter interface
2019-09-25 17:22:11 +03:00
Sebastian Dröge
eda3539330
gstreamer: Add support for implementing gst::Preset interface
2019-09-25 16:11:54 +03:00
Sebastian Dröge
7868018abb
gstreamer/element: Add support for ElementClass::add_metadata()
2019-09-12 10:18:23 +03:00
Sebastian Dröge
6dcd255815
gstreamer/deviceprovider: Add support for subclassing gst::DeviceProvider
2019-09-12 10:18:23 +03:00
Sebastian Dröge
9df56faf48
gstreamer/device: Add support for creating gst::Device subclasses
2019-09-11 22:46:15 +03:00
François Laignel
8af1da1a4e
Fully qualify inner macros for exported macros...
...
... otherwise they can't be resolved in dependent crates compiled
for edition 2018.
2019-09-02 09:06:29 +00:00
Mathieu Duponchelle
d3d503cea6
subclass/element: expose set_clock and provide_clock vmethods
2019-08-31 02:05:21 +02:00
Sebastian Dröge
e00781309b
gstreamer/element: Use from_glib_none() for the release_pad() trampoline
...
The reference to the pad we get passed is not guaranteed to be valid for
the whole scope of release_pad(). It might be the last reference as
owned by GstElement, and gst_element_remove_pad() would destroy it then.
2019-08-14 11:58:05 +03:00
Sebastian Dröge
004ce5d392
gstreamer: Re-export the paste crate for the gst_plugin_define! macro
...
And only depend on the paste crate if the subclass feature is requested.
2019-05-27 22:46:26 +02:00
Sebastian Dröge
faa6467d7a
gstreamer: Export new 1.14+ plugin symbols if configured for 1.14+
...
This is also needed for static linking on Android to work correctly.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/154
2019-05-27 20:22:05 +00:00
Arun Raghavan
61b1822c95
gstreamer: Fix URIHander::set_uri annotation
...
We don't actually accept a NULL uri, so it doesn't need to be an Option,
and using &str instead of String is more efficient.
2019-05-25 19:12:42 +02:00
Sebastian Dröge
6cef32a4dd
Change various mini object references to references to the refcounted object
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/204
2019-05-24 10:04:16 +00:00
Sebastian Dröge
a986914bad
Use Option<&T> instead of &Option<T> everywhere
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/203
2019-05-22 23:27:13 +03:00
Sebastian Dröge
698120c620
Add tests for pad and element subclassing
2019-05-11 13:45:09 +00:00
Sebastian Dröge
e7898c1b24
Update manual code
2019-04-15 19:19:19 +03:00
Sebastian Dröge
86a31b4139
Silence/fix various clippy warnings
2019-03-07 14:05:35 +02:00
Sebastian Dröge
8c39da4e5b
Update to Rust 1.31 linter-specific attributes
2019-03-04 15:16:01 +02:00
Sebastian Dröge
95f6844702
Fix various minor clippy warnings
2019-02-21 19:56:23 +02:00
François Laignel
fb99f1abad
gstreamer: subclassing: move parent fn in dedicated trait ( !231 )
2019-02-13 11:53:14 +00:00
François Laignel
fcb46ee5bf
gstreamer: add parent_xxx impl for all vfunc
2019-02-03 08:41:20 +00:00