From f0d27b01efbf47135a7052c4c54bb64041861198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Dzi=C4=99giel?= Date: Tue, 25 Nov 2025 19:13:51 +0100 Subject: [PATCH] clapper: Modify URI of media item from GFile in-place When creating item from GFile, modify URI in-place if needed (avoid a copy) --- src/lib/clapper/clapper-media-item.c | 11 +++++++++-- src/lib/clapper/clapper-utils-private.h | 3 --- src/lib/clapper/clapper-utils.c | 22 ---------------------- 3 files changed, 9 insertions(+), 27 deletions(-) diff --git a/src/lib/clapper/clapper-media-item.c b/src/lib/clapper/clapper-media-item.c index 2ed28def..8aeadf5d 100644 --- a/src/lib/clapper/clapper-media-item.c +++ b/src/lib/clapper/clapper-media-item.c @@ -142,12 +142,19 @@ clapper_media_item_new_from_file (GFile *file) { ClapperMediaItem *item; gchar *uri; + gsize length; g_return_val_if_fail (G_IS_FILE (file), NULL); - uri = clapper_utils_uri_from_file (file); - item = clapper_media_item_new (uri); + uri = g_file_get_uri (file); + length = strlen (uri); + /* GFile might incorrectly append "/" at the end of an URI, + * remove it to make it work with GStreamer URI handling */ + if (uri[length - 1] == '/') + uri[length - 1] = '\0'; + + item = clapper_media_item_new (uri); g_free (uri); return item; diff --git a/src/lib/clapper/clapper-utils-private.h b/src/lib/clapper/clapper-utils-private.h index 49e695db..ff565b14 100644 --- a/src/lib/clapper/clapper-utils-private.h +++ b/src/lib/clapper/clapper-utils-private.h @@ -55,9 +55,6 @@ void clapper_utils_timeline_remove_on_main_sync (ClapperTimeline *timeline, Clap G_GNUC_INTERNAL void clapper_utils_prop_notify_on_main_sync (GObject *object, GParamSpec *pspec); -G_GNUC_INTERNAL -gchar * clapper_utils_uri_from_file (GFile *file); - G_GNUC_INTERNAL gchar * clapper_utils_title_from_uri (const gchar *uri); diff --git a/src/lib/clapper/clapper-utils.c b/src/lib/clapper/clapper-utils.c index 9477fe74..ba5648c6 100644 --- a/src/lib/clapper/clapper-utils.c +++ b/src/lib/clapper/clapper-utils.c @@ -248,28 +248,6 @@ clapper_utils_prop_notify_on_main_sync (GObject *object, GParamSpec *pspec) GST_DEBUG ("Prop notify invoke finished"); } -gchar * -clapper_utils_uri_from_file (GFile *file) -{ - gchar *uri = g_file_get_uri (file); - gsize length = strlen (uri); - - /* GFile might incorrectly append "/" at the end of an URI, - * remove it to make it work with GStreamer URI handling */ - if (uri[length - 1] == '/') { - gchar *fixed_uri; - - /* NULL terminated copy without last character */ - fixed_uri = g_new0 (gchar, length); - memcpy (fixed_uri, uri, length - 1); - - g_free (uri); - uri = fixed_uri; - } - - return uri; -} - gchar * clapper_utils_title_from_uri (const gchar *uri) {