[vlc-commits] macosx/playlist controller: post notification when current item changes

Felix Paul Kühne git at videolan.org
Sun Mar 10 19:56:05 CET 2019


vlc | branch: master | Felix Paul Kühne <felix at feepk.net> | Sun Mar 10 19:23:15 2019 +0100| [8fc2c5b4c43fc8eb610faa346ca27ff958586540] | committer: Felix Paul Kühne

macosx/playlist controller: post notification when current item changes

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8fc2c5b4c43fc8eb610faa346ca27ff958586540
---

 modules/gui/macosx/menus/VLCMainMenu.m              | 3 ---
 modules/gui/macosx/playlist/VLCPlaylistController.h | 3 +++
 modules/gui/macosx/playlist/VLCPlaylistController.m | 5 +++++
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/modules/gui/macosx/menus/VLCMainMenu.m b/modules/gui/macosx/menus/VLCMainMenu.m
index 9d2a1a613f..a92e4770eb 100644
--- a/modules/gui/macosx/menus/VLCMainMenu.m
+++ b/modules/gui/macosx/menus/VLCMainMenu.m
@@ -1578,9 +1578,6 @@
 {
     BOOL enabled = YES;
     input_item_t *inputItem = _playlistController.currentlyPlayingInputItem;
-    if (inputItem) {
-        input_item_Hold(inputItem);
-    }
 
     if (mi == _stop || mi == _voutMenustop || mi == _dockMenustop) {
         if (!inputItem)
diff --git a/modules/gui/macosx/playlist/VLCPlaylistController.h b/modules/gui/macosx/playlist/VLCPlaylistController.h
index 37ccfcb541..3b878ddec6 100644
--- a/modules/gui/macosx/playlist/VLCPlaylistController.h
+++ b/modules/gui/macosx/playlist/VLCPlaylistController.h
@@ -33,6 +33,7 @@ extern NSString *VLCPlaybackOrderChanged;
 extern NSString *VLCPlaybackRepeatChanged;
 extern NSString *VLCPlaybackHasPreviousChanged;
 extern NSString *VLCPlaybackHasNextChanged;
+extern NSString *VLCPlaylistCurrentItemChanged;
 
 @interface VLCPlaylistController : NSObject
 
@@ -71,6 +72,8 @@ extern NSString *VLCPlaybackHasNextChanged;
 /**
  * input of the currently playing item
  @return returns the input item for the currently playing playlist item
+ @note the receiver is responsible for releasing the input item
+ @note Subscribe to the VLCPlaylistCurrentItemChanged notification to be notified about changes
  */
 @property (readonly, nullable) input_item_t *currentlyPlayingInputItem;
 
diff --git a/modules/gui/macosx/playlist/VLCPlaylistController.m b/modules/gui/macosx/playlist/VLCPlaylistController.m
index 503a93c369..faa2f323af 100644
--- a/modules/gui/macosx/playlist/VLCPlaylistController.m
+++ b/modules/gui/macosx/playlist/VLCPlaylistController.m
@@ -36,6 +36,7 @@ NSString *VLCPlaybackOrderChanged = @"VLCPlaybackOrderChanged";
 NSString *VLCPlaybackRepeatChanged = @"VLCPlaybackRepeatChanged";
 NSString *VLCPlaybackHasPreviousChanged = @"VLCPlaybackHasPreviousChanged";
 NSString *VLCPlaybackHasNextChanged = @"VLCPlaybackHasNextChanged";
+NSString *VLCPlaylistCurrentItemChanged = @"VLCPlaylistCurrentItemChanged";
 
 @interface VLCPlaylistController ()
 {
@@ -277,6 +278,7 @@ static const struct vlc_playlist_callbacks playlist_callbacks = {
 {
     _currentPlaylistIndex = index;
     [_playlistDataSource playlistUpdated];
+    [[NSNotificationCenter defaultCenter] postNotificationName:VLCPlaylistCurrentItemChanged object:nil];
 }
 
 - (void)playlistHasPreviousItem:(BOOL)hasPrevious
@@ -449,6 +451,9 @@ static const struct vlc_playlist_callbacks playlist_callbacks = {
     vlc_player_t *player = vlc_playlist_GetPlayer(_p_playlist);
     vlc_player_Lock(player);
     input_item_t *inputItem = vlc_player_GetCurrentMedia(player);
+    if (inputItem) {
+        input_item_Hold(inputItem);
+    }
     vlc_player_Unlock(player);
     return inputItem;
 }



More information about the vlc-commits mailing list