From 7635c27ff4b80f7a83f5cfcd174c483edf006d23 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 13 Jan 2011 18:03:56 -0800 Subject: [PATCH] Cleaned up internal accelerometer interface --- src/SDL_android.cpp | 10 ++++++++- src/SDL_android.h | 15 ++++++------- src/joystick/android/SDL_sysjoystick.c | 29 ++++++++++++++++---------- 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/src/SDL_android.cpp b/src/SDL_android.cpp index 32d6adfab..87d3ea451 100644 --- a/src/SDL_android.cpp +++ b/src/SDL_android.cpp @@ -57,7 +57,7 @@ static jmethodID midAudioWriteByteBuffer; static jmethodID midAudioQuit; // Accelerometer data storage -float fLastAccelerometer[3]; +static float fLastAccelerometer[3]; /******************************************************************************* @@ -184,6 +184,14 @@ extern "C" void Android_JNI_SetActivityTitle(const char *title) } } +extern "C" void Android_JNI_GetAccelerometerValues(float values[3]) +{ + int i; + for (i = 0; i < 3; ++i) { + values[i] = fLastAccelerometer[i]; + } +} + // // Audio support // diff --git a/src/SDL_android.h b/src/SDL_android.h index f5704612e..bc7a4ea27 100644 --- a/src/SDL_android.h +++ b/src/SDL_android.h @@ -29,15 +29,16 @@ extern "C" { #endif /* Interface from the SDL library into the Android Java activity */ -void Android_JNI_CreateContext(); -void Android_JNI_SwapWindow(); -void Android_JNI_SetActivityTitle(const char *title); +extern void Android_JNI_CreateContext(); +extern void Android_JNI_SwapWindow(); +extern void Android_JNI_SetActivityTitle(const char *title); +extern void Android_JNI_GetAccelerometerValues(float values[3]); // Audio support -int Android_JNI_OpenAudioDevice(int sampleRate, int is16Bit, int channelCount, int desiredBufferFrames); -void* Android_JNI_GetAudioBuffer(); -void Android_JNI_WriteAudioBuffer(); -void Android_JNI_CloseAudioDevice(); +extern int Android_JNI_OpenAudioDevice(int sampleRate, int is16Bit, int channelCount, int desiredBufferFrames); +extern void* Android_JNI_GetAudioBuffer(); +extern void Android_JNI_WriteAudioBuffer(); +extern void Android_JNI_CloseAudioDevice(); /* Ends C function definitions when using C++ */ #ifdef __cplusplus diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 9088cc4bf..58d346243 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -32,10 +32,9 @@ #include "SDL_joystick.h" #include "../SDL_sysjoystick.h" #include "../SDL_joystick_c.h" +#include "../../SDL_android.h" -extern float fLastAccelerometer[3]; - -const char *accelerometerName = "Android accelerometer"; +static const char *accelerometerName = "Android accelerometer"; /* Function to scan the system for joysticks. * This function should set SDL_numjoysticks to the number of available @@ -47,17 +46,19 @@ SDL_SYS_JoystickInit(void) { SDL_numjoysticks = 1; -return (1); + return (1); } /* Function to get the device-dependent name of a joystick */ const char * SDL_SYS_JoystickName(int index) { - if (!index) + if (index == 0) { return accelerometerName; - SDL_SetError("No joystick available with that index"); - return (NULL); + } else { + SDL_SetError("No joystick available with that index"); + return (NULL); + } } /* Function to open a joystick for use. @@ -82,12 +83,16 @@ SDL_SYS_JoystickOpen(SDL_Joystick * joystick) * but instead should call SDL_PrivateJoystick*() to deliver events * and update joystick device state. */ - void +void SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) { - int i=0; - for(i=0;i<3;i++){ - SDL_PrivateJoystickAxis(joystick, i, fLastAccelerometer[i]); + int i; + float values[3]; + + Android_JNI_GetAccelerometerValues(values); + + for ( i = 0; i < 3; i++ ) { + SDL_PrivateJoystickAxis(joystick, i, values[i]); } } @@ -104,3 +109,5 @@ SDL_SYS_JoystickQuit(void) } #endif /* SDL_JOYSTICK_NDS */ + +/* vi: set ts=4 sw=4 expandtab: */