Android: be sure shared libraries are loaded in onConfigurationChanged()

This could fix a rare crash if:
- onConfigurationChanged is called before onCreate();
or
 shared libraries failed to load and onConfigurationChanged() is called
This commit is contained in:
Sylvain Becker 2020-09-25 10:42:07 +02:00
parent 955f3184f9
commit 7ad71563ce
1 changed files with 6 additions and 2 deletions

View File

@ -71,7 +71,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
public static NativeState mCurrentNativeState;
/** If shared libraries (e.g. SDL or the native application) could not be loaded. */
public static boolean mBrokenLibraries;
public static boolean mBrokenLibraries = true;
// Main components
protected static SDLActivity mSingleton;
@ -174,7 +174,6 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
mCursors = new Hashtable<Integer, PointerIcon>();
mLastCursorID = 0;
mSDLThread = null;
mBrokenLibraries = false;
mIsResumedCalled = false;
mHasFocus = true;
mNextNativeState = NativeState.INIT;
@ -199,6 +198,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
String errorMsgBrokenLib = "";
try {
loadLibraries();
mBrokenLibraries = false; /* success */
} catch(UnsatisfiedLinkError e) {
System.err.println(e.getMessage());
mBrokenLibraries = true;
@ -420,6 +420,10 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
Log.v(TAG, "onConfigurationChanged()");
super.onConfigurationChanged(newConfig);
if (SDLActivity.mBrokenLibraries) {
return;
}
if (mCurrentLocale == null || !mCurrentLocale.equals(newConfig.locale)) {
mCurrentLocale = newConfig.locale;
SDLActivity.onNativeLocaleChanged();