diff --git a/project/java/MainActivity.java b/project/java/MainActivity.java index 2b06e3375..43b1bdd86 100644 --- a/project/java/MainActivity.java +++ b/project/java/MainActivity.java @@ -68,6 +68,7 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Handler; import android.os.Message; +import java.util.concurrent.Semaphore; public class MainActivity extends Activity { @Override @@ -145,7 +146,20 @@ public class MainActivity extends Activity { p.LoadLibraries(); p.mAudioThread = new AudioThread(p); System.out.println("libSDL: Loading settings"); - Settings.Load(p); + final Semaphore loaded = new Semaphore(0); + class Callback2 implements Runnable + { + public MainActivity Parent; + public void run() + { + Settings.Load(Parent); + loaded.release(); + } + } + Callback2 cb = new Callback2(); + cb.Parent = p; + p.runOnUiThread(cb); + loaded.acquireUninterruptibly(); if(!Globals.CompatibilityHacksStaticInit) p.LoadApplicationLibrary(p); } diff --git a/project/java/Settings.java b/project/java/Settings.java index 8d3583655..1c6c8411c 100644 --- a/project/java/Settings.java +++ b/project/java/Settings.java @@ -198,6 +198,15 @@ class Settings for( int i = 0; i < Globals.MultitouchGesturesUsed.length; i++ ) Globals.MultitouchGesturesUsed[i] = true; + System.out.println("android.os.Build.MODEL: " + android.os.Build.MODEL); + if( (android.os.Build.MODEL.equals("GT-N7000") || android.os.Build.MODEL.equals("SGH-I717")) + /* && android.os.Build.VERSION.SDK_INT <= android.os.Build.VERSION_CODES.GINGERBREAD_MR1 */ ) + { + // Samsung Galaxy Note generates a keypress when you hover a stylus over the screen, and that messes up OpenTTD dialogs + // And I don't know whether this is true for ICS update for Galaxy Note + Globals.RemapHwKeycode[112] = SDL_1_2_Keycodes.SDLK_UNKNOWN; + } + try { ObjectInputStream settingsFile = new ObjectInputStream(new FileInputStream( p.getFilesDir().getAbsolutePath() + "/" + SettingsFileName )); if( settingsFile.readInt() != SETTINGS_FILE_VERSION ) diff --git a/project/java/Video.java b/project/java/Video.java index a965458ce..8d467fcb2 100644 --- a/project/java/Video.java +++ b/project/java/Video.java @@ -635,7 +635,6 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL { @Override public boolean onKeyDown(int keyCode, final KeyEvent event) { //System.out.println("Got key down event, id " + keyCode); - if( nativeKey( keyCode, 1 ) == 0 ) return super.onKeyDown(keyCode, event); return true; diff --git a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c index bdfd10d38..d798d9919 100644 --- a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c +++ b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c @@ -792,7 +792,7 @@ JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeKey) ( JNIEnv* env, jobject thiz, jint return 1; } - if( TranslateKey(key) == SDLK_NO_REMAP ) + if( TranslateKey(key) == SDLK_NO_REMAP || TranslateKey(key) == SDLK_UNKNOWN ) return 0; SDL_ANDROID_MainThreadPushKeyboardKey( action ? SDL_PRESSED : SDL_RELEASED, TranslateKey(key) );