Android: Fix excessive getRotation calls
This commit is contained in:
parent
8ed125b429
commit
ee4e809d4c
@ -664,6 +664,8 @@ class Godot(private val context: Context) {
|
||||
* Configuration change callback
|
||||
*/
|
||||
fun onConfigurationChanged(newConfig: Configuration) {
|
||||
renderView?.inputHandler?.onConfigurationChanged(newConfig)
|
||||
|
||||
val newDarkMode = newConfig.uiMode.and(Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES
|
||||
if (darkMode != newDarkMode) {
|
||||
darkMode = newDarkMode
|
||||
|
@ -37,6 +37,7 @@ import org.godotengine.godot.GodotLib;
|
||||
import org.godotengine.godot.GodotRenderView;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.hardware.Sensor;
|
||||
import android.hardware.SensorEvent;
|
||||
import android.hardware.SensorEventListener;
|
||||
@ -86,6 +87,8 @@ public class GodotInputHandler implements InputManager.InputDeviceListener, Sens
|
||||
|
||||
private int rotaryInputAxis = ROTARY_INPUT_VERTICAL_AXIS;
|
||||
|
||||
private int cachedRotation = -1;
|
||||
|
||||
public GodotInputHandler(Context context, Godot godot) {
|
||||
this.godot = godot;
|
||||
mInputManager = (InputManager)context.getSystemService(Context.INPUT_SERVICE);
|
||||
@ -741,10 +744,14 @@ public class GodotInputHandler implements InputManager.InputDeviceListener, Sens
|
||||
return;
|
||||
}
|
||||
|
||||
if (cachedRotation == -1) {
|
||||
updateCachedRotation();
|
||||
}
|
||||
|
||||
float rotatedValue0 = 0f;
|
||||
float rotatedValue1 = 0f;
|
||||
float rotatedValue2 = 0f;
|
||||
switch (windowManager.getDefaultDisplay().getRotation()) {
|
||||
switch (cachedRotation) {
|
||||
case Surface.ROTATION_0:
|
||||
rotatedValue0 = values[0];
|
||||
rotatedValue1 = values[1];
|
||||
@ -776,4 +783,12 @@ public class GodotInputHandler implements InputManager.InputDeviceListener, Sens
|
||||
|
||||
@Override
|
||||
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
|
||||
|
||||
private void updateCachedRotation() {
|
||||
cachedRotation = windowManager.getDefaultDisplay().getRotation();
|
||||
}
|
||||
|
||||
public void onConfigurationChanged(Configuration newConfig) {
|
||||
updateCachedRotation();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user