Compile fix, cleanup

This commit is contained in:
Joshua Granick
2016-10-24 17:46:54 -07:00
parent fe13ea21f3
commit 384fdf2942
5 changed files with 59 additions and 34 deletions

View File

@@ -1,34 +1,56 @@
package lime.ui; package lime.ui;
#if android
import lime.system.JNI; import lime.system.JNI;
#elseif (lime_cffi && !macro) import lime.utils.Log;
import lime.system.CFFI;
#if !macro
@:build(lime.system.CFFI.build())
#end #end
class Haptic { class Haptic {
#if ( android || ios )
private static var __vibrate:Int->Int->Void = null; public static function vibrate (period:Int, duration:Int):Void {
#end
public static function vibrate(period:Int, duration:Int){
#if android #if android
if(__vibrate==null){
__vibrate = JNI.createStaticMethod("org/haxe/lime/GameActivity", "vibrate", "(II)V"); if (lime_haptic_vibrate == null) {
}
try{ lime_haptic_vibrate = JNI.createStaticMethod ("org/haxe/lime/GameActivity", "vibrate", "(II)V");
// This will raise an exception if you don't have VIBRATE permission
__vibrate(period, duration); }
} catch (e:Dynamic) {
trace("JNI Exception: Have you added VIBRATE permission?"); try {
}
#elseif ios lime_haptic_vibrate (period, duration);
if(__vibrate == null){
__vibrate = CFFI.load ("lime", "lime_haptic_vibrate", 2); } catch (e:Dynamic) {
}
__vibrate(period, duration); Log.warn ("Haptic.vibrate is not available (the VIBRATE permission may be missing)");
}
#else
lime_haptic_vibrate (period, duration);
#end #end
} }
// Native Methods
#if android
private static var lime_haptic_vibrate (period:Int, duration:Int):Void;
#elseif (lime_cffi && !macro)
@:cffi private static function lime_haptic_vibrate (period:Int, duration:Int):Void;
#end
} }

View File

@@ -8,10 +8,9 @@ namespace lime {
class Haptic { class Haptic {
public: public:
#ifdef IPHONE
static void Vibrate (int period, int duration); static void Vibrate (int period, int duration);
#endif
}; };

View File

@@ -697,14 +697,16 @@ namespace lime {
} }
void lime_haptic_vibrate (int period, int duration) { void lime_haptic_vibrate (int period, int duration) {
#ifdef IPHONE #ifdef IPHONE
Haptic::Vibrate(period, duration); Haptic::Vibrate (period, duration);
#endif #endif
} }
value lime_image_encode (value buffer, int type, int quality, value bytes) { value lime_image_encode (value buffer, int type, int quality, value bytes) {
ImageBuffer imageBuffer = ImageBuffer (buffer); ImageBuffer imageBuffer = ImageBuffer (buffer);
@@ -1677,7 +1679,7 @@ namespace lime {
DEFINE_PRIME1 (lime_gamepad_get_device_name); DEFINE_PRIME1 (lime_gamepad_get_device_name);
DEFINE_PRIME2 (lime_gzip_compress); DEFINE_PRIME2 (lime_gzip_compress);
DEFINE_PRIME2 (lime_gzip_decompress); DEFINE_PRIME2 (lime_gzip_decompress);
DEFINE_PRIME2 (lime_haptic_vibrate); DEFINE_PRIME2v (lime_haptic_vibrate);
DEFINE_PRIME3v (lime_image_data_util_color_transform); DEFINE_PRIME3v (lime_image_data_util_color_transform);
DEFINE_PRIME6v (lime_image_data_util_copy_channel); DEFINE_PRIME6v (lime_image_data_util_copy_channel);
DEFINE_PRIME7v (lime_image_data_util_copy_pixels); DEFINE_PRIME7v (lime_image_data_util_copy_pixels);

View File

@@ -2,12 +2,13 @@
#import <AudioToolbox/AudioServices.h> #import <AudioToolbox/AudioServices.h>
namespace lime { namespace lime {
void Haptic::Vibrate (int period, int duration) { void Haptic::Vibrate (int period, int duration) {
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);
} }

View File

@@ -39,7 +39,8 @@ public class GameActivity extends SDLActivity {
}); });
} }
public static void vibrate (int period, int duration) { public static void vibrate (int period, int duration) {
Vibrator v = (Vibrator)mSingleton.getSystemService (Context.VIBRATOR_SERVICE); Vibrator v = (Vibrator)mSingleton.getSystemService (Context.VIBRATOR_SERVICE);
@@ -49,7 +50,7 @@ public class GameActivity extends SDLActivity {
v.vibrate (duration); v.vibrate (duration);
} else { } else {
int periodMS = (int)Math.ceil (period / 2); int periodMS = (int)Math.ceil (period / 2);
int count = (int)Math.ceil ((duration / period) * 2); int count = (int)Math.ceil ((duration / period) * 2);
long[] pattern = new long[count]; long[] pattern = new long[count];