21 #include "../SDL_internal.h"
31 #if !SDL_EVENTS_DISABLED
32 #include "../events/SDL_events_c.h"
36 #ifdef SDL_SENSOR_ANDROID
39 #ifdef SDL_SENSOR_COREMOTION
42 #if defined(SDL_SENSOR_DUMMY) || defined(SDL_SENSOR_DISABLED)
78 #if !SDL_EVENTS_DISABLED
99 int i, total_sensors = 0;
105 return total_sensors;
124 int i, num_sensors, total_sensors = 0;
126 if (device_index >= 0) {
129 if (device_index < num_sensors) {
131 *driver_index = device_index;
134 device_index -= num_sensors;
135 total_sensors += num_sensors;
139 SDL_SetError(
"There are %d sensors available", total_sensors);
149 SDL_SensorDriver *driver;
154 name = driver->GetDeviceName(device_index);
165 SDL_SensorDriver *driver;
170 type = driver->GetDeviceType(device_index);
180 SDL_SensorDriver *driver;
185 type = driver->GetDeviceNonPortableType(device_index);
195 SDL_SensorDriver *driver;
200 instance_id = driver->GetDeviceInstanceID(device_index);
217 SDL_SensorDriver *driver;
220 SDL_Sensor *sensorlist;
221 const char *sensorname =
NULL;
234 instance_id = driver->GetDeviceInstanceID(device_index);
236 if (instance_id == sensorlist->instance_id) {
242 sensorlist = sensorlist->next;
246 sensor = (SDL_Sensor *)
SDL_calloc(
sizeof(*sensor), 1);
247 if (sensor ==
NULL) {
252 sensor->driver = driver;
253 sensor->instance_id = instance_id;
254 sensor->type = driver->GetDeviceType(device_index);
255 sensor->non_portable_type = driver->GetDeviceNonPortableType(device_index);
257 if (driver->Open(sensor, device_index) < 0) {
263 sensorname = driver->GetDeviceName(device_index);
278 driver->Update(sensor);
292 for (sensor =
SDL_sensors; sensor; sensor = sensor->next) {
293 if (sensor->instance_id == instance_id) {
309 if (sensor ==
NULL) {
355 return sensor->non_portable_type;
368 return sensor->instance_id;
392 SDL_Sensor *sensorlist;
393 SDL_Sensor *sensorlistprev;
402 if (--sensor->ref_count > 0) {
412 sensor->driver->Close(sensor);
413 sensor->hwdata =
NULL;
416 sensorlistprev =
NULL;
418 if (sensor == sensorlist) {
419 if (sensorlistprev) {
421 sensorlistprev->next = sensorlist->next;
427 sensorlistprev = sensorlist;
428 sensorlist = sensorlist->next;
462 #if !SDL_EVENTS_DISABLED
488 #if !SDL_EVENTS_DISABLED
492 event.sensor.which = sensor->instance_id;
506 SDL_Sensor *sensor, *next;
525 for (sensor =
SDL_sensors; sensor; sensor = sensor->next) {
526 sensor->driver->Update(sensor);
534 for (sensor =
SDL_sensors; sensor; sensor = next) {
536 if (sensor->ref_count <= 0) {