|
@@ -37,6 +37,7 @@ |
|
|
// Keep track of the paused state |
|
|
public static boolean mIsPaused, mIsSurfaceReady, mHasFocus; |
|
|
public static boolean mExitCalledFromJava; |
|
|
public static boolean mBrokenLibraries; |
|
|
|
|
|
// Main components |
|
|
protected static SDLActivity mSingleton; |
|
@@ -52,13 +53,19 @@ |
|
|
protected static AudioTrack mAudioTrack; |
|
|
|
|
|
// Load the .so |
|
|
static { |
|
|
System.loadLibrary("SDL2"); |
|
|
//System.loadLibrary("SDL2_image"); |
|
|
//System.loadLibrary("SDL2_mixer"); |
|
|
//System.loadLibrary("SDL2_net"); |
|
|
//System.loadLibrary("SDL2_ttf"); |
|
|
System.loadLibrary("main"); |
|
|
public void loadLibraries() { |
|
|
String AppLibraries[] = { |
|
|
"SDL2", |
|
|
// "SDL2_image", |
|
|
// "SDL2_mixer", |
|
|
// "SDL2_net", |
|
|
// "SDL2_ttf", |
|
|
"main" |
|
|
}; |
|
|
|
|
|
for (String lib : AppLibraries) { |
|
|
System.loadLibrary(lib); |
|
|
} |
|
|
} |
|
|
|
|
|
/** |
|
@@ -83,6 +90,7 @@ public static void initialize() { |
|
|
mSDLThread = null; |
|
|
mAudioTrack = null; |
|
|
mExitCalledFromJava = false; |
|
|
mBrokenLibraries = false; |
|
|
mIsPaused = false; |
|
|
mIsSurfaceReady = false; |
|
|
mHasFocus = true; |
|
@@ -98,6 +106,35 @@ protected void onCreate(Bundle savedInstanceState) { |
|
|
// So we can call stuff from static callbacks |
|
|
mSingleton = this; |
|
|
|
|
|
// Load shared libraries |
|
|
try { |
|
|
loadLibraries(); |
|
|
} catch(UnsatisfiedLinkError e) { |
|
|
System.out.println(e.getMessage()); |
|
|
mBrokenLibraries = true; |
|
|
} catch(Exception e) { |
|
|
System.out.println(e.getMessage()); |
|
|
mBrokenLibraries = true; |
|
|
} |
|
|
|
|
|
if (mBrokenLibraries) |
|
|
{ |
|
|
AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this); |
|
|
dlgAlert.setMessage("An error occurred while try to start the application. Please try again and/or reinstall."); |
|
|
dlgAlert.setTitle("SDL Error"); |
|
|
dlgAlert.setPositiveButton("EXIT", |
|
|
new DialogInterface.OnClickListener() { |
|
|
public void onClick(DialogInterface dialog,int id) { |
|
|
// if this button is clicked, close current activity |
|
|
SDLActivity.mSingleton.finish(); |
|
|
} |
|
|
}); |
|
|
dlgAlert.setCancelable(true); |
|
|
dlgAlert.create().show(); |
|
|
|
|
|
return; |
|
|
} |
|
|
|
|
|
// Set up the surface |
|
|
mSurface = new SDLSurface(getApplication()); |
|
|
|
|
@@ -119,13 +156,23 @@ protected void onCreate(Bundle savedInstanceState) { |
|
|
protected void onPause() { |
|
|
Log.v("SDL", "onPause()"); |
|
|
super.onPause(); |
|
|
|
|
|
if (SDLActivity.mBrokenLibraries) { |
|
|
return; |
|
|
} |
|
|
|
|
|
SDLActivity.handlePause(); |
|
|
} |
|
|
|
|
|
@Override |
|
|
protected void onResume() { |
|
|
Log.v("SDL", "onResume()"); |
|
|
super.onResume(); |
|
|
|
|
|
if (SDLActivity.mBrokenLibraries) { |
|
|
return; |
|
|
} |
|
|
|
|
|
SDLActivity.handleResume(); |
|
|
} |
|
|
|
|
@@ -135,6 +182,10 @@ public void onWindowFocusChanged(boolean hasFocus) { |
|
|
super.onWindowFocusChanged(hasFocus); |
|
|
Log.v("SDL", "onWindowFocusChanged(): " + hasFocus); |
|
|
|
|
|
if (SDLActivity.mBrokenLibraries) { |
|
|
return; |
|
|
} |
|
|
|
|
|
SDLActivity.mHasFocus = hasFocus; |
|
|
if (hasFocus) { |
|
|
SDLActivity.handleResume(); |
|
@@ -145,12 +196,25 @@ public void onWindowFocusChanged(boolean hasFocus) { |
|
|
public void onLowMemory() { |
|
|
Log.v("SDL", "onLowMemory()"); |
|
|
super.onLowMemory(); |
|
|
|
|
|
if (SDLActivity.mBrokenLibraries) { |
|
|
return; |
|
|
} |
|
|
|
|
|
SDLActivity.nativeLowMemory(); |
|
|
} |
|
|
|
|
|
@Override |
|
|
protected void onDestroy() { |
|
|
Log.v("SDL", "onDestroy()"); |
|
|
|
|
|
if (SDLActivity.mBrokenLibraries) { |
|
|
super.onDestroy(); |
|
|
// Reset everything in case the user re opens the app |
|
|
SDLActivity.initialize(); |
|
|
return; |
|
|
} |
|
|
|
|
|
// Send a quit message to the application |
|
|
SDLActivity.mExitCalledFromJava = true; |
|
|
SDLActivity.nativeQuit(); |
|
@@ -174,6 +238,11 @@ protected void onDestroy() { |
|
|
|
|
|
@Override |
|
|
public boolean dispatchKeyEvent(KeyEvent event) { |
|
|
|
|
|
if (SDLActivity.mBrokenLibraries) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
int keyCode = event.getKeyCode(); |
|
|
// Ignore certain special keys so they're handled by Android |
|
|
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || |
|
|