[vlc-commits] macosx: fix memleaks in podcast handling, remove unnecessary module restart
David Fuhrmann
git at videolan.org
Tue Nov 11 12:25:09 CET 2014
vlc | branch: master | David Fuhrmann <dfuhrmann at videolan.org> | Tue Nov 11 10:51:51 2014 +0100| [3788f1cb25bea9f38d19a22e496474bfdd5a6ef1] | committer: David Fuhrmann
macosx: fix memleaks in podcast handling, remove unnecessary module restart
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3788f1cb25bea9f38d19a22e496474bfdd5a6ef1
---
modules/gui/macosx/MainWindow.m | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/modules/gui/macosx/MainWindow.m b/modules/gui/macosx/MainWindow.m
index 00ec109..1adfe4e 100644
--- a/modules/gui/macosx/MainWindow.m
+++ b/modules/gui/macosx/MainWindow.m
@@ -1279,11 +1279,13 @@ static VLCMainWindow *_o_sharedInstance = nil;
- (IBAction)removePodcast:(id)sender
{
- if (config_GetPsz(VLCIntf, "podcast-urls") != NULL) {
+ char *psz_urls = var_InheritString(pl_Get(VLCIntf), "podcast-urls");
+ if (psz_urls != NULL) {
[o_podcast_unsubscribe_pop removeAllItems];
- [o_podcast_unsubscribe_pop addItemsWithTitles:[[NSString stringWithUTF8String:config_GetPsz(VLCIntf, "podcast-urls")] componentsSeparatedByString:@"|"]];
+ [o_podcast_unsubscribe_pop addItemsWithTitles:[toNSStr(psz_urls) componentsSeparatedByString:@"|"]];
[NSApp beginSheet:o_podcast_unsubscribe_window modalForWindow:self modalDelegate:self didEndSelector:NULL contextInfo:nil];
}
+ free(psz_urls);
}
- (IBAction)removePodcastWindowAction:(id)sender
@@ -1292,17 +1294,20 @@ static VLCMainWindow *_o_sharedInstance = nil;
[NSApp endSheet: o_podcast_unsubscribe_window];
if (sender == o_podcast_unsubscribe_ok_btn) {
+ playlist_t * p_playlist = pl_Get(VLCIntf);
+ char *psz_urls = var_InheritString(p_playlist, "podcast-urls");
+
NSMutableArray * urls = [[NSMutableArray alloc] initWithArray:[[NSString stringWithUTF8String:config_GetPsz(VLCIntf, "podcast-urls")] componentsSeparatedByString:@"|"]];
[urls removeObjectAtIndex: [o_podcast_unsubscribe_pop indexOfSelectedItem]];
- config_PutPsz(VLCIntf, "podcast-urls", [[urls componentsJoinedByString:@"|"] UTF8String]);
- var_SetString(pl_Get(VLCIntf), "podcast-urls", config_GetPsz(VLCIntf, "podcast-urls"));
+ const char *psz_new_urls = [[urls componentsJoinedByString:@"|"] UTF8String];
+ var_SetString(pl_Get(VLCIntf), "podcast-urls", psz_new_urls);
+ config_PutPsz(VLCIntf, "podcast-urls", psz_new_urls);
[urls release];
- /* reload the podcast module, since it won't update its list when removing podcasts */
- playlist_t * p_playlist = pl_Get(VLCIntf);
+ free(psz_urls);
+
+ /* update playlist table */
if (playlist_IsServicesDiscoveryLoaded(p_playlist, "podcast{longname=\"Podcasts\"}")) {
- playlist_ServicesDiscoveryRemove(p_playlist, "podcast{longname=\"Podcasts\"}");
- playlist_ServicesDiscoveryAdd(p_playlist, "podcast{longname=\"Podcasts\"}");
[[[VLCMain sharedInstance] playlist] playlistUpdated];
}
}
More information about the vlc-commits
mailing list