Previously, the tracer pad-push-event was only signalled on
gst_pad_push_event(). However, the sticky event handling code in
GStreamer uses gst_pad_push_event_unchecked() instead, which meant those
events were not logged.
This patch extends the definition of the pad-push-event tracer to cover
both calls to gst_pad_push_event() and any direct calls to
gst_pad_push_event_unchecked() that skip the former inside GstPad
private code.
gst_pad_push_event_unchecked() returns GstFlowReturn instead of
gboolean like gst_pad_push_event(). To maintain API compatibility, the
GstFlowReturn is converted to gboolean.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4182
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8342>
If starting the internal clock fails we would still store a broken clock in the
cache despite it being unusable and never recovering.
Not storing it allows the application to simply create a new one at a later time
and have starting it retried.
Also signal to the application that such a clock is not synced.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8334>
Commit de30de865cd added a hook for pad-chain-{pre,post} and
pad-chain-list-{pre,post}. As explained in that commit, hooking the
chain is helpful because it allows you to hook to buffer propagation in
both srcpads (pad-push) and sinkpads (pad-chain).
This patch uses the new hooks to log pad-chain in the log tracer.
Before, only pad-push was logged, so you could only follow the flow of
buffers through the srcpads.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8329>
gst_sparse_file_read() is supposed to set @error when returning 0 but
in some cases was not.
Hopefully fix a crash in gst_download_buffer_read_buffer() which is
checking error->code when 0 is returned.
I'm not totally sure when this happens as I debugged this from a post
mortem crash but returning a generic error here seems the safe thing to
do.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8321>
The generation script can fail to generate a configuration for the four
libraries where the documentation is not generated from gir, as it needs
to run pkg-config.
Only add the path to the configuration file to the sitemap once it has
successfully been dumped.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8324>
With this patch, configure time is identical no matter whether doc is
enabled or not.
The configuration files also now contain explicitly-listed sources with
no wildcards.
For the four libraries where hotdoc needs to use clang to generate the
documentation (as opposed to the rest of the libraries where hotdoc uses
the gir), the script will call pkg-config to determine the appropriate
C flags.
This means a side effect of this patch is that pkg-config files are now
generated for the gstadaptivedemux and gstopencv libraries.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8312>
It is a bit hard to track its origin as `git log --follow` leads all the
way to a 2001 Wim commit of a TODO file, but it was not used in the
documentation and the contained information appears in other places.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8312>
```
../subprojects/gstreamer/tests/check/elements/filesink.c: In function ‘test_seeking’:
../subprojects/gstreamer/tests/check/elements/filesink.c:92:23: warning: comparison of unsigned expression in ‘< 0’ is
always false [-Wtype-limits]
92 | for (i = 0; i < num_bytes; ++i) \
| ^
../subprojects/gstreamer/tests/check/elements/filesink.c:266:3: note: in expansion of macro ‘PUSH_BYTES’
266 | PUSH_BYTES (0);
| ^~~~~~~~~~
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>
This can then be used by the pre-commit hook to avoid rebuilding
complete plugin caches to check a change, thus minimizing the potential
diff and making analysis of completely-unrelated cache diffs much less
likely.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8231>
Intead of passing around the output of the config generator program,
which consists of paths joined by a separator we can have the generator
simply produce an extra file containing those paths.
This commit only implements the new approach for the core plugins, as
this was needed to avoid spurious meson rebuilds when the pre-commit
hook regenerates the core plugins_cache.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8231>
A JSON configuration file is generated for core plugins, which maps
plugin names with sources to parse for docstrings.
The file is then opened by the configuration generator script, which
will now favor explicitly listed files to (usually wildcarded) paths
passed on its command line.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8231>
Previously the code tried to be thread-safe by only locking when modifying the
list and leaking the old list, but this was not sufficient. When removing a log
function, its user_data would be freed but this log function and its user_data
might afterwards still be used during logging which then could lead to memory
corruption.
To avoid that, use an RW lock: get a write lock whenever modifying the list and
get a read lock whenever only using the list of log functions for logging.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3660
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7151>
People might have GST_TRACERS=leaks set in their environment
by default, which will now trigger criticals during the build
when calling g-ir-scanner, because we unset GST_PLUGIN_SYSTEM_PATH
so that the scanner doesn't load any plugins.
Fixes#4093
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8121>
Instead of having each tracer implement its own parameter parsing,
centralize the handling in the tracer subsystem using GstStructure.
This simplifies tracer implementations and provides a consistent way
to handle properties.
It also allows for much better documentation by forcing tracer object
to expose properties
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8086>