Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Fixes bug #1506, Changing orientation on the Android device throws of…
- Loading branch information
|
@@ -449,6 +449,9 @@ public void run() { |
|
|
// Sensors |
|
|
private static SensorManager mSensorManager; |
|
|
|
|
|
// Keep track of the surface size to normalize touch events |
|
|
private static float mWidth, mHeight; |
|
|
|
|
|
// Startup |
|
|
public SDLSurface(Context context) { |
|
|
super(context); |
|
@@ -460,7 +463,11 @@ public SDLSurface(Context context) { |
|
|
setOnKeyListener(this); |
|
|
setOnTouchListener(this); |
|
|
|
|
|
mSensorManager = (SensorManager)context.getSystemService("sensor"); |
|
|
mSensorManager = (SensorManager)context.getSystemService("sensor"); |
|
|
|
|
|
// Some arbitrary defaults to avoid a potential division by zero |
|
|
mWidth = 1.0f; |
|
|
mHeight = 1.0f; |
|
|
} |
|
|
|
|
|
// Called when we have a valid drawing surface |
|
@@ -529,6 +536,9 @@ public void surfaceChanged(SurfaceHolder holder, |
|
|
Log.v("SDL", "pixel format unknown " + format); |
|
|
break; |
|
|
} |
|
|
|
|
|
mWidth = (float) width; |
|
|
mHeight = (float) height; |
|
|
SDLActivity.onNativeResize(width, height, sdlFormat); |
|
|
Log.v("SDL", "Window size:" + width + "x"+height); |
|
|
|
|
@@ -568,17 +578,17 @@ public boolean onTouch(View v, MotionEvent event) { |
|
|
int pointerFingerId = event.getPointerId(actionPointerIndex); |
|
|
int action = (event.getAction() & MotionEvent.ACTION_MASK); /* API 8: event.getActionMasked(); */ |
|
|
|
|
|
float x = event.getX(actionPointerIndex); |
|
|
float y = event.getY(actionPointerIndex); |
|
|
float x = event.getX(actionPointerIndex) / mWidth; |
|
|
float y = event.getY(actionPointerIndex) / mHeight; |
|
|
float p = event.getPressure(actionPointerIndex); |
|
|
|
|
|
if (action == MotionEvent.ACTION_MOVE && pointerCount > 1) { |
|
|
// TODO send motion to every pointer if its position has |
|
|
// changed since prev event. |
|
|
for (int i = 0; i < pointerCount; i++) { |
|
|
pointerFingerId = event.getPointerId(i); |
|
|
x = event.getX(i); |
|
|
y = event.getY(i); |
|
|
x = event.getX(i) / mWidth; |
|
|
y = event.getY(i) / mHeight; |
|
|
p = event.getPressure(i); |
|
|
SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p); |
|
|
} |
|
|
|
@@ -55,10 +55,10 @@ void Android_OnTouch(int touch_device_id_in, int pointer_finger_id_in, int actio |
|
|
memset( &touch, 0, sizeof(touch) ); |
|
|
touch.id = touchDeviceId; |
|
|
touch.x_min = 0.0f; |
|
|
touch.x_max = (float)Android_ScreenWidth; |
|
|
touch.x_max = 1.0f; |
|
|
touch.native_xres = touch.x_max - touch.x_min; |
|
|
touch.y_min = 0.0f; |
|
|
touch.y_max = (float)Android_ScreenHeight; |
|
|
touch.y_max = 1.0f; |
|
|
touch.native_yres = touch.y_max - touch.y_min; |
|
|
touch.pressure_min = 0.0f; |
|
|
touch.pressure_max = 1.0f; |
|
|