Revert "Separate android initialization from Activity (#11891)"

This reverts commit d14c93c4b1.

This is a major breaking change for activities that inherit SDLActivity
This commit is contained in:
Sam Lantinga
2025-01-10 15:27:08 -08:00
parent 61f13b94d1
commit 4231848791
16 changed files with 2161 additions and 2324 deletions

View File

@@ -1,15 +0,0 @@
package org.libsdl.app;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Marker annotation for {@link SDLActivityComponent} methods that correspond to
* events in {@link android.app.Activity}.
*/
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.METHOD)
public @interface ActivityHook {
}

View File

@@ -13,7 +13,7 @@ public class SDL {
// This function should be called first and sets up the native code
// so it can call into the Java classes
public static void setupJNI() {
SDLActivityComponent.nativeSetupJNI();
SDLActivity.nativeSetupJNI();
SDLAudioManager.nativeSetupJNI();
SDLControllerManager.nativeSetupJNI();
}
@@ -22,7 +22,7 @@ public class SDL {
public static void initialize() {
setContext(null);
SDLActivityComponent.initialize();
SDLActivity.initialize();
SDLAudioManager.initialize();
SDLControllerManager.initialize();
}

View File

@@ -1,5 +0,0 @@
package org.libsdl.app;
public interface SDLComponentReceiver {
void superOnBackPressed();
}

View File

@@ -10,6 +10,7 @@ import android.os.Build;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.os.VibratorManager;
import android.util.Log;
import android.view.InputDevice;
import android.view.KeyEvent;
import android.view.MotionEvent;
@@ -681,7 +682,7 @@ class SDLGenericMotionListener_API14 implements View.OnGenericMotionListener {
case MotionEvent.ACTION_SCROLL:
x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, i);
y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, i);
SDLActivityComponent.onNativeMouse(0, action, x, y, false);
SDLActivity.onNativeMouse(0, action, x, y, false);
consumed = true;
break;
@@ -689,7 +690,7 @@ class SDLGenericMotionListener_API14 implements View.OnGenericMotionListener {
x = getEventX(event, i);
y = getEventY(event, i);
SDLActivityComponent.onNativeMouse(0, action, x, y, checkRelativeEvent(event));
SDLActivity.onNativeMouse(0, action, x, y, checkRelativeEvent(event));
consumed = true;
break;
@@ -708,7 +709,7 @@ class SDLGenericMotionListener_API14 implements View.OnGenericMotionListener {
// BUTTON_STYLUS_PRIMARY is 2^5, so shift by 4
int buttons = event.getButtonState() >> 4;
SDLActivityComponent.onNativePen(event.getPointerId(i), buttons, action, x, y, p);
SDLActivity.onNativePen(event.getPointerId(i), buttons, action, x, y, p);
consumed = true;
break;
}
@@ -794,7 +795,7 @@ class SDLGenericMotionListener_API26 extends SDLGenericMotionListener_API24 {
@Override
public boolean supportsRelativeMouse() {
return (!SDLActivityComponent.isDeXMode() || Build.VERSION.SDK_INT >= 27 /* Android 8.1 (O_MR1) */);
return (!SDLActivity.isDeXMode() || Build.VERSION.SDK_INT >= 27 /* Android 8.1 (O_MR1) */);
}
@Override
@@ -804,11 +805,11 @@ class SDLGenericMotionListener_API26 extends SDLGenericMotionListener_API24 {
@Override
public boolean setRelativeMouseEnabled(boolean enabled) {
if (!SDLActivityComponent.isDeXMode() || Build.VERSION.SDK_INT >= 27 /* Android 8.1 (O_MR1) */) {
if (!SDLActivity.isDeXMode() || Build.VERSION.SDK_INT >= 27 /* Android 8.1 (O_MR1) */) {
if (enabled) {
SDLActivityComponent.getContentView().requestPointerCapture();
SDLActivity.getContentView().requestPointerCapture();
} else {
SDLActivityComponent.getContentView().releasePointerCapture();
SDLActivity.getContentView().releasePointerCapture();
}
mRelativeModeEnabled = enabled;
return true;
@@ -819,8 +820,8 @@ class SDLGenericMotionListener_API26 extends SDLGenericMotionListener_API24 {
@Override
public void reclaimRelativeMouseModeIfNeeded() {
if (mRelativeModeEnabled && !SDLActivityComponent.isDeXMode()) {
SDLActivityComponent.getContentView().requestPointerCapture();
if (mRelativeModeEnabled && !SDLActivity.isDeXMode()) {
SDLActivity.getContentView().requestPointerCapture();
}
}

View File

@@ -1,6 +1,7 @@
package org.libsdl.app;
import android.content.*;
import android.text.InputType;
import android.view.*;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
@@ -31,7 +32,7 @@ public class SDLDummyEdit extends View implements View.OnKeyListener
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
return SDLActivityComponent.handleKeyEvent(v, keyCode, event, ic);
return SDLActivity.handleKeyEvent(v, keyCode, event, ic);
}
//
@@ -44,8 +45,8 @@ public class SDLDummyEdit extends View implements View.OnKeyListener
// FIXME: And determine the keyboard presence doing this: http://stackoverflow.com/questions/2150078/how-to-check-visibility-of-software-keyboard-in-android
// FIXME: An even more effective way would be if Android provided this out of the box, but where would the fun be in that :)
if (event.getAction()==KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
if (SDLActivityComponent.mTextEdit != null && SDLActivityComponent.mTextEdit.getVisibility() == View.VISIBLE) {
SDLActivityComponent.onNativeKeyboardFocusLost();
if (SDLActivity.mTextEdit != null && SDLActivity.mTextEdit.getVisibility() == View.VISIBLE) {
SDLActivity.onNativeKeyboardFocusLost();
}
}
return super.onKeyPreIme(keyCode, event);

View File

@@ -1,5 +1,6 @@
package org.libsdl.app;
import android.content.*;
import android.os.Build;
import android.text.Editable;
import android.view.*;
@@ -36,7 +37,7 @@ public class SDLInputConnection extends BaseInputConnection
*/
if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
if (SDLActivityComponent.onNativeSoftReturnKey()) {
if (SDLActivity.onNativeSoftReturnKey()) {
return true;
}
}
@@ -113,7 +114,7 @@ public class SDLInputConnection extends BaseInputConnection
for (offset = 0; offset < pendingText.length(); ) {
int codePoint = pendingText.codePointAt(offset);
if (codePoint == '\n') {
if (SDLActivityComponent.onNativeSoftReturnKey()) {
if (SDLActivity.onNativeSoftReturnKey()) {
return;
}
}

View File

@@ -12,6 +12,7 @@ import android.os.Build;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
import android.view.InputDevice;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.Surface;
@@ -56,7 +57,7 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
mDisplay = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
setOnGenericMotionListener(SDLActivityComponent.getMotionListener());
setOnGenericMotionListener(SDLActivity.getMotionListener());
// Some arbitrary defaults to avoid a potential division by zero
mWidth = 1.0f;
@@ -87,7 +88,7 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
@Override
public void surfaceCreated(SurfaceHolder holder) {
Log.v("SDL", "surfaceCreated()");
SDLActivityComponent.onNativeSurfaceCreated();
SDLActivity.onNativeSurfaceCreated();
}
// Called when we lose the surface
@@ -96,11 +97,11 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
Log.v("SDL", "surfaceDestroyed()");
// Transition to pause, if needed
SDLActivityComponent.mNextNativeState = SDLActivityComponent.NativeState.PAUSED;
SDLActivityComponent.handleNativeState();
SDLActivity.mNextNativeState = SDLActivity.NativeState.PAUSED;
SDLActivity.handleNativeState();
mIsSurfaceReady = false;
SDLActivityComponent.onNativeSurfaceDestroyed();
SDLActivity.onNativeSurfaceDestroyed();
}
// Called when the surface is resized
@@ -109,7 +110,7 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
int format, int width, int height) {
Log.v("SDL", "surfaceChanged()");
if (SDLActivityComponent.mSingleton == null) {
if (SDLActivity.mSingleton == null) {
return;
}
@@ -131,20 +132,20 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
} catch(Exception ignored) {
}
synchronized(SDLActivityComponent.getContext()) {
synchronized(SDLActivity.getContext()) {
// In case we're waiting on a size change after going fullscreen, send a notification.
SDLActivityComponent.getContext().notifyAll();
SDLActivity.getContext().notifyAll();
}
Log.v("SDL", "Window size: " + width + "x" + height);
Log.v("SDL", "Device size: " + nDeviceWidth + "x" + nDeviceHeight);
SDLActivityComponent.nativeSetScreenResolution(width, height, nDeviceWidth, nDeviceHeight, density, mDisplay.getRefreshRate());
SDLActivityComponent.onNativeResize();
SDLActivity.nativeSetScreenResolution(width, height, nDeviceWidth, nDeviceHeight, density, mDisplay.getRefreshRate());
SDLActivity.onNativeResize();
// Prevent a screen distortion glitch,
// for instance when the device is in Landscape and a Portrait App is resumed.
boolean skip = false;
int requestedOrientation = SDLActivityComponent.mSingleton.mActivity.getRequestedOrientation();
int requestedOrientation = SDLActivity.mSingleton.getRequestedOrientation();
if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT || requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT) {
if (mWidth > mHeight) {
@@ -181,13 +182,13 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
}
/* If the surface has been previously destroyed by onNativeSurfaceDestroyed, recreate it here */
SDLActivityComponent.onNativeSurfaceChanged();
SDLActivity.onNativeSurfaceChanged();
/* Surface is ready */
mIsSurfaceReady = true;
SDLActivityComponent.mNextNativeState = SDLActivityComponent.NativeState.RESUMED;
SDLActivityComponent.handleNativeState();
SDLActivity.mNextNativeState = SDLActivity.NativeState.RESUMED;
SDLActivity.handleNativeState();
}
// Window inset
@@ -200,7 +201,7 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
WindowInsets.Type.tappableElement() |
WindowInsets.Type.displayCutout());
SDLActivityComponent.onNativeInsetsChanged(combined.left, combined.right, combined.top, combined.bottom);
SDLActivity.onNativeInsetsChanged(combined.left, combined.right, combined.top, combined.bottom);
}
// Pass these to any child views in case they need them
@@ -210,7 +211,7 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
// Key events
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
return SDLActivityComponent.handleKeyEvent(v, keyCode, event, null);
return SDLActivity.handleKeyEvent(v, keyCode, event, null);
}
private float getNormalizedX(float x)
@@ -254,12 +255,12 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
// We need to check if we're in relative mouse mode and get the axis offset rather than the x/y values
// if we are. We'll leverage our existing mouse motion listener
SDLGenericMotionListener_API14 motionListener = SDLActivityComponent.getMotionListener();
SDLGenericMotionListener_API14 motionListener = SDLActivity.getMotionListener();
x = motionListener.getEventX(event, i);
y = motionListener.getEventY(event, i);
relative = motionListener.inRelativeMode();
SDLActivityComponent.onNativeMouse(buttonState, action, x, y, relative);
SDLActivity.onNativeMouse(buttonState, action, x, y, relative);
} else if (toolType == MotionEvent.TOOL_TYPE_STYLUS || toolType == MotionEvent.TOOL_TYPE_ERASER) {
pointerId = event.getPointerId(i);
x = event.getX(i);
@@ -274,7 +275,7 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
// BUTTON_STYLUS_PRIMARY is 2^5, so shift by 4, and apply SDL_PEN_INPUT_DOWN/SDL_PEN_INPUT_ERASER_TIP
int buttonState = (event.getButtonState() >> 4) | (1 << (toolType == MotionEvent.TOOL_TYPE_STYLUS ? 0 : 30));
SDLActivityComponent.onNativePen(pointerId, buttonState, action, x, y, p);
SDLActivity.onNativePen(pointerId, buttonState, action, x, y, p);
} else if (toolType == MotionEvent.TOOL_TYPE_FINGER) {
pointerId = event.getPointerId(i);
x = getNormalizedX(event.getX(i));
@@ -286,7 +287,7 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
p = 1.0f;
}
SDLActivityComponent.onNativeTouch(touchDevId, pointerId, action, x, y, p);
SDLActivity.onNativeTouch(touchDevId, pointerId, action, x, y, p);
}
// Non-primary up/down
@@ -348,12 +349,12 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
break;
}
if (newRotation != SDLActivityComponent.mCurrentRotation) {
SDLActivityComponent.mCurrentRotation = newRotation;
SDLActivityComponent.onNativeRotationChanged(newRotation);
if (newRotation != SDLActivity.mCurrentRotation) {
SDLActivity.mCurrentRotation = newRotation;
SDLActivity.onNativeRotationChanged(newRotation);
}
SDLActivityComponent.onNativeAccel(-x / SensorManager.GRAVITY_EARTH,
SDLActivity.onNativeAccel(-x / SensorManager.GRAVITY_EARTH,
y / SensorManager.GRAVITY_EARTH,
event.values[2] / SensorManager.GRAVITY_EARTH);
@@ -373,14 +374,14 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
case MotionEvent.ACTION_SCROLL:
x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, i);
y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, i);
SDLActivityComponent.onNativeMouse(0, action, x, y, false);
SDLActivity.onNativeMouse(0, action, x, y, false);
return true;
case MotionEvent.ACTION_HOVER_MOVE:
case MotionEvent.ACTION_MOVE:
x = event.getX(i);
y = event.getY(i);
SDLActivityComponent.onNativeMouse(0, action, x, y, true);
SDLActivity.onNativeMouse(0, action, x, y, true);
return true;
case MotionEvent.ACTION_BUTTON_PRESS:
@@ -397,10 +398,10 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
y = event.getY(i);
int button = event.getButtonState();
SDLActivityComponent.onNativeMouse(button, action, x, y, true);
SDLActivity.onNativeMouse(button, action, x, y, true);
return true;
}
}
}
return false;
}