[vlc-commits] [Git][videolan/vlc][master] VLCLibraryHomeViewController: refactor notifications

Steve Lhomme (@robUx4) gitlab at videolan.org
Sat Jun 1 07:26:34 UTC 2024



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
79ff6c37 by Alexandre Janniaux at 2024-06-01T07:07:56+00:00
VLCLibraryHomeViewController: refactor notifications

NSNotificationCenter was used repeatedly with repeated allocation to the
autorelease pool in order to setup the suffix addition for the
notification name.

This commit uses a for-loop releasing the local autorelease allocations
and create the notification names on-the-fly to avoid repetition.

- - - - -


1 changed file:

- modules/gui/macosx/library/home-library/VLCLibraryHomeViewController.m


Changes:

=====================================
modules/gui/macosx/library/home-library/VLCLibraryHomeViewController.m
=====================================
@@ -69,64 +69,33 @@
         [self setupHomeLibraryViews];
 
         NSNotificationCenter *notificationCenter = NSNotificationCenter.defaultCenter;
-        [notificationCenter addObserver:self
-                               selector:@selector(libraryModelUpdated:)
-                                   name:VLCLibraryModelVideoMediaListReset
-                                 object:nil];
-        [notificationCenter addObserver:self
-                               selector:@selector(libraryModelUpdated:)
-                                   name:VLCLibraryModelVideoMediaItemDeleted
-                                 object:nil];
-        [notificationCenter addObserver:self
-                               selector:@selector(libraryModelUpdated:)
-                                   name:VLCLibraryModelAudioMediaListReset
-                                 object:nil];
-        [notificationCenter addObserver:self
-                               selector:@selector(libraryModelUpdated:)
-                                   name:VLCLibraryModelAudioMediaItemDeleted
-                                 object:nil];
-
-        NSString * const videoMediaResetLongLoadStartNotification = [VLCLibraryModelVideoMediaListReset stringByAppendingString:VLCLongNotificationNameStartSuffix];
-        NSString * const videoMediaResetLongLoadFinishNotification = [VLCLibraryModelVideoMediaListReset stringByAppendingString:VLCLongNotificationNameFinishSuffix];
-        NSString * const audioMediaResetLongLoadStartNotification = [VLCLibraryModelAudioMediaListReset stringByAppendingString:VLCLongNotificationNameStartSuffix];
-        NSString * const audioMediaResetLongLoadFinishNotification = [VLCLibraryModelAudioMediaListReset stringByAppendingString:VLCLongNotificationNameFinishSuffix];
-        NSString * const videoMediaDeletedLongLoadStartNotification = [VLCLibraryModelVideoMediaItemDeleted stringByAppendingString:VLCLongNotificationNameStartSuffix];
-        NSString * const videoMediaDeletedLongLoadFinishNotification = [VLCLibraryModelVideoMediaItemDeleted stringByAppendingString:VLCLongNotificationNameFinishSuffix];
-        NSString * const audioMediaDeletedLongLoadStartNotification = [VLCLibraryModelAudioMediaItemDeleted stringByAppendingString:VLCLongNotificationNameStartSuffix];
-        NSString * const audioMediaDeletedLongLoadFinishNotification = [VLCLibraryModelAudioMediaItemDeleted stringByAppendingString:VLCLongNotificationNameFinishSuffix];
-
-        [notificationCenter addObserver:self
-                               selector:@selector(libraryModelLongLoadStarted:)
-                                   name:videoMediaResetLongLoadStartNotification
-                                 object:nil];
-        [notificationCenter addObserver:self
-                               selector:@selector(libraryModelLongLoadFinished:)
-                                   name:videoMediaResetLongLoadFinishNotification
-                                 object:nil];
-        [notificationCenter addObserver:self
-                               selector:@selector(libraryModelLongLoadStarted:)
-                                   name:audioMediaResetLongLoadStartNotification
-                                 object:nil];
-        [notificationCenter addObserver:self
-                               selector:@selector(libraryModelLongLoadFinished:)
-                                   name:audioMediaResetLongLoadFinishNotification
-                                 object:nil];
-        [notificationCenter addObserver:self
-                               selector:@selector(libraryModelLongLoadStarted:)
-                                   name:videoMediaDeletedLongLoadStartNotification
-                                 object:nil];
-        [notificationCenter addObserver:self
-                               selector:@selector(libraryModelLongLoadFinished:)
-                                   name:videoMediaDeletedLongLoadFinishNotification
-                                 object:nil];
-        [notificationCenter addObserver:self
-                               selector:@selector(libraryModelLongLoadStarted:)
-                                   name:audioMediaDeletedLongLoadStartNotification
-                                 object:nil];
-        [notificationCenter addObserver:self
-                               selector:@selector(libraryModelLongLoadFinished:)
-                                   name:audioMediaDeletedLongLoadFinishNotification
-                                 object:nil];
+        NSString *notificationNames[] =
+        {
+            VLCLibraryModelVideoMediaListReset,
+            VLCLibraryModelAudioMediaListReset,
+            VLCLibraryModelVideoMediaItemDeleted,
+            VLCLibraryModelAudioMediaItemDeleted,
+        };
+
+        for (size_t i = 0; i < ARRAY_SIZE(notificationNames); ++i) @autoreleasepool
+        {
+            [notificationCenter addObserver:self
+                                   selector:@selector(libraryModelUpdated:)
+                                       name:notificationNames[i]
+                                     object:nil];
+
+            NSString *startedNotification = [notificationNames[i] stringByAppendingString:VLCLongNotificationNameStartSuffix];
+            [notificationCenter addObserver:self
+                                   selector:@selector(libraryModelLongLoadStarted:)
+                                       name:startedNotification
+                                     object:nil];
+
+            NSString *finishedNotification = [notificationNames[i] stringByAppendingString:VLCLongNotificationNameFinishSuffix];
+            [notificationCenter addObserver:self
+                                   selector:@selector(libraryModelLongLoadFinished:)
+                                       name:finishedNotification
+                                     object:nil];
+        }
     }
 
     return self;



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/79ff6c37870fef51f26705c695a1b051531f6db6

-- 
This project does not include diff previews in email notifications.
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/79ff6c37870fef51f26705c695a1b051531f6db6
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