Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gstreamer-devtools for openSUSE:Factory checked in at 2025-07-03 12:10:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gstreamer-devtools (Old) and /work/SRC/openSUSE:Factory/.gstreamer-devtools.new.1903 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-devtools" Thu Jul 3 12:10:26 2025 rev:36 rq:1289976 version:1.26.3 Changes: -------- --- /work/SRC/openSUSE:Factory/gstreamer-devtools/gstreamer-devtools.changes 2025-06-06 22:41:22.528623086 +0200 +++ /work/SRC/openSUSE:Factory/.gstreamer-devtools.new.1903/gstreamer-devtools.changes 2025-07-03 12:12:37.451092369 +0200 @@ -1,0 +2,7 @@ +Tue Jul 1 20:18:53 UTC 2025 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 1.26.3: + + validate: More memory leaks + + validate: Valgrind fixes + +------------------------------------------------------------------- Old: ---- gst-devtools-1.26.2.obscpio New: ---- gst-devtools-1.26.3.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gstreamer-devtools.spec ++++++ --- /var/tmp/diff_new_pack.DrpdtQ/_old 2025-07-03 12:12:39.227166754 +0200 +++ /var/tmp/diff_new_pack.DrpdtQ/_new 2025-07-03 12:12:39.227166754 +0200 @@ -20,7 +20,7 @@ %{?sle15_python_module_pythons} Name: gstreamer-devtools -Version: 1.26.2 +Version: 1.26.3 Release: 0 Summary: Development and debugging tools for GStreamer License: LGPL-2.1-or-later ++++++ _service ++++++ --- /var/tmp/diff_new_pack.DrpdtQ/_old 2025-07-03 12:12:39.263168262 +0200 +++ /var/tmp/diff_new_pack.DrpdtQ/_new 2025-07-03 12:12:39.263168262 +0200 @@ -5,7 +5,7 @@ <param name="url">https://gitlab.freedesktop.org/gstreamer/gstreamer.git</param> <param name="subdir">subprojects/gst-devtools</param> <param name="filename">gst-devtools</param> - <param name="revision">1.26.2</param> + <param name="revision">1.26.3</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="versionrewrite-pattern">v?(.*)\+0</param> <param name="versionrewrite-replacement">\1</param> ++++++ gst-devtools-1.26.2.obscpio -> gst-devtools-1.26.3.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/NEWS new/gst-devtools-1.26.3/NEWS --- old/gst-devtools-1.26.2/NEWS 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/NEWS 2025-06-26 22:25:24.000000000 +0200 @@ -1809,6 +1809,213 @@ - List of Merge Requests applied in 1.26.2 - List of Issues fixed in 1.26.2 +1.26.3 + +The third 1.26 bug-fix release (1.26.3) was released on 26 June 2025. + +This release only contains bugfixes including some important playback fixes, and it should be safe to update from 1.26.x. + +Highlighted bugfixes in 1.26.3 + +- Security fix for the H.266 video parser +- Fix regression for WAV files with acid chunks +- Fix high memory consumption caused by a text handling regression in uridecodebin3 and playbin3 +- Fix panic on late GOP in fragmented MP4 muxer +- Closed caption conversion, rendering and muxing improvements +- Decklink video sink preroll frame rendering and clock drift handling fixes +- MPEG-TS demuxing and muxing fixes +- MP4 muxer fixes for creating very large files with faststart support +- New thread-sharing 1:N inter source and sink elements, and a ts-rtpdtmfsrc +- New speech synthesis element around ElevenLabs API +- RTP H.265 depayloader fixes and improvements, as well as TWCC and GCC congestion control fixes +- Seeking improvements in DASH client for streams with gaps +- WebRTC sink and source fixes and enhancements, including to LiveKit and WHIP signallers +- The macOS osxvideosink now posts navigation messages +- QtQML6GL video sink input event handling improvements +- Overhaul detection of hardware-accelerated video codecs on Android +- Video4Linux capture source fixes and support for BT.2100 PQ and 1:4:5:3 colorimetry +- Vulkan buffer upload and memory handling regression fixes +- gst-python: fix various regressions introduced in 1.26.2 +- cerbero: fix text relocation issues on 32-bit Android and fix broken VisualStudio VC templates +- packages: ship pbtypes plugin and update openssl to 3.5.0 LTS +- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements + +gstreamer + +- aggregator: Do not set event seqnum to INVALID +- baseparse: test: Fix race on test start +- pad: Only remove TAG events on STREAM_START if the stream-id actually changes +- utils: Mark times array as static to avoid symbol conflict with the POSIX function +- vecdeque: Use correct index type gst_vec_deque_drop_struct() + +gst-plugins-base + +- GstAudioAggregator: fix structure unref in peek_next_sample() +- audioconvert: Fix setting mix-matrix when input caps changes +- encodebasebin: Duplicate encoding profile in property setter +- gl: simplify private gst_gl_gst_meta_api_type_tags_contain_only() +- osxvideosink: Use gst_pad_push_event() and post navigation messages +- playsink: Fix race condition in stream synchronizer pad cleanup during state changes +- python: Fix pulling events from appsink +- streamsynchronizer: Consider streams having received stream-start as waiting +- urisourcebin: Text tracks are no longer set as sparse stream in urisourcebin’s multiqueue + +gst-plugins-good + +- aacparse: Fix counting audio channels in program_config_element +- adaptivedemux2: free cancellable when freeing transfer task +- dashdemux2: Fix seeking in a stream with gaps +- decodebin wavparse cannot pull header +- imagefreeze: fix not negotiate log when stop +- osxvideosink: Use gst_pad_push_event() and post navigation messages +- qml6glsink: Allow configuring if the item will consume input events +- qtmux: Update chunk offsets when converting stco to co64 with faststart +- splitmuxsink: Only send closed message once per open fragment +- rtph265depay: CRA_NUT can also start an (open) GOP +- rtph265depay: fix codec_data generation +- rtspsrc: Don’t emit error during close if server is EOF +- twcc: Fix reference timestamp wrapping (again) +- v4l2: Fix possible internal pool leak +- v4l2object: Add support for colorimetry bt2100-pq and 1:4:5:3 +- wavparse: Don’t error out always when parsing acid chunks + +gst-plugins-bad + +- amc: Overhaul hw-accelerated video codecs detection +- bayer2rgb: Fix RGB stride calculation +- d3d12compositor: Fix critical warnings +- dashsink: Fix failing test +- decklink: calculate internal using values closer to the current clock times +- decklinkvideosink: show preroll frame correctly +- decklink: clock synchronization after pause +- h266parser: Fix overflow when parsing subpic_level_info +- lcevcdec: Check for errors after receiving all enhanced and base pictures +- meson: fix building -bad tests with disabled soundtouch +- mpegts: handle MPEG2-TS with KLV metadata safely by preventing out of bounds +- mpegtsmux: Corrections around Teletext handling +- srtsink: Fix header buffer filtering +- transcoder: Fix uritranscodebin reference handling +- tsdemux: Allow access unit parsing failures +- tsdemux: Send new-segment before GAP +- vulkanupload: fix regression for uploading VulkanBuffer +- vulkanupload: fix regression when uploading to single memory multiplaned memory images. +- webrtcbin: disconnect signal ICE handlers on dispose +- {d3d12,d3d11}compositor: Fix negative position handling +- {nv,d3d12,d3d11}decoder: Use interlace info in input caps + +gst-plugins-ugly + +- No changes + +GStreamer Rust plugins + +- Add new speech synthesis element around ElevenLabs API +- cea708mux: fix another WouldOverflow case +- cea708mux: support configuring a limit to how much data will be pending +- cea708overlay: also reset the output size on flush stop +- gcc: handle out of order packets +- fmp4mux: Fix panic on late GOP +- livekit: expose a connection state property +- mp4mux: add taic box +- mp4mux: test the trak structure +- pcap_writer: Make target-property and pad-path properties writable again +- skia: Don’t build skia plugin by default for now +- threadshare: cleanups & usability improvements +- threadshare: sync runtime with latest async-io +- threadshare: fix kqueue reactor +- threadshare: Update to getifaddrs 0.2 +- threadshare: add new thread-sharing inter elements +- threadshare: add a ts-rtpdtmfsrc element +- transcriberbin: fix naming of subtitle pads +- tttocea708: don’t panic if a new service would overflow +- webrtc: android: Update Gradle and migrate to FindGStreamerMobile +- webrtc: add new examples for stream selection over data channel +- webrtcsrc: the webrtcbin get-transceiver index is not mlineindex +- webrtcsrc: send CustomUpstream events over control channel .. +- webrtcsink: Don’t require encoder element for pre-encoded streams +- webrtcsink: Don’t reject caps events if the codec_data changes +- whip: server: pick session-id from the endpoint if specified +- cargo: add config file to force CARGO_NET_GIT_FETCH_WITH_CLI=true +- Cargo.lock, deny: Update dependencies and log duplicated targo-lexicon +- Update windows-sys dependency from “>=0.52, <=0.59” to “>=0.52, <=0.60” +- deny: Add override for windows-sys 0.59 +- deny: Update lints +- cargo_wrapper: Fix backslashes being parsed as escape codes on Windows +- Fixes for Clock: non-optional return types +- Rename relationmeta plugin to analytics + +gst-libav + +- No changes + +gst-rtsp-server + +- rtsp-server: tests: Fix a few memory leaks + +gstreamer-vaapi + +- No changes + +gstreamer-sharp + +- No changes + +gst-python + +This release includes some important regression fixes for the GStreamer Python bindings for regressions introduced in 1.26.2. + +- gst-python/tests: don’t depend on webrtc and rtsp-server +- python: Fix pulling events from appsink and other fixes + +gst-editing-services + +- No changes + +gst-devtools, gst-validate + gst-integration-testsuites + +- validate: More memory leaks +- validate: Valgrind fixes + +gst-examples + +- No changes + +gstreamer-docs + +- No changes + +Development build environment + +- gst-env: Emit a warning about DYLD_LIBRARY_PATH on macOS + +Cerbero build tool and packaging changes in 1.26.3 + +- WiX: fix broken VC templates +- android: Don’t ignore text relocation errors on 32-bit, and error out if any are found +- build: source: handle existing .cargo/config.toml as in plugins-rs +- ci: Detect text relocations when building android examples +- gst-plugins-base: Ship pbtypes +- gst-plugins-base: Fix category of pbtypes +- gst-plugins-rs: Update for relationmeta -> analytics plugin rename +- libsoup.recipe: XML-RPC support was removed before the 3.0 release +- openssl: Update to 3.5.0 LTS + +Contributors to 1.26.3 + +Albert Sjolund, Aleix Pol, Ben Butterworth, Brad Hards, César Alejandro Torrealba Vázquez, Changyong Ahn, Doug Nazar, Edward +Hervey, Elliot Chen, Enrique Ocaña González, François Laignel, Glyn Davies, He Junyan, Jakub Adam, James Cowgill, Jan Alexander +Steffens (heftig), Jan Schmidt, Jochen Henneberg, Johan Sternerup, Julian Bouzas, L. E. Segovia, Loïc Le Page, Mathieu +Duponchelle, Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan, Philippe Normand, Pratik Pachange, Qian Hu (胡骞), Sebastian +Dröge, Seungha Yang, Taruntej Kanakamalla, Théo Maillart, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, +Xavier Claessens, + +… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! + +List of merge requests and issues fixed in 1.26.3 + +- List of Merge Requests applied in 1.26.3 +- List of Issues fixed in 1.26.3 + Schedule for 1.28 Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/RELEASE new/gst-devtools-1.26.3/RELEASE --- old/gst-devtools-1.26.2/RELEASE 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/RELEASE 2025-06-26 22:25:24.000000000 +0200 @@ -1,4 +1,4 @@ -This is GStreamer gst-devtools 1.26.2. +This is GStreamer gst-devtools 1.26.3. The GStreamer team is thrilled to announce a new major feature release of your favourite cross-platform multimedia framework! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/gst-devtools.doap new/gst-devtools-1.26.3/gst-devtools.doap --- old/gst-devtools-1.26.2/gst-devtools.doap 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/gst-devtools.doap 2025-06-26 22:25:24.000000000 +0200 @@ -55,6 +55,16 @@ <release> <Version> + <revision>1.26.3</revision> + <branch>1.26</branch> + <name></name> + <created>2025-06-26</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-1.26.3.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.26.2</revision> <branch>1.26</branch> <name></name> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/meson.build new/gst-devtools-1.26.3/meson.build --- old/gst-devtools-1.26.2/meson.build 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/meson.build 2025-06-26 22:25:24.000000000 +0200 @@ -1,5 +1,5 @@ project('gst-devtools', 'c', - version : '1.26.2', + version : '1.26.3', meson_version : '>= 1.4', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/gst/validate/flow/formatting.c new/gst-devtools-1.26.3/validate/gst/validate/flow/formatting.c --- old/gst-devtools-1.26.2/validate/gst/validate/flow/formatting.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/gst/validate/flow/formatting.c 2025-06-26 22:25:24.000000000 +0200 @@ -367,6 +367,7 @@ g_string_append_c (content, ' '); g_string_append_printf (content, "0x%02x", map.data[i]); } + gst_buffer_unmap (buffer, &map); buffer_parts[buffer_parts_index++] = g_string_free (content, FALSE); } else { @@ -436,6 +437,7 @@ buffer_parts_index > 0 ? g_strjoinv (", ", buffer_parts) : g_strdup ("(empty)"); + g_strfreev (logged_fields); g_strfreev (ignored_fields); g_free (meta_str); g_free (flags_str); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/gst/validate/flow/gstvalidateflow.c new/gst-devtools-1.26.3/validate/gst/validate/flow/gstvalidateflow.c --- old/gst-devtools-1.26.2/validate/gst/validate/flow/gstvalidateflow.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/gst/validate/flow/gstvalidateflow.c 2025-06-26 22:25:24.000000000 +0200 @@ -709,3 +709,9 @@ return TRUE; } + +void +_priv_validate_flow_deinit (void) +{ + g_clear_list (&all_overrides, gst_object_unref); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-internal.h new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-internal.h --- old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-internal.h 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-internal.h 2025-06-26 22:25:24.000000000 +0200 @@ -79,6 +79,8 @@ G_GNUC_INTERNAL gboolean gst_validate_extra_checks_init (void); G_GNUC_INTERNAL gboolean gst_validate_flow_init (void); +G_GNUC_INTERNAL void _priv_validate_flow_deinit (void); + G_GNUC_INTERNAL gboolean is_tty (void); /* MediaDescriptor structures */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-mockdecryptor.c new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-mockdecryptor.c --- old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-mockdecryptor.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-mockdecryptor.c 2025-06-26 22:25:24.000000000 +0200 @@ -168,6 +168,7 @@ gst_caps_intersect_full (transformed_caps, filter, GST_CAPS_INTERSECT_FIRST); gst_caps_replace (&transformed_caps, intersection); + gst_caps_unref (intersection); } GST_DEBUG_OBJECT (base, "returning %" GST_PTR_FORMAT, transformed_caps); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-pad-monitor.c new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-pad-monitor.c --- old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-pad-monitor.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-pad-monitor.c 2025-06-26 22:25:24.000000000 +0200 @@ -442,15 +442,15 @@ monitor, GstStructure * structure) { _check_field_type (monitor, structure, TRUE, "width", G_TYPE_INT, - GST_TYPE_INT_RANGE, 0); + GST_TYPE_INT_RANGE, (GType) 0); _check_field_type (monitor, structure, TRUE, "height", G_TYPE_INT, - GST_TYPE_INT_RANGE, 0); + GST_TYPE_INT_RANGE, (GType) 0); _check_field_type (monitor, structure, TRUE, "framerate", GST_TYPE_FRACTION, - GST_TYPE_FRACTION_RANGE, 0); + GST_TYPE_FRACTION_RANGE, (GType) 0); _check_field_type (monitor, structure, FALSE, "pixel-aspect-ratio", - GST_TYPE_FRACTION, GST_TYPE_FRACTION_RANGE, 0); + GST_TYPE_FRACTION, GST_TYPE_FRACTION_RANGE, (GType) 0); _check_field_type (monitor, structure, TRUE, "format", G_TYPE_STRING, - GST_TYPE_LIST); + GST_TYPE_LIST, (GType) 0); } static void @@ -459,17 +459,17 @@ { gint channels; _check_field_type (monitor, structure, TRUE, "format", G_TYPE_STRING, - GST_TYPE_LIST, 0); + GST_TYPE_LIST, (GType) 0); _check_field_type (monitor, structure, TRUE, "layout", G_TYPE_STRING, - GST_TYPE_LIST, 0); + GST_TYPE_LIST, (GType) 0); _check_field_type (monitor, structure, TRUE, "rate", G_TYPE_INT, - GST_TYPE_LIST, GST_TYPE_INT_RANGE, 0); + GST_TYPE_LIST, GST_TYPE_INT_RANGE, (GType) 0); _check_field_type (monitor, structure, TRUE, "channels", G_TYPE_INT, - GST_TYPE_LIST, GST_TYPE_INT_RANGE, 0); + GST_TYPE_LIST, GST_TYPE_INT_RANGE, (GType) 0); if (gst_structure_get_int (structure, "channels", &channels)) { if (channels > 2) _check_field_type (monitor, structure, TRUE, "channel-mask", - GST_TYPE_BITMASK, GST_TYPE_LIST, 0); + GST_TYPE_BITMASK, GST_TYPE_LIST, (GType) 0); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-pipeline-monitor.c new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-pipeline-monitor.c --- old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-pipeline-monitor.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-pipeline-monitor.c 2025-06-26 22:25:24.000000000 +0200 @@ -488,6 +488,7 @@ } } + gst_caps_unref (refused_caps); gst_caps_unref (possible_caps); gst_object_unref (pad); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-report.c new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-report.c --- old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-report.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-report.c 2025-06-26 22:25:24.000000000 +0200 @@ -133,9 +133,8 @@ if (G_UNLIKELY (g_atomic_int_dec_and_test (&issue->refcount))) { g_free (issue->summary); g_free (issue->description); - - /* We are using an string array for area and name */ - g_strfreev (&issue->area); + g_free (issue->area); + g_free (issue->name); g_free (issue); } @@ -252,6 +251,7 @@ } issue = g_new (GstValidateIssue, 1); + issue->refcount = 1; issue->issue_id = issue_id; issue->summary = g_strdup (summary); issue->description = g_strdup (description); @@ -289,6 +289,7 @@ } issue = g_new (GstValidateIssue, 1); + issue->refcount = 1; issue->issue_id = issue_id; issue->summary = g_strdup (summary); issue->description = g_strdup (description); @@ -699,8 +700,6 @@ gchar **wanted_files; wanted_files = g_strsplit (file_env, G_SEARCHPATH_SEPARATOR_S, 0); - /* FIXME: Make sure it is freed in the deinit function when that is - * implemented */ log_files = g_malloc0 (sizeof (FILE *) * (g_strv_length (wanted_files) + 1)); for (i = 0; i < g_strv_length (wanted_files); i++) { @@ -738,6 +737,15 @@ void gst_validate_report_deinit (void) { +#ifndef GST_DISABLE_GST_DEBUG + g_clear_pointer (&newline_regex, g_regex_unref); +#endif + + if (_gst_validate_issues) + g_hash_table_destroy (g_steal_pointer (&_gst_validate_issues)); + + _gst_validate_report_start_time = 0; + if (server_ostream) { g_output_stream_close (server_ostream, NULL, NULL); server_ostream = NULL; @@ -745,6 +753,16 @@ g_clear_object (&socket_client); g_clear_object (&server_connection); + + if (log_files) { + gint i; + for (i = 0; log_files[i]; i++) { + if (log_files[i] != stdout && log_files[i] != stderr) + fclose (log_files[i]); + } + g_free (log_files); + log_files = NULL; + } } /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-reporter.c new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-reporter.c --- old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-reporter.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-reporter.c 2025-06-26 22:25:24.000000000 +0200 @@ -90,6 +90,7 @@ g_direct_equal, NULL, (GDestroyNotify) gst_validate_report_unref); g_mutex_init (&priv->reports_lock); + g_weak_ref_init (&priv->runner, NULL); g_object_set_data_full (G_OBJECT (reporter), REPORTER_PRIVATE, priv, (GDestroyNotify) _free_priv); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-scenario.c new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-scenario.c --- old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-scenario.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-scenario.c 2025-06-26 22:25:24.000000000 +0200 @@ -259,6 +259,8 @@ guint signal_handler_id; /* MT safe. Protect with SCENARIO_LOCK */ guint action_execution_interval; + gboolean has_stopped; + /* Name of message the wait action is waiting for */ GstValidateAction *wait_message_action; @@ -756,6 +758,8 @@ } else { GST_INFO_OBJECT (scenario, "Could not query position"); } + + gst_object_unref (pipeline); } static GstElement *_get_target_element (GstValidateScenario * scenario, @@ -1389,6 +1393,7 @@ gst_object_add_control_binding (obj, binding); } else { g_object_get (binding, "control-source", &source, NULL); + gst_clear_object (&binding); } REPORT_UNLESS (GST_IS_TIMED_VALUE_CONTROL_SOURCE (source), err, @@ -1399,12 +1404,14 @@ GST_TIME_ARGS (timestamp)); gst_object_unref (obj); + gst_clear_object (&source); gst_structure_set (structure, "__res__", G_TYPE_INT, res, NULL); return TRUE; err: gst_clear_object (&obj); + gst_clear_object (&source); gst_structure_set (structure, "__res__", G_TYPE_INT, GST_VALIDATE_EXECUTE_ACTION_ERROR_REPORTED, NULL); @@ -2207,6 +2214,7 @@ { gst_validate_action_unref (d->action); g_list_free_full (d->wanted_streams, g_free); + g_rec_mutex_clear (&d->m); } static void @@ -2221,6 +2229,7 @@ GstValidateScenario *scenario = NULL; GstStreamCollection *collection = NULL, *selected_streams = NULL; GList *streams = NULL; + GstElement *pipeline = NULL; switch (GST_MESSAGE_TYPE (message)) { case GST_MESSAGE_STREAM_COLLECTION: @@ -2286,7 +2295,7 @@ } - GstElement *pipeline = gst_validate_scenario_get_pipeline (scenario); + pipeline = gst_validate_scenario_get_pipeline (scenario); if (pipeline == NULL) { GST_VALIDATE_REPORT_ACTION (scenario, d->action, SCENARIO_ACTION_EXECUTION_ERROR, @@ -2311,7 +2320,7 @@ if (selected_streams && d->message_sid && d->wanted_n_calls >= 1 && d->n_calls == d->wanted_n_calls) { /* Consider action done once we get the STREAM_SELECTED signal */ - gst_validate_action_set_done (gst_validate_action_ref (d->action)); + gst_validate_action_set_done (d->action); gst_bus_disable_sync_message_emission (bus); g_signal_handler_disconnect (bus, d->message_sid); d->message_sid = 0; @@ -2324,6 +2333,8 @@ gst_clear_object (&scenario); gst_clear_object (&collection); + gst_clear_object (&selected_streams); + gst_clear_object (&pipeline); g_rec_mutex_unlock (&d->m); } @@ -2347,7 +2358,7 @@ d->wanted_n_calls, d->n_calls); } - gst_validate_action_set_done (gst_validate_action_ref (d->action)); + gst_validate_action_set_done (d->action); if (bus && d->message_sid) { gst_bus_disable_sync_message_emission (bus); @@ -2360,6 +2371,9 @@ d->stopping_sid = 0; } g_rec_mutex_unlock (&d->m); + + gst_clear_object (&pipeline); + gst_clear_object (&bus); } static GstValidateExecuteActionReturn @@ -2386,6 +2400,7 @@ g_rec_mutex_unlock (&d->m); gst_object_unref (bus); + gst_object_unref (pipeline); return GST_VALIDATE_EXECUTE_ACTION_NON_BLOCKING; } @@ -2472,7 +2487,8 @@ SCENARIO_LOCK (scenario); if (priv->execute_actions_source_id == 0 && priv->wait_id == 0 - && priv->signal_handler_id == 0 && priv->wait_message_action == NULL) { + && priv->signal_handler_id == 0 && priv->wait_message_action == NULL + && !priv->has_stopped) { if (!scenario->priv->action_execution_interval) priv->execute_actions_source_id = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, @@ -2911,6 +2927,8 @@ data->subaction_done_sigid); data->subaction_done_sigid = 0; } + + gst_validate_action_set_done (subaction); } g_mutex_unlock (&data->sigid_lock); validate_action_foreign_scenario_data_unref (data); @@ -2948,6 +2966,7 @@ res = action_type->prepare (action); if (res == GST_VALIDATE_EXECUTE_ACTION_DONE) { gst_validate_print_action (action, NULL); + gst_object_unref (scenario); return GST_VALIDATE_EXECUTE_ACTION_OK; } @@ -3185,7 +3204,8 @@ } if (message) { - if (!_check_message_type (scenario, act, message)) + if (!_check_message_type (scenario, act, message) + && GST_MESSAGE_TYPE (message) != GST_MESSAGE_ERROR) return G_SOURCE_CONTINUE; } else if ((act && gst_structure_get_string (act->structure, "on-message") && !GST_CLOCK_TIME_IS_VALID (act->playback_time)) || @@ -3218,7 +3238,10 @@ " to be done."); SCENARIO_LOCK (scenario); - priv->execute_actions_source_id = 0; + if (priv->execute_actions_source_id) { + g_source_remove (priv->execute_actions_source_id); + priv->execute_actions_source_id = 0; + } SCENARIO_UNLOCK (scenario); return G_SOURCE_REMOVE; @@ -3638,6 +3661,7 @@ (GClosureNotify) gst_validate_action_unref, G_CONNECT_AFTER); gst_clear_object (&bus); + gst_clear_object (&pipeline); return GST_VALIDATE_EXECUTE_ACTION_ASYNC; } @@ -4213,6 +4237,7 @@ { g_list_free_full (data->actions, (GDestroyNotify) gst_validate_action_unref); g_mutex_clear (&data->actions_lock); + g_free (data); } static GstFlowReturn @@ -4221,8 +4246,7 @@ ChainWrapperFunctionData *data = g_object_get_qdata (G_OBJECT (pad), chain_qdata); - return data->wrapper_function (pad, parent, buffer, - g_object_get_qdata (G_OBJECT (pad), chain_qdata)); + return data->wrapper_function (pad, parent, buffer, data); } static void @@ -4387,6 +4411,7 @@ g_signal_emit_by_name (appsink, "pull-sample", &sample, NULL); + g_strfreev (pipeline_elements); goto push_sample; } @@ -5290,6 +5315,7 @@ g_list_free_full (priv->seeks, (GDestroyNotify) gst_validate_seek_information_free); priv->seeks = NULL; + priv->current_seek = NULL; SCENARIO_UNLOCK (scenario); GST_DEBUG_OBJECT (scenario, "Got EOS; generate 'stop' action"); @@ -5958,6 +5984,7 @@ } gst_object_replace ((GstObject **) & priv->clock, NULL); + gst_object_unref (runner); G_OBJECT_CLASS (gst_validate_scenario_parent_class)->dispose (object); } @@ -6228,6 +6255,7 @@ gst_validate_printf (NULL, "**-> Using clock %" GST_PTR_FORMAT " on %" GST_PTR_FORMAT "**\n", system_clock, pipeline); + gst_object_unref (system_clock); } gst_validate_reporter_set_name (GST_VALIDATE_REPORTER (scenario), @@ -6423,7 +6451,8 @@ GFile *f = g_file_enumerator_get_child (fenum, info); _parse_scenario (f, kf); - gst_object_unref (f); + g_object_unref (info); + g_object_unref (f); } gst_object_unref (fenum); @@ -6937,8 +6966,6 @@ const gchar *direction = gst_structure_get_string (action->structure, "direction"), *pad_name, *srcpad_name; - DECLARE_AND_GET_PIPELINE (scenario, action); - if (gst_structure_get_string (action->structure, "target-element-name")) { GstElement *target = _get_target_element (scenario, action); if (target == NULL) @@ -7102,6 +7129,8 @@ g_source_remove (priv->execute_actions_source_id); priv->execute_actions_source_id = 0; } + scenario->priv->has_stopped = TRUE; + if (scenario->priv->actions || scenario->priv->non_blocking_running_actions || scenario->priv->on_addition_actions) { guint nb_actions = 0; @@ -7309,6 +7338,7 @@ { GstValidateMonitor *monitor; GstValidateAction *action; + GstElement *pipeline; } SubPipelineData; static void @@ -7316,7 +7346,8 @@ { SubPipelineData *sub_data = (SubPipelineData *) data; - g_clear_object (&sub_data->monitor); + gst_clear_object (&sub_data->monitor); + gst_clear_object (&sub_data->pipeline); gst_validate_action_unref (sub_data->action); } @@ -7330,10 +7361,6 @@ subscenario_done_cb (GstBus * bus, GstMessage * message, gpointer data) { SubPipelineData *sub_data = (SubPipelineData *) data; - GstElement *pipeline = - GST_ELEMENT (gst_validate_monitor_get_target (sub_data->monitor)); - g_assert (pipeline); - GstState state; gst_message_parse_request_state (message, &state); @@ -7343,7 +7370,7 @@ return; } - gst_element_set_state (pipeline, GST_STATE_NULL); + gst_element_set_state (sub_data->pipeline, GST_STATE_NULL); gst_validate_action_set_done (sub_data->action); g_signal_handlers_disconnect_by_func (bus, subscenario_done_cb, data); @@ -7390,6 +7417,7 @@ scenario_name ? scenario_name : (name ? name : "unnamed-subscenario"), scenario_structures, TRUE)); data->action = gst_validate_action_ref (action); + data->pipeline = GST_ELEMENT_CAST (pipeline); gboolean monitor_handles_state; g_object_get (data->monitor, "handles-states", &monitor_handles_state, NULL); @@ -7598,6 +7626,7 @@ err->message); REPORT_UNLESS (sscanf (line, "PORT: %d", &port) == 1, done, "Failed to parse port number from server output: %s", line); + g_free (line); server.port = port; server.subprocess = subprocess; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/gst/validate/validate.c new/gst-devtools-1.26.3/validate/gst/validate/validate.c --- old/gst-devtools-1.26.2/validate/gst/validate/validate.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/gst/validate/validate.c 2025-06-26 22:25:24.000000000 +0200 @@ -518,7 +518,8 @@ g_list_free (core_config); core_config = NULL; - g_list_free_full (all_configs, (GDestroyNotify) gst_structure_free); + g_list_free_full (g_steal_pointer (&all_configs), + (GDestroyNotify) gst_structure_free); gst_validate_deinit_runner (); gst_validate_scenario_deinit (); @@ -529,6 +530,12 @@ testfile_structs = NULL; g_clear_pointer (&global_testfile, g_free); + if (validate_initialized) { + g_rec_mutex_clear (&init_lock); + memset (&init_lock, 0, sizeof (GRecMutex)); + } + + _priv_validate_flow_deinit (); _priv_validate_override_registry_deinit (); validate_initialized = FALSE; gst_validate_report_deinit (); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/launcher/baseclasses.py new/gst-devtools-1.26.3/validate/launcher/baseclasses.py --- old/gst-devtools-1.26.2/validate/launcher/baseclasses.py 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/launcher/baseclasses.py 2025-06-26 22:25:24.000000000 +0200 @@ -647,9 +647,6 @@ return command def use_valgrind(self, command, subenv): - vglogsfile = os.path.splitext(self.logfile)[0] + '.valgrind' - self.extra_logfiles.add(vglogsfile) - vg_args = [] for o, v in [('trace-children', 'yes'), @@ -671,7 +668,7 @@ if not self.options.redirect_logs: vglogsfile = os.path.splitext(self.logfile)[0] + '.valgrind' self.extra_logfiles.add(vglogsfile) - vg_args.append("--%s=%s" % ('log-file', vglogsfile)) + vg_args.append("--%s=%s" % ('log-file', vglogsfile.replace("%", "%%"))) for supp in self.get_valgrind_suppressions(): vg_args.append("--suppressions=%s" % supp) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/plugins/ssim/gstvalidatessim.c new/gst-devtools-1.26.3/validate/plugins/ssim/gstvalidatessim.c --- old/gst-devtools-1.26.2/validate/plugins/ssim/gstvalidatessim.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/plugins/ssim/gstvalidatessim.c 2025-06-26 22:25:24.000000000 +0200 @@ -326,7 +326,7 @@ GST_INFO_OBJECT (pad, "Doesn't have template, can't use it %" GST_PTR_FORMAT, gst_pad_query_caps (pad, NULL)); - return FALSE; + goto fail; } template_caps = GST_PAD_TEMPLATE_CAPS (GST_PAD_PAD_TEMPLATE (pad)); @@ -481,6 +481,7 @@ caps = gst_pad_get_current_caps (pad); gst_object_unref (pad); gst_caps_replace (&priv->last_caps, caps); + gst_caps_unref (caps); gst_video_info_init (&priv->in_info); gst_video_info_init (&priv->out_info); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/tests/check/validate/expression_parser.c new/gst-devtools-1.26.3/validate/tests/check/validate/expression_parser.c --- old/gst-devtools-1.26.2/validate/tests/check/validate/expression_parser.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/tests/check/validate/expression_parser.c 2025-06-26 22:25:24.000000000 +0200 @@ -29,21 +29,28 @@ GST_END_TEST; +static void +setup (void) +{ + gst_validate_init (); +} + +static void +teardown (void) +{ + gst_validate_deinit (); +} + static Suite * gst_validate_suite (void) { Suite *s = suite_create ("registry"); TCase *tc_chain = tcase_create ("registry"); suite_add_tcase (s, tc_chain); + tcase_add_checked_fixture (tc_chain, setup, teardown); - if (atexit (gst_validate_deinit) != 0) { - GST_ERROR ("failed to set gst_validate_deinit as exit function"); - } - - g_setenv ("GST_VALIDATE_REPORTING_DETAILS", "all", TRUE); - gst_validate_init (); tcase_add_test (tc_chain, test_expression_parser); - gst_validate_deinit (); + g_setenv ("GST_VALIDATE_REPORTING_DETAILS", "all", TRUE); return s; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/tests/check/validate/monitoring.c new/gst-devtools-1.26.3/validate/tests/check/validate/monitoring.c --- old/gst-devtools-1.26.2/validate/tests/check/validate/monitoring.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/tests/check/validate/monitoring.c 2025-06-26 22:25:24.000000000 +0200 @@ -86,21 +86,32 @@ g_object_get_data ((GObject *) sink->sinkpads->data, "validate-monitor"); gst_check_objects_destroyed_on_unref (monitor, pmonitor1, pmonitor2, NULL); gst_check_objects_destroyed_on_unref (pipeline, src, sink, NULL); + + gst_object_unref (runner); } GST_END_TEST; +static void +setup (void) +{ + gst_validate_init (); +} + +static void +teardown (void) +{ + gst_validate_deinit (); +} + static Suite * gst_validate_suite (void) { Suite *s = suite_create ("monitoring"); TCase *tc_chain = tcase_create ("monitoring"); suite_add_tcase (s, tc_chain); - - if (atexit (gst_validate_deinit) != 0) { - GST_ERROR ("failed to set gst_validate_deinit as exit function"); - } + tcase_add_checked_fixture (tc_chain, setup, teardown); tcase_add_test (tc_chain, monitors_added); tcase_add_test (tc_chain, monitors_cleanup); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/tests/check/validate/overrides.c new/gst-devtools-1.26.3/validate/tests/check/validate/overrides.c --- old/gst-devtools-1.26.2/validate/tests/check/validate/overrides.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/tests/check/validate/overrides.c 2025-06-26 22:25:24.000000000 +0200 @@ -93,22 +93,30 @@ GST_END_TEST; +static void +setup (void) +{ + gst_validate_init (); +} + +static void +teardown (void) +{ + gst_validate_deinit (); +} + static Suite * gst_validate_suite (void) { Suite *s = suite_create ("registry"); TCase *tc_chain = tcase_create ("registry"); suite_add_tcase (s, tc_chain); + tcase_add_checked_fixture (tc_chain, setup, teardown); - if (atexit (gst_validate_deinit) != 0) { - GST_ERROR ("failed to set gst_validate_deinit as exit function"); - } + tcase_add_test (tc_chain, check_text_overrides); // Do not abort on critical issues, as this test will generate them on purpose. g_setenv ("GST_VALIDATE", "print_issues", TRUE); g_setenv ("GST_VALIDATE_REPORTING_DETAILS", "all", TRUE); - gst_validate_init (); - tcase_add_test (tc_chain, check_text_overrides); - gst_validate_deinit (); return s; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/tests/check/validate/padmonitor.c new/gst-devtools-1.26.3/validate/tests/check/validate/padmonitor.c --- old/gst-devtools-1.26.2/validate/tests/check/validate/padmonitor.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/tests/check/validate/padmonitor.c 2025-06-26 22:25:24.000000000 +0200 @@ -154,6 +154,7 @@ _check_reports_refcount (srcpad, 2); gst_object_unref (srcpad); gst_check_object_destroyed_on_unref (sink); + gst_object_unref (monitor); ASSERT_OBJECT_REFCOUNT (runner, "runner", 2); gst_object_unref (runner); } @@ -221,11 +222,15 @@ buffer = gst_discont_buffer_new (); GST_BUFFER_PTS (buffer) = 10 * GST_SECOND; GST_BUFFER_DURATION (buffer) = GST_SECOND; - fail_if (GST_PAD_IS_FLUSHING (gst_element_get_static_pad (identity, - "sink"))); - fail_if (GST_PAD_IS_FLUSHING (gst_element_get_static_pad (identity, - "src"))); - fail_if (GST_PAD_IS_FLUSHING (gst_element_get_static_pad (sink, "sink"))); + pad = gst_element_get_static_pad (identity, "sink"); + fail_if (GST_PAD_IS_FLUSHING (pad)); + gst_clear_object (&pad); + pad = gst_element_get_static_pad (identity, "src"); + fail_if (GST_PAD_IS_FLUSHING (pad)); + gst_clear_object (&pad); + pad = gst_element_get_static_pad (sink, "sink"); + fail_if (GST_PAD_IS_FLUSHING (pad)); + gst_clear_object (&pad); fail_unless_equals_int (gst_pad_push (srcpad, buffer), GST_FLOW_OK); reports = gst_validate_runner_get_reports (runner); @@ -1057,20 +1062,31 @@ +static void +setup (void) +{ + /* + * Don't initialize validate here. Each test needs to setup the + * environment before initialization + */ + /* gst_validate_init (); */ + + fake_elements_register (); +} + +static void +teardown (void) +{ + gst_validate_deinit (); +} + static Suite * gst_validate_suite (void) { Suite *s = suite_create ("padmonitor"); TCase *tc_chain = tcase_create ("padmonitor"); suite_add_tcase (s, tc_chain); - - if (atexit (gst_validate_deinit) != 0) { - GST_ERROR ("failed to set gst_validate_deinit as exit function"); - } - // Do not abort on critical issues, as this test will generate them on purpose. - g_setenv ("GST_VALIDATE", "print_issues", TRUE); - - fake_elements_register (); + tcase_add_checked_fixture (tc_chain, setup, teardown); tcase_add_test (tc_chain, buffer_before_segment); tcase_add_test (tc_chain, buffer_outside_segment); @@ -1097,6 +1113,9 @@ tcase_add_test (tc_chain, flow_error_without_message); tcase_add_test (tc_chain, flow_error_with_message); + // Do not abort on critical issues, as this test will generate them on purpose. + g_setenv ("GST_VALIDATE", "print_issues", TRUE); + return s; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/tests/check/validate/reporting.c new/gst-devtools-1.26.3/validate/tests/check/validate/reporting.c --- old/gst-devtools-1.26.2/validate/tests/check/validate/reporting.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/tests/check/validate/reporting.c 2025-06-26 22:25:24.000000000 +0200 @@ -135,9 +135,9 @@ gst_object_unref (element); - g_object_unref (pipeline_monitor); + gst_object_unref (pipeline_monitor); gst_object_unref (pipeline); - g_object_unref (runner); + gst_object_unref (runner); } GST_END_TEST; @@ -206,6 +206,10 @@ gst_object_unref (sinkpad); gst_object_unref (funnel_sink1); gst_object_unref (funnel_sink2); + free_element_monitor (fakemixer); + free_element_monitor (sink); + free_element_monitor (src2); + free_element_monitor (src1); gst_check_objects_destroyed_on_unref (fakemixer, funnel_sink1, funnel_sink2, NULL); gst_check_objects_destroyed_on_unref (src1, srcpad1, NULL); @@ -250,18 +254,31 @@ #undef TEST_LEVELS +static void +setup (void) +{ + /* + * Don't initialize validate here. Each test needs to setup the + * environment before initialization + */ + /* gst_validate_init (); */ + + fake_elements_register (); +} + +static void +teardown (void) +{ + gst_validate_deinit (); +} + static Suite * gst_validate_suite (void) { Suite *s = suite_create ("reporting"); TCase *tc_chain = tcase_create ("reporting"); suite_add_tcase (s, tc_chain); - - if (atexit (gst_validate_deinit) != 0) { - GST_ERROR ("failed to set gst_validate_deinit as exit function"); - } - - fake_elements_register (); + tcase_add_checked_fixture (tc_chain, setup, teardown); tcase_add_test (tc_chain, test_report_levels_all); tcase_add_test (tc_chain, test_report_levels_2); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/tests/check/validate/scenario.c new/gst-devtools-1.26.3/validate/tests/check/validate/scenario.c --- old/gst-devtools-1.26.2/validate/tests/check/validate/scenario.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/tests/check/validate/scenario.c 2025-06-26 22:25:24.000000000 +0200 @@ -37,26 +37,37 @@ fail_unless_equals_uint64 (start, 50 * GST_SECOND); gst_validate_action_unref (action); + gst_mini_object_unref (GST_MINI_OBJECT (seek_type)); + gst_mini_object_unref (GST_MINI_OBJECT (set_vars)); + gst_object_unref (scenario); gst_object_unref (runner); } GST_END_TEST; +static void +setup (void) +{ + gst_validate_init (); +} + +static void +teardown (void) +{ + gst_validate_deinit (); +} + static Suite * gst_validate_suite (void) { Suite *s = suite_create ("registry"); TCase *tc_chain = tcase_create ("registry"); suite_add_tcase (s, tc_chain); + tcase_add_checked_fixture (tc_chain, setup, teardown); - if (atexit (gst_validate_deinit) != 0) { - GST_ERROR ("failed to set gst_validate_deinit as exit function"); - } + tcase_add_test (tc_chain, test_expression_parser); g_setenv ("GST_VALIDATE_REPORTING_DETAILS", "all", TRUE); - gst_validate_init (); - tcase_add_test (tc_chain, test_expression_parser); - gst_validate_deinit (); return s; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/tests/check/validate/utilities.c new/gst-devtools-1.26.3/validate/tests/check/validate/utilities.c --- old/gst-devtools-1.26.2/validate/tests/check/validate/utilities.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/tests/check/validate/utilities.c 2025-06-26 22:25:24.000000000 +0200 @@ -41,20 +41,27 @@ GST_END_TEST; +static void +setup (void) +{ + gst_validate_init (); +} + +static void +teardown (void) +{ + gst_validate_deinit (); +} + static Suite * gst_validate_suite (void) { Suite *s = suite_create ("utilities"); TCase *tc_chain = tcase_create ("utilities"); suite_add_tcase (s, tc_chain); + tcase_add_checked_fixture (tc_chain, setup, teardown); - if (atexit (gst_validate_deinit) != 0) { - GST_ERROR ("failed to set gst_validate_deinit as exit function"); - } - - gst_validate_init (); tcase_add_test (tc_chain, test_resolve_variables); - gst_validate_deinit (); return s; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-devtools-1.26.2/validate/tools/gst-validate-transcoding.c new/gst-devtools-1.26.3/validate/tools/gst-validate-transcoding.c --- old/gst-devtools-1.26.2/validate/tools/gst-validate-transcoding.c 2025-05-30 00:56:43.000000000 +0200 +++ new/gst-devtools-1.26.3/validate/tools/gst-validate-transcoding.c 2025-06-26 22:25:24.000000000 +0200 @@ -112,6 +112,8 @@ GstEncodingProfile *encoding_profile; g_object_get (pipeline, "profile", &encoding_profile, NULL); + gst_object_unref (pipeline); + restriction_caps = gst_structure_get_string (action->structure, "restriction-caps"); profile_type_name = ++++++ gst-devtools.obsinfo ++++++ --- /var/tmp/diff_new_pack.DrpdtQ/_old 2025-07-03 12:12:39.623183340 +0200 +++ /var/tmp/diff_new_pack.DrpdtQ/_new 2025-07-03 12:12:39.627183507 +0200 @@ -1,5 +1,5 @@ name: gst-devtools -version: 1.26.2 -mtime: 1748559403 -commit: 100c21e1faf68efe7f3830b6e9f856760697ab48 +version: 1.26.3 +mtime: 1750969524 +commit: 87bc0c6e949e3dcc440658f78ef52aa8088cb62f ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/gstreamer-devtools/vendor.tar.zst /work/SRC/openSUSE:Factory/.gstreamer-devtools.new.1903/vendor.tar.zst differ: char 7, line 1