Update SDL
This commit is contained in:
@@ -46,7 +46,7 @@ This product bundles pixman 0.32.8, which is available under an
|
|||||||
This product bundles libpng 1.6.12, which is available under a
|
This product bundles libpng 1.6.12, which is available under a
|
||||||
"zlib" (BSD-style) license. For details, see [project/lib/png/](project/lib).
|
"zlib" (BSD-style) license. For details, see [project/lib/png/](project/lib).
|
||||||
|
|
||||||
This product bundles SDL revision 24883e864f7e, which is available under a
|
This product bundles SDL revision b5cd5e1e4440, which is available under a
|
||||||
"zlib" (BSD-style) license. For details, see [project/lib/sdl/](project/lib).
|
"zlib" (BSD-style) license. For details, see [project/lib/sdl/](project/lib).
|
||||||
|
|
||||||
This product bundles tinyfiledialogs 2.9.3, which is available under a
|
This product bundles tinyfiledialogs 2.9.3, which is available under a
|
||||||
|
|||||||
Submodule project/lib/sdl updated: 8e337d7960...cf13fe849e
@@ -763,6 +763,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
public static native void onNativeResize();
|
public static native void onNativeResize();
|
||||||
public static native void onNativeKeyDown(int keycode);
|
public static native void onNativeKeyDown(int keycode);
|
||||||
public static native void onNativeKeyUp(int keycode);
|
public static native void onNativeKeyUp(int keycode);
|
||||||
|
public static native boolean onNativeSoftReturnKey();
|
||||||
public static native void onNativeKeyboardFocusLost();
|
public static native void onNativeKeyboardFocusLost();
|
||||||
public static native void onNativeMouse(int button, int action, float x, float y, boolean relative);
|
public static native void onNativeMouse(int button, int action, float x, float y, boolean relative);
|
||||||
public static native void onNativeTouch(int touchDevId, int pointerFingerId,
|
public static native void onNativeTouch(int touchDevId, int pointerFingerId,
|
||||||
@@ -846,6 +847,45 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called by SDL using JNI.
|
||||||
|
*/
|
||||||
|
public static void minimizeWindow() {
|
||||||
|
|
||||||
|
if (mSingleton == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Intent startMain = new Intent(Intent.ACTION_MAIN);
|
||||||
|
startMain.addCategory(Intent.CATEGORY_HOME);
|
||||||
|
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
mSingleton.startActivity(startMain);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called by SDL using JNI.
|
||||||
|
*/
|
||||||
|
public static boolean shouldMinimizeOnFocusLoss() {
|
||||||
|
/*
|
||||||
|
if (Build.VERSION.SDK_INT >= 24) {
|
||||||
|
if (mSingleton == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mSingleton.isInMultiWindowMode()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mSingleton.isInPictureInPictureMode()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
*/
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called by SDL using JNI.
|
* This method is called by SDL using JNI.
|
||||||
*/
|
*/
|
||||||
@@ -1030,6 +1070,14 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
this.y = y;
|
this.y = y;
|
||||||
this.w = w;
|
this.w = w;
|
||||||
this.h = h;
|
this.h = h;
|
||||||
|
|
||||||
|
/* Minimum size of 1 pixel, so it takes focus. */
|
||||||
|
if (this.w <= 0) {
|
||||||
|
this.w = 1;
|
||||||
|
}
|
||||||
|
if (this.h + HEIGHT_PADDING <= 0) {
|
||||||
|
this.h = 1 - HEIGHT_PADDING;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1692,6 +1740,8 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
|
|||||||
SDLActivity.nativeSetScreenResolution(width, height, nDeviceWidth, nDeviceHeight, sdlFormat, mDisplay.getRefreshRate());
|
SDLActivity.nativeSetScreenResolution(width, height, nDeviceWidth, nDeviceHeight, sdlFormat, mDisplay.getRefreshRate());
|
||||||
SDLActivity.onNativeResize();
|
SDLActivity.onNativeResize();
|
||||||
|
|
||||||
|
// Prevent a screen distortion glitch,
|
||||||
|
// for instance when the device is in Landscape and a Portrait App is resumed.
|
||||||
boolean skip = false;
|
boolean skip = false;
|
||||||
int requestedOrientation = SDLActivity.mSingleton.getRequestedOrientation();
|
int requestedOrientation = SDLActivity.mSingleton.getRequestedOrientation();
|
||||||
|
|
||||||
@@ -1721,6 +1771,16 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Don't skip in MultiWindow.
|
||||||
|
if (skip) {
|
||||||
|
if (Build.VERSION.SDK_INT >= 24) {
|
||||||
|
if (SDLActivity.mSingleton.isInMultiWindowMode()) {
|
||||||
|
Log.v("SDL", "Don't skip in Multi-Window");
|
||||||
|
skip = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (skip) {
|
if (skip) {
|
||||||
Log.v("SDL", "Skip .. Surface is not ready.");
|
Log.v("SDL", "Skip .. Surface is not ready.");
|
||||||
mIsSurfaceReady = false;
|
mIsSurfaceReady = false;
|
||||||
@@ -1740,6 +1800,10 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
|
|||||||
// Key events
|
// Key events
|
||||||
@Override
|
@Override
|
||||||
public boolean onKey(View v, int keyCode, KeyEvent event) {
|
public boolean onKey(View v, int keyCode, KeyEvent event) {
|
||||||
|
|
||||||
|
int deviceId = event.getDeviceId();
|
||||||
|
int source = event.getSource();
|
||||||
|
|
||||||
// Dispatch the different events depending on where they come from
|
// Dispatch the different events depending on where they come from
|
||||||
// Some SOURCE_JOYSTICK, SOURCE_DPAD or SOURCE_GAMEPAD are also SOURCE_KEYBOARD
|
// Some SOURCE_JOYSTICK, SOURCE_DPAD or SOURCE_GAMEPAD are also SOURCE_KEYBOARD
|
||||||
// So, we try to process them as JOYSTICK/DPAD/GAMEPAD events first, if that fails we try them as KEYBOARD
|
// So, we try to process them as JOYSTICK/DPAD/GAMEPAD events first, if that fails we try them as KEYBOARD
|
||||||
@@ -1747,20 +1811,25 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
|
|||||||
// Furthermore, it's possible a game controller has SOURCE_KEYBOARD and
|
// Furthermore, it's possible a game controller has SOURCE_KEYBOARD and
|
||||||
// SOURCE_JOYSTICK, while its key events arrive from the keyboard source
|
// SOURCE_JOYSTICK, while its key events arrive from the keyboard source
|
||||||
// So, retrieve the device itself and check all of its sources
|
// So, retrieve the device itself and check all of its sources
|
||||||
if (SDLControllerManager.isDeviceSDLJoystick(event.getDeviceId())) {
|
if (SDLControllerManager.isDeviceSDLJoystick(deviceId)) {
|
||||||
// Note that we process events with specific key codes here
|
// Note that we process events with specific key codes here
|
||||||
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||||
if (SDLControllerManager.onNativePadDown(event.getDeviceId(), keyCode) == 0) {
|
if (SDLControllerManager.onNativePadDown(deviceId, keyCode) == 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else if (event.getAction() == KeyEvent.ACTION_UP) {
|
} else if (event.getAction() == KeyEvent.ACTION_UP) {
|
||||||
if (SDLControllerManager.onNativePadUp(event.getDeviceId(), keyCode) == 0) {
|
if (SDLControllerManager.onNativePadUp(deviceId, keyCode) == 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((event.getSource() & InputDevice.SOURCE_KEYBOARD) != 0) {
|
if (source == InputDevice.SOURCE_UNKNOWN) {
|
||||||
|
InputDevice device = InputDevice.getDevice(deviceId);
|
||||||
|
source = device.getSources();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((source & InputDevice.SOURCE_KEYBOARD) != 0) {
|
||||||
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||||
//Log.v("SDL", "key down: " + keyCode);
|
//Log.v("SDL", "key down: " + keyCode);
|
||||||
if (SDLActivity.isTextInputEvent(event)) {
|
if (SDLActivity.isTextInputEvent(event)) {
|
||||||
@@ -1776,7 +1845,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((event.getSource() & InputDevice.SOURCE_MOUSE) != 0) {
|
if ((source & InputDevice.SOURCE_MOUSE) != 0) {
|
||||||
// on some devices key events are sent for mouse BUTTON_BACK/FORWARD presses
|
// on some devices key events are sent for mouse BUTTON_BACK/FORWARD presses
|
||||||
// they are ignored here because sending them as mouse input to SDL is messy
|
// they are ignored here because sending them as mouse input to SDL is messy
|
||||||
if ((keyCode == KeyEvent.KEYCODE_BACK) || (keyCode == KeyEvent.KEYCODE_FORWARD)) {
|
if ((keyCode == KeyEvent.KEYCODE_BACK) || (keyCode == KeyEvent.KEYCODE_FORWARD)) {
|
||||||
@@ -1882,10 +1951,6 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//try {
|
|
||||||
// Thread.sleep((Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) ? 16 : 1);
|
|
||||||
//} catch (InterruptedException e) {}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1928,8 +1993,8 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
|
|||||||
newOrientation = SDLActivity.SDL_ORIENTATION_LANDSCAPE_FLIPPED;
|
newOrientation = SDLActivity.SDL_ORIENTATION_LANDSCAPE_FLIPPED;
|
||||||
break;
|
break;
|
||||||
case Surface.ROTATION_180:
|
case Surface.ROTATION_180:
|
||||||
x = -event.values[1];
|
x = -event.values[0];
|
||||||
y = -event.values[0];
|
y = -event.values[1];
|
||||||
newOrientation = SDLActivity.SDL_ORIENTATION_PORTRAIT_FLIPPED;
|
newOrientation = SDLActivity.SDL_ORIENTATION_PORTRAIT_FLIPPED;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -2084,16 +2149,10 @@ class SDLInputConnection extends BaseInputConnection {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
|
if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
|
||||||
String imeHide = SDLActivity.nativeGetHint("SDL_RETURN_KEY_HIDES_IME");
|
if (SDLActivity.onNativeSoftReturnKey()) {
|
||||||
if ((imeHide != null) && imeHide.equals("1")) {
|
|
||||||
Context c = SDL.getContext();
|
|
||||||
if (c instanceof SDLActivity) {
|
|
||||||
SDLActivity activity = (SDLActivity)c;
|
|
||||||
activity.sendCommand(SDLActivity.COMMAND_TEXTEDIT_HIDE, null);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return super.sendKeyEvent(event);
|
return super.sendKeyEvent(event);
|
||||||
@@ -2104,6 +2163,11 @@ class SDLInputConnection extends BaseInputConnection {
|
|||||||
|
|
||||||
for (int i = 0; i < text.length(); i++) {
|
for (int i = 0; i < text.length(); i++) {
|
||||||
char c = text.charAt(i);
|
char c = text.charAt(i);
|
||||||
|
if (c == '\n') {
|
||||||
|
if (SDLActivity.onNativeSoftReturnKey()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
nativeGenerateScancodeForUnichar(c);
|
nativeGenerateScancodeForUnichar(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user