[vlc-commits] [Git][videolan/vlc][master] macosx: Use @synchronized(self) rather than NSLock
Steve Lhomme (@robUx4)
gitlab at videolan.org
Mon Jun 30 11:20:20 UTC 2025
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
62fc903d by Claudio Cambra at 2025-06-30T11:04:47+00:00
macosx: Use @synchronized(self) rather than NSLock
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
=====================================
@@ -31,7 +31,6 @@
vlc_preparser_t *_p_preparser;
vlc_media_source_t *_p_mediaSource;
vlc_media_tree_listener_id *_p_treeListenerID;
- NSLock *_generateChildNodesLock;
}
@end
@@ -106,7 +105,6 @@ static const char *const myFoldersDescription = "My Folders";
{
self = [super init];
if (self) {
- _generateChildNodesLock = [[NSLock alloc] init];
_respondsToDiskChanges = NO;
_p_preparser = p_preparser;
@@ -135,7 +133,6 @@ static const char *const myFoldersDescription = "My Folders";
{
self = [super init];
if (self && p_mediaSource != NULL) {
- _generateChildNodesLock = [[NSLock alloc] init];
_respondsToDiskChanges = NO;
_p_preparser = p_preparser;
_p_mediaSource = p_mediaSource;
@@ -153,7 +150,6 @@ static const char *const myFoldersDescription = "My Folders";
{
self = [super init];
if (self) {
- _generateChildNodesLock = [[NSLock alloc] init];
_p_preparser = p_preparser;
_p_mediaSource = malloc(sizeof(vlc_media_source_t));
@@ -223,7 +219,6 @@ static const char *const myFoldersDescription = "My Folders";
{
self = [super init];
if (self) {
- _generateChildNodesLock = [[NSLock alloc] init];
_p_preparser = p_preparser;
_p_mediaSource = malloc(sizeof(vlc_media_source_t));
@@ -415,84 +410,83 @@ static const char *const myFoldersDescription = "My Folders";
withUrl:(NSURL *)directoryUrl
{
NSParameterAssert(directoryNode != NULL && directoryUrl != nil);
- [_generateChildNodesLock lock];
-
- if (self.willStartGeneratingChildNodesForNodeHandler) {
- self.willStartGeneratingChildNodesForNodeHandler(directoryNode);
- }
+ @synchronized (self) {
+ if (self.willStartGeneratingChildNodesForNodeHandler) {
+ self.willStartGeneratingChildNodesForNodeHandler(directoryNode);
+ }
- // Clear pre-existing child nodes
- while (directoryNode->i_children > 0) {
- input_item_node_t * const childNode = directoryNode->pp_children[0];
- input_item_node_RemoveNode(directoryNode, childNode);
- input_item_node_Delete(childNode);
- }
+ // Clear pre-existing child nodes
+ while (directoryNode->i_children > 0) {
+ input_item_node_t * const childNode = directoryNode->pp_children[0];
+ input_item_node_RemoveNode(directoryNode, childNode);
+ input_item_node_Delete(childNode);
+ }
- NSError *error;
- const NSDirectoryEnumerationOptions options =
- NSDirectoryEnumerationSkipsHiddenFiles | NSDirectoryEnumerationSkipsSubdirectoryDescendants;
- NSArray<NSURLResourceKey> * const keys = @[NSURLIsDirectoryKey];
- NSArray<NSURL *> *children =
- [NSFileManager.defaultManager contentsOfDirectoryAtURL:directoryUrl
- includingPropertiesForKeys:keys
- options:options
- error:&error];
-
- if (error) {
- NSLog(@"Failed to get directories: %@.", error);
- return error;
- }
+ NSError *error;
+ const NSDirectoryEnumerationOptions options =
+ NSDirectoryEnumerationSkipsHiddenFiles | NSDirectoryEnumerationSkipsSubdirectoryDescendants;
+ NSArray<NSURLResourceKey> * const keys = @[NSURLIsDirectoryKey];
+ NSArray<NSURL *> *children =
+ [NSFileManager.defaultManager contentsOfDirectoryAtURL:directoryUrl
+ includingPropertiesForKeys:keys
+ options:options
+ error:&error];
+
+ if (error) {
+ NSLog(@"Failed to get directories: %@.", error);
+ return error;
+ }
- children = [children sortedArrayUsingComparator:^NSComparisonResult(NSURL *url1, NSURL *url2) {
- NSNumber *isDirectory1 = nil;
- NSNumber *isDirectory2 = nil;
- [url1 getResourceValue:&isDirectory1 forKey:NSURLIsDirectoryKey error:NULL];
- [url2 getResourceValue:&isDirectory2 forKey:NSURLIsDirectoryKey error:NULL];
+ children = [children sortedArrayUsingComparator:^NSComparisonResult(NSURL *url1, NSURL *url2) {
+ NSNumber *isDirectory1 = nil;
+ NSNumber *isDirectory2 = nil;
+ [url1 getResourceValue:&isDirectory1 forKey:NSURLIsDirectoryKey error:NULL];
+ [url2 getResourceValue:&isDirectory2 forKey:NSURLIsDirectoryKey error:NULL];
- if (isDirectory1.boolValue && !isDirectory2.boolValue) {
- return NSOrderedAscending;
- } else if (!isDirectory1.boolValue && isDirectory2.boolValue) {
- return NSOrderedDescending;
- }
+ if (isDirectory1.boolValue && !isDirectory2.boolValue) {
+ return NSOrderedAscending;
+ } else if (!isDirectory1.boolValue && isDirectory2.boolValue) {
+ return NSOrderedDescending;
+ }
- return [url1.lastPathComponent compare:url2.lastPathComponent
- options:NSCaseInsensitiveSearch];
- }];
+ return [url1.lastPathComponent compare:url2.lastPathComponent
+ options:NSCaseInsensitiveSearch];
+ }];
- for (NSURL * const url in children) {
- NSNumber *isDirectory;
- NSNumber *isVolume;
- NSNumber *isEjectable;
- NSNumber *isInternal;
- NSNumber *isLocal;
+ for (NSURL * const url in children) {
+ NSNumber *isDirectory;
+ NSNumber *isVolume;
+ NSNumber *isEjectable;
+ NSNumber *isInternal;
+ NSNumber *isLocal;
- [url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:nil];
- [url getResourceValue:&isVolume forKey:NSURLIsVolumeKey error:nil];
- [url getResourceValue:&isEjectable forKey:NSURLVolumeIsEjectableKey error:nil];
- [url getResourceValue:&isInternal forKey:NSURLVolumeIsInternalKey error:nil];
- [url getResourceValue:&isLocal forKey:NSURLVolumeIsLocalKey error:nil];
-
- const enum input_item_type_e inputType = isDirectory.boolValue ? isEjectable.boolValue ? ITEM_TYPE_DISC : ITEM_TYPE_DIRECTORY : ITEM_TYPE_FILE;
- const enum input_item_net_type netType = isLocal.boolValue ? ITEM_LOCAL : ITEM_NET;
+ [url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:nil];
+ [url getResourceValue:&isVolume forKey:NSURLIsVolumeKey error:nil];
+ [url getResourceValue:&isEjectable forKey:NSURLVolumeIsEjectableKey error:nil];
+ [url getResourceValue:&isInternal forKey:NSURLVolumeIsInternalKey error:nil];
+ [url getResourceValue:&isLocal forKey:NSURLVolumeIsLocalKey error:nil];
+
+ const enum input_item_type_e inputType = isDirectory.boolValue ? isEjectable.boolValue ? ITEM_TYPE_DISC : ITEM_TYPE_DIRECTORY : ITEM_TYPE_FILE;
+ const enum input_item_net_type netType = isLocal.boolValue ? ITEM_LOCAL : ITEM_NET;
- const char * const psz_filename = url.absoluteString.UTF8String;
- const char * const psz_name = url.lastPathComponent.UTF8String;
-
- input_item_t *urlInputItem = input_item_NewExt(psz_filename, psz_name, 0, inputType, netType);
- if (urlInputItem != NULL && (inputType != ITEM_TYPE_FILE || input_item_Playable(psz_filename))) {
- input_item_node_t * const urlNode = input_item_node_Create(urlInputItem);
- if (urlNode) {
- input_item_node_AppendNode(directoryNode, urlNode);
+ const char * const psz_filename = url.absoluteString.UTF8String;
+ const char * const psz_name = url.lastPathComponent.UTF8String;
+
+ input_item_t *urlInputItem = input_item_NewExt(psz_filename, psz_name, 0, inputType, netType);
+ if (urlInputItem != NULL && (inputType != ITEM_TYPE_FILE || input_item_Playable(psz_filename))) {
+ input_item_node_t * const urlNode = input_item_node_Create(urlInputItem);
+ if (urlNode) {
+ input_item_node_AppendNode(directoryNode, urlNode);
+ }
+ input_item_Release(urlInputItem);
+ urlInputItem = NULL;
}
- input_item_Release(urlInputItem);
- urlInputItem = NULL;
}
- }
- if (self.didFinishGeneratingChildNodesForNodeHandler) {
- self.didFinishGeneratingChildNodesForNodeHandler(directoryNode);
+ if (self.didFinishGeneratingChildNodesForNodeHandler) {
+ self.didFinishGeneratingChildNodesForNodeHandler(directoryNode);
+ }
}
- [_generateChildNodesLock unlock];
return nil;
}
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/62fc903d0dc8625f5be011973aed31376d30bb73
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/62fc903d0dc8625f5be011973aed31376d30bb73
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list