fixed #104: loading of multiple .love files

This commit is contained in:
fysx
2015-02-18 10:33:54 +01:00
parent d6f1d8bd70
commit 168357e1ad
4 changed files with 89 additions and 56 deletions
+49 -35
View File
@@ -98,25 +98,8 @@ public class SDLActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
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,28 +136,59 @@ public class SDLActivity extends Activity {
SDLActivity.nativeLowMemory();
}
/** Ends the native thread.
*/
public void resetNative() {
Log.v("SDL", "resetNative()");
// Send a quit message to the application
SDLActivity.mExitCalledFromJava = true;
SDLActivity.nativeQuit();
// Now wait for the SDL thread to quit
if (SDLActivity.mSDLThread != null) {
try {
SDLActivity.mSDLThread.join();
} catch(Exception e) {
Log.v("SDL", "Problem stopping thread: " + e);
}
SDLActivity.mSDLThread = null;
//Log.v("SDL", "Finished waiting for SDL thread");
}
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()");
// Send a quit message to the application
SDLActivity.mExitCalledFromJava = true;
SDLActivity.nativeQuit();
// Now wait for the SDL thread to quit
if (SDLActivity.mSDLThread != null) {
try {
SDLActivity.mSDLThread.join();
} catch(Exception e) {
Log.v("SDL", "Problem stopping thread: " + e);
}
SDLActivity.mSDLThread = null;
//Log.v("SDL", "Finished waiting for SDL thread");
}
resetNative();
super.onDestroy();
// Reset everything in case the user re opens the app
SDLActivity.initialize();
}
@Override
+21 -6
View File
@@ -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() {