diff --git a/lib/native/mac/libsparkle_init.dylib b/lib/native/mac/libsparkle_init.dylib index fe8eb0cba..5658985ec 100755 Binary files a/lib/native/mac/libsparkle_init.dylib and b/lib/native/mac/libsparkle_init.dylib differ diff --git a/src/native/macosx/sparkle/net_java_sip_communicator_impl_sparkle_SparkleActivator.h b/src/native/macosx/sparkle/net_java_sip_communicator_impl_sparkle_SparkleActivator.h index 588a66d52..0343c02ec 100644 --- a/src/native/macosx/sparkle/net_java_sip_communicator_impl_sparkle_SparkleActivator.h +++ b/src/native/macosx/sparkle/net_java_sip_communicator_impl_sparkle_SparkleActivator.h @@ -10,10 +10,10 @@ extern "C" { /* * Class: net_java_sip_communicator_impl_sparkle_SparkleActivator * Method: initSparkle - * Signature: ()V + * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_sparkle_SparkleActivator_initSparkle - (JNIEnv *, jclass); + (JNIEnv *, jclass, jstring); #ifdef __cplusplus } diff --git a/src/native/macosx/sparkle/net_java_sip_communicator_impl_sparkle_SparkleActivator.m b/src/native/macosx/sparkle/net_java_sip_communicator_impl_sparkle_SparkleActivator.m index 1f60c6580..a41576716 100644 --- a/src/native/macosx/sparkle/net_java_sip_communicator_impl_sparkle_SparkleActivator.m +++ b/src/native/macosx/sparkle/net_java_sip_communicator_impl_sparkle_SparkleActivator.m @@ -16,21 +16,22 @@ /* * Class: net_java_sip_communicator_impl_sparkle_SparkleActivator * Method: initSparkle - * Signature: ()V + * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_sparkle_SparkleActivator_initSparkle - (JNIEnv *env, jclass obj) + (JNIEnv *env, jclass obj, jstring pathToSparkleFramework) { bool haveBundle = ([[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"] != nil); - - NSString* path = [[NSString alloc] - initWithUTF8String:"Contents/Frameworks/Sparkle.framework"]; - NSBundle* bundle = [NSBundle bundleWithPath:path]; + const char *path = (*env)->GetStringUTFChars(env, pathToSparkleFramework, 0); + + NSBundle* bundle = [NSBundle bundleWithPath:[NSString stringWithCString: path]]; Class suUpdaterClass = [bundle classNamed:@"SUUpdater"]; id suUpdater = [[suUpdaterClass alloc] init]; - + + (*env)->ReleaseStringUTFChars(env, pathToSparkleFramework, path); + NSMenu* menu = [[NSApplication sharedApplication] mainMenu]; NSMenu* applicationMenu = [[menu itemAtIndex:0] submenu]; NSMenuItem* checkForUpdatesMenuItem = [[NSMenuItem alloc] diff --git a/src/net/java/sip/communicator/impl/sparkle/SparkleActivator.java b/src/net/java/sip/communicator/impl/sparkle/SparkleActivator.java index ebe951c54..4823be680 100644 --- a/src/net/java/sip/communicator/impl/sparkle/SparkleActivator.java +++ b/src/net/java/sip/communicator/impl/sparkle/SparkleActivator.java @@ -20,7 +20,7 @@ public class SparkleActivator private static Logger logger = Logger.getLogger(SparkleActivator.class); // Native method declaration - public native static void initSparkle(); + public native static void initSparkle(String pathToSparkleFramework); /** * Dynamically loads JNI object. Will fail if non-MacOSX @@ -38,7 +38,8 @@ public class SparkleActivator */ public void start(BundleContext bundleContext) throws Exception { - initSparkle(); + // TODO: better way to get the Sparkle Framework path? + initSparkle(System.getProperty("user.dir") + "/../../Frameworks/Sparkle.framework"); logger.info("Sparkle Plugin ...[Started]"); }