]> git.sesse.net Git - vlc/commitdiff
macosx: lock access to addon_entry_t
authorDavid Fuhrmann <dfuhrmann@videolan.org>
Sun, 18 May 2014 18:06:54 +0000 (20:06 +0200)
committerDavid Fuhrmann <dfuhrmann@videolan.org>
Mon, 19 May 2014 09:39:31 +0000 (11:39 +0200)
modules/gui/macosx/AddonListDataSource.h
modules/gui/macosx/AddonListDataSource.m
modules/gui/macosx/AddonManager.m

index efd3fdd1bcc718d84eb63994ecf645af231b6c13..affce6f9fef198aef46eb6523cecc2c4fdee3679 100644 (file)
@@ -32,7 +32,7 @@
 
 - (id)initWithAddon:(addon_entry_t *)p_entry;
 
-- (uint8_t *)uuid;
+- (NSData *)uuid;
 
 - (NSString *)name;
 - (NSString *)author;
index f9c37686a505eaf5c4b9e67b959cec1257c98248..aabd1825df55bf27663b1dde4dc9253853ab5c40 100644 (file)
     [super dealloc];
 }
 
-- (uint8_t *)uuid
+- (NSData *)uuid
 {
-    return p_addon_entry->uuid;
+    vlc_mutex_lock(&p_addon_entry->lock);
+    NSData *o_uuid = [NSData dataWithBytes:p_addon_entry->uuid length:sizeof(p_addon_entry->uuid)];
+    vlc_mutex_unlock(&p_addon_entry->lock);
+
+    return o_uuid;
 }
 
 - (NSString *)name
 {
-    return toNSStr(p_addon_entry->psz_name);
+    vlc_mutex_lock(&p_addon_entry->lock);
+    NSString *o_str = toNSStr(p_addon_entry->psz_name);
+    vlc_mutex_unlock(&p_addon_entry->lock);
+
+    return o_str;
 }
 - (NSString *)author
 {
-    return toNSStr(p_addon_entry->psz_author);
+    vlc_mutex_lock(&p_addon_entry->lock);
+    NSString *o_str = toNSStr(p_addon_entry->psz_author);
+    vlc_mutex_unlock(&p_addon_entry->lock);
+
+    return o_str;
 }
 
 - (NSString *)version
 {
-    return toNSStr(p_addon_entry->psz_version);
+    vlc_mutex_lock(&p_addon_entry->lock);
+    NSString *o_str = toNSStr(p_addon_entry->psz_version);
+    vlc_mutex_unlock(&p_addon_entry->lock);
+
+    return o_str;
 }
 
 - (NSString *)description
 {
-    return toNSStr(p_addon_entry->psz_description);
+    vlc_mutex_lock(&p_addon_entry->lock);
+    NSString *o_str = toNSStr(p_addon_entry->psz_description);
+    vlc_mutex_unlock(&p_addon_entry->lock);
+
+    return o_str;
 }
 
 - (BOOL)isInstalled
 {
-    return p_addon_entry->e_state == ADDON_INSTALLED;
+    vlc_mutex_lock(&p_addon_entry->lock);
+    BOOL b_installed = p_addon_entry->e_state == ADDON_INSTALLED;
+    vlc_mutex_unlock(&p_addon_entry->lock);
+
+    return b_installed;
 }
 
 - (addon_type_t)type
 {
-    return p_addon_entry->e_type;
+    vlc_mutex_lock(&p_addon_entry->lock);
+    addon_type_t type = p_addon_entry->e_type;
+    vlc_mutex_unlock(&p_addon_entry->lock);
+
+    return type;
 }
 
 @end
index cdf3481b53c4bba13b085473209432734030e787..f7fa9c80e0e95e87f01ab8e515ba9a4474ac6cec 100644 (file)
@@ -276,14 +276,20 @@ static VLCAddonManager *_o_sharedInstance = nil;
     addons_manager_LoadCatalog(_manager);
 }
 
-- (void)_installAddonWithID:(addon_uuid_t)addonid
+- (void)_installAddonWithID:(NSData *)o_data
 {
-    addons_manager_Install(_manager, addonid);
+    addon_uuid_t uuid;
+    [o_data getBytes:uuid length:sizeof(uuid)];
+
+    addons_manager_Install(_manager, uuid);
 }
 
-- (void)_removeAddonWithID:(addon_uuid_t)addonid
+- (void)_removeAddonWithID:(NSData *)o_data
 {
-    addons_manager_Remove(_manager, addonid);
+    addon_uuid_t uuid;
+    [o_data getBytes:uuid length:sizeof(uuid)];
+
+    addons_manager_Remove(_manager, uuid);
 }
 
 - (NSString *)_getAddonType:(int)i_type