mirror of
https://github.com/love2d/love-android.git
synced 2026-08-21 13:09:40 +02:00
fixed #104: loading of multiple .love files
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
android:name="GameActivity"
|
||||
android:configChanges="orientation|screenSize"
|
||||
android:label="LÖVE for Android"
|
||||
android:launchMode="singleTop"
|
||||
android:screenOrientation="landscape" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
@@ -75,7 +75,11 @@ const char* getSelectedGameFile()
|
||||
{
|
||||
static const char *path = NULL;
|
||||
|
||||
if (!path) {
|
||||
if (path) {
|
||||
delete path;
|
||||
path = NULL;
|
||||
}
|
||||
|
||||
JNIEnv *env = (JNIEnv*) SDL_AndroidGetJNIEnv();
|
||||
jclass activity = env->FindClass("org/love2d/android/GameActivity");
|
||||
|
||||
@@ -90,7 +94,6 @@ const char* getSelectedGameFile()
|
||||
|
||||
env->DeleteLocalRef (gamePath);
|
||||
env->DeleteLocalRef (activity);
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
@@ -99,24 +99,7 @@ public class SDLActivity extends Activity {
|
||||
Log.v("SDL", "onCreate():" + mSingleton);
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
SDLActivity.initialize();
|
||||
// So we can call stuff from static callbacks
|
||||
mSingleton = this;
|
||||
|
||||
// Set up the surface
|
||||
mSurface = new SDLSurface(getApplication());
|
||||
|
||||
if(Build.VERSION.SDK_INT >= 12) {
|
||||
mJoystickHandler = new SDLJoystickHandler_API12();
|
||||
}
|
||||
else {
|
||||
mJoystickHandler = new SDLJoystickHandler();
|
||||
}
|
||||
|
||||
mLayout = new AbsoluteLayout(this);
|
||||
mLayout.addView(mSurface);
|
||||
|
||||
setContentView(mLayout);
|
||||
startNative();
|
||||
}
|
||||
|
||||
// Events
|
||||
@@ -153,9 +136,11 @@ public class SDLActivity extends Activity {
|
||||
SDLActivity.nativeLowMemory();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
Log.v("SDL", "onDestroy()");
|
||||
/** Ends the native thread.
|
||||
*/
|
||||
public void resetNative() {
|
||||
Log.v("SDL", "resetNative()");
|
||||
|
||||
// Send a quit message to the application
|
||||
SDLActivity.mExitCalledFromJava = true;
|
||||
SDLActivity.nativeQuit();
|
||||
@@ -172,11 +157,40 @@ public class SDLActivity extends Activity {
|
||||
//Log.v("SDL", "Finished waiting for SDL thread");
|
||||
}
|
||||
|
||||
super.onDestroy();
|
||||
// Reset everything in case the user re opens the app
|
||||
SDLActivity.initialize();
|
||||
}
|
||||
|
||||
public void startNative() {
|
||||
Log.v("SDL", "startNative()");
|
||||
SDLActivity.initialize();
|
||||
// So we can call stuff from static callbacks
|
||||
mSingleton = this;
|
||||
|
||||
// Set up the surface
|
||||
mSurface = new SDLSurface(getApplication());
|
||||
|
||||
if(Build.VERSION.SDK_INT >= 12) {
|
||||
mJoystickHandler = new SDLJoystickHandler_API12();
|
||||
}
|
||||
else {
|
||||
mJoystickHandler = new SDLJoystickHandler();
|
||||
}
|
||||
|
||||
mLayout = new AbsoluteLayout(this);
|
||||
mLayout.addView(mSurface);
|
||||
|
||||
setContentView(mLayout);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
Log.v("SDL", "onDestroy()");
|
||||
|
||||
resetNative();
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dispatchKeyEvent(KeyEvent event) {
|
||||
int keyCode = event.getKeyCode();
|
||||
|
||||
@@ -46,9 +46,26 @@ public class GameActivity extends SDLActivity {
|
||||
context = this.getApplicationContext();
|
||||
vibrator = (Vibrator) this.context.getSystemService(Context.VIBRATOR_SERVICE);
|
||||
|
||||
Uri game = this.getIntent().getData();
|
||||
handleIntent (this.getIntent());
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
getWindowManager().getDefaultDisplay().getMetrics(metrics);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNewIntent (Intent intent) {
|
||||
Log.d("GameActivity", "onNewIntent() with " + intent);
|
||||
handleIntent (intent);
|
||||
resetNative();
|
||||
startNative();
|
||||
};
|
||||
|
||||
protected void handleIntent (Intent intent) {
|
||||
Uri game = intent.getData();
|
||||
if (game != null) {
|
||||
if (game.getScheme().equals ("file")) {
|
||||
Log.d("GameActivity", "Received intent with path: " + game.getPath());
|
||||
|
||||
// If we were given the path of a main.lua then use its
|
||||
// directory. Otherwise use full path.
|
||||
List<String> path_segments = game.getPathSegments();
|
||||
@@ -60,12 +77,10 @@ public class GameActivity extends SDLActivity {
|
||||
} else {
|
||||
copyGameToCache (game);
|
||||
}
|
||||
Log.d("GameActivity", "Opening game from: " + getGamePath());
|
||||
}
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
getWindowManager().getDefaultDisplay().getMetrics(metrics);
|
||||
Log.d("GameActivity", "new gamePath: " + gamePath);
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
|
||||
Reference in New Issue
Block a user