[vlc-commits] [Git][videolan/vlc][master] macosx: Instantiate media tree with vlc_media_tree_New()

Steve Lhomme (@robUx4) gitlab at videolan.org
Sun Jun 7 07:22:57 UTC 2026



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
203ae3b9 by Claudio Cambra at 2026-06-07T07:07:28+00:00
macosx: Instantiate media tree with vlc_media_tree_New()

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -


1 changed file:

- modules/gui/macosx/library/media-source/VLCMediaSource.m


Changes:

=====================================
modules/gui/macosx/library/media-source/VLCMediaSource.m
=====================================
@@ -115,7 +115,7 @@ static const char *const remoteBrowseDescription = "Remote Browse";
         }
         
         _p_mediaSource->description = localDevicesDescription;
-        _p_mediaSource->tree = calloc(1, sizeof(vlc_media_tree_t));
+        _p_mediaSource->tree = vlc_media_tree_New();
         
         if (_p_mediaSource->tree == NULL) {
             free(_p_mediaSource);
@@ -159,7 +159,7 @@ static const char *const remoteBrowseDescription = "Remote Browse";
         }
 
         _p_mediaSource->description = myFoldersDescription;
-        _p_mediaSource->tree = calloc(1, sizeof(vlc_media_tree_t));
+        _p_mediaSource->tree = vlc_media_tree_New();
 
         if (_p_mediaSource->tree == NULL) {
             free(_p_mediaSource);
@@ -234,7 +234,7 @@ static const char *const remoteBrowseDescription = "Remote Browse";
         if (isFileUrl) {
             _category = SD_CAT_MYCOMPUTER;
             _p_mediaSource->description = myFoldersDescription;
-            _p_mediaSource->tree = calloc(1, sizeof(vlc_media_tree_t));
+            _p_mediaSource->tree = vlc_media_tree_New();
 
             BOOL mrlTargetIsDirectory = NO;
             const BOOL mrlTargetExists = [NSFileManager.defaultManager
@@ -264,8 +264,9 @@ static const char *const remoteBrowseDescription = "Remote Browse";
                                                                isFileUrl ? ITEM_LOCAL : ITEM_NET);
 
         if (isFileUrl) {
-            input_item_node_t * const directoryNode = input_item_node_Create(directoryItem);
-            _p_mediaSource->tree->root = *directoryNode;
+            // vlc_media_tree_New already initialised root with empty children;
+            // just set the root item directly.
+            _p_mediaSource->tree->root.p_item = directoryItem;
         } else {
             input_item_node_t * const directoryNode = input_item_node_Create(directoryItem);
             input_item_node_AppendNode(&_p_mediaSource->tree->root, directoryNode);
@@ -289,6 +290,10 @@ static const char *const remoteBrowseDescription = "Remote Browse";
         if (_p_mediaSource->description == localDevicesDescription || _p_mediaSource->description == myFoldersDescription) {
             _p_mediaSource->description = NULL;
 
+            if (_p_mediaSource->tree->root.p_item != NULL) {
+                input_item_Release(_p_mediaSource->tree->root.p_item);
+                _p_mediaSource->tree->root.p_item = NULL;
+            }
             vlc_media_tree_Release(_p_mediaSource->tree);
             free(_p_mediaSource);
             _p_mediaSource = NULL;



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/203ae3b908c32ee9e357c27bf5f2998e8dc55629

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/203ae3b908c32ee9e357c27bf5f2998e8dc55629
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help




More information about the vlc-commits mailing list