Add a way to set the context when other activities are active so many SDL API functions still work.

This commit is contained in:
Sam Lantinga 2017-08-28 23:04:47 -07:00
parent 130138fa59
commit c684eb2cde

View file

@ -56,6 +56,7 @@ public class SDLActivity extends Activity {
public static boolean mSeparateMouseAndTouch;
// Main components
protected static Context mContext;
protected static SDLActivity mSingleton;
protected static SDLSurface mSurface;
protected static View mTextEdit;
@ -135,6 +136,7 @@ public class SDLActivity extends Activity {
public static void initialize() {
// The static nature of the singleton and Android quirkyness force us to initialize everything here
// Otherwise, when exiting the app and returning to it, these variables *keep* their pre exit values
mContext = null;
mSingleton = null;
mSurface = null;
mTextEdit = null;
@ -155,6 +157,9 @@ public class SDLActivity extends Activity {
}
// Setup
public static void setContext(Context context) {
mContext = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.v(TAG, "Device: " + android.os.Build.DEVICE);
@ -165,7 +170,7 @@ public class SDLActivity extends Activity {
SDLActivity.initialize();
// So we can call stuff from static callbacks
mSingleton = this;
mContext = mSingleton = this;
// Load shared libraries
String errorMsgBrokenLib = "";
@ -564,8 +569,9 @@ public class SDLActivity extends Activity {
*/
public static void setOrientation(int w, int h, boolean resizable, String hint)
{
if (mSingleton != null) {
mSingleton.setOrientationBis(w, h, resizable, hint);
return;
}
}
/**
@ -638,6 +644,9 @@ public class SDLActivity extends Activity {
* This method is called by SDL using JNI.
*/
public static boolean sendMessage(int command, int param) {
if (mSingleton == null) {
return false;
}
return mSingleton.sendCommand(command, Integer.valueOf(param));
}
@ -645,7 +654,7 @@ public class SDLActivity extends Activity {
* This method is called by SDL using JNI.
*/
public static Context getContext() {
return mSingleton;
return mContext;
}
static class ShowTextInputTask implements Runnable {
@ -716,6 +725,9 @@ public class SDLActivity extends Activity {
* This method is called by SDL using JNI.
*/
public static Surface getNativeSurface() {
if (SDLActivity.mSurface == null) {
return null;
}
return SDLActivity.mSurface.getNativeSurface();
}