mirror of https://github.com/encounter/SDL.git
Fixed bug 5052 - Interval between SDL_SENSORUPDATE events for gyroscopes is too high
Andrei Kortunov Hello. I try to implement an application for Android, which uses a new sensors API from 2.0.9 to control a camera rotation via built-in gyroscope, using the code from the test/testsensor.c as an example. Gyroscope input itself works well, but an interval between SDL_SENSORUPDATE events is about 200ms (the SENSOR_DELAY_NORMAL, I believe), when I need the interval about 20-40ms (the SENSOR_DELAY_GAME or SENSOR_DELAY_FASTEST).
This commit is contained in:
parent
68c7e80dc5
commit
2c02b7410c
|
@ -130,6 +130,7 @@ static int
|
||||||
SDL_ANDROID_SensorOpen(SDL_Sensor *sensor, int device_index)
|
SDL_ANDROID_SensorOpen(SDL_Sensor *sensor, int device_index)
|
||||||
{
|
{
|
||||||
struct sensor_hwdata *hwdata;
|
struct sensor_hwdata *hwdata;
|
||||||
|
int delay_us, min_delay_us;
|
||||||
|
|
||||||
hwdata = (struct sensor_hwdata *)SDL_calloc(1, sizeof(*hwdata));
|
hwdata = (struct sensor_hwdata *)SDL_calloc(1, sizeof(*hwdata));
|
||||||
if (hwdata == NULL) {
|
if (hwdata == NULL) {
|
||||||
|
@ -149,7 +150,14 @@ SDL_ANDROID_SensorOpen(SDL_Sensor *sensor, int device_index)
|
||||||
return SDL_SetError("Couldn't enable sensor");
|
return SDL_SetError("Couldn't enable sensor");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: What rate should we set for this sensor? 60 FPS? Let's try the default rate for now... */
|
/* Use 60 Hz update rate if possible */
|
||||||
|
/* FIXME: Maybe add a hint for this? */
|
||||||
|
delay_us = 1000000 / 60;
|
||||||
|
min_delay_us = ASensor_getMinDelay(hwdata->asensor);
|
||||||
|
if (delay_us < min_delay_us) {
|
||||||
|
delay_us = min_delay_us;
|
||||||
|
}
|
||||||
|
ASensorEventQueue_setEventRate(hwdata->eventqueue, hwdata->asensor, delay_us);
|
||||||
|
|
||||||
sensor->hwdata = hwdata;
|
sensor->hwdata = hwdata;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue