mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-03-21 13:21:02 +00:00
Updates the SDL library to the latest standard bugfix release
This commit is contained in:
parent
cb766f2878
commit
083d2175ea
1280 changed files with 343926 additions and 179615 deletions
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -41,42 +41,37 @@ static SDL_SensorDriver *SDL_sensor_drivers[] = {
|
|||
#ifdef SDL_SENSOR_WINDOWS
|
||||
&SDL_WINDOWS_SensorDriver,
|
||||
#endif
|
||||
#ifdef SDL_SENSOR_VITA
|
||||
&SDL_VITA_SensorDriver,
|
||||
#endif
|
||||
#ifdef SDL_SENSOR_N3DS
|
||||
&SDL_N3DS_SensorDriver,
|
||||
#endif
|
||||
#if defined(SDL_SENSOR_DUMMY) || defined(SDL_SENSOR_DISABLED)
|
||||
&SDL_DUMMY_SensorDriver
|
||||
#endif
|
||||
#if defined(SDL_SENSOR_VITA)
|
||||
&SDL_VITA_SensorDriver
|
||||
#endif
|
||||
};
|
||||
static SDL_Sensor *SDL_sensors = NULL;
|
||||
static SDL_bool SDL_updating_sensor = SDL_FALSE;
|
||||
static SDL_mutex *SDL_sensor_lock = NULL; /* This needs to support recursive locks */
|
||||
static SDL_atomic_t SDL_next_sensor_instance_id;
|
||||
static SDL_Sensor *SDL_sensors SDL_GUARDED_BY(SDL_sensor_lock) = NULL;
|
||||
static SDL_atomic_t SDL_next_sensor_instance_id SDL_GUARDED_BY(SDL_sensor_lock);
|
||||
static SDL_bool SDL_updating_sensor SDL_GUARDED_BY(SDL_sensor_lock) = SDL_FALSE;
|
||||
|
||||
void
|
||||
SDL_LockSensors(void)
|
||||
void SDL_LockSensors(void) SDL_ACQUIRE(SDL_sensor_lock)
|
||||
{
|
||||
if (SDL_sensor_lock) {
|
||||
SDL_LockMutex(SDL_sensor_lock);
|
||||
}
|
||||
SDL_LockMutex(SDL_sensor_lock);
|
||||
}
|
||||
|
||||
void
|
||||
SDL_UnlockSensors(void)
|
||||
void SDL_UnlockSensors(void) SDL_RELEASE(SDL_sensor_lock)
|
||||
{
|
||||
if (SDL_sensor_lock) {
|
||||
SDL_UnlockMutex(SDL_sensor_lock);
|
||||
}
|
||||
SDL_UnlockMutex(SDL_sensor_lock);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
SDL_SensorInit(void)
|
||||
int SDL_SensorInit(void)
|
||||
{
|
||||
int i, status;
|
||||
|
||||
/* Create the sensor list lock */
|
||||
if (!SDL_sensor_lock) {
|
||||
if (SDL_sensor_lock == NULL) {
|
||||
SDL_sensor_lock = SDL_CreateMutex();
|
||||
}
|
||||
|
||||
|
|
@ -98,8 +93,7 @@ SDL_SensorInit(void)
|
|||
/*
|
||||
* Count the number of sensors attached to the system
|
||||
*/
|
||||
int
|
||||
SDL_NumSensors(void)
|
||||
int SDL_NumSensors(void)
|
||||
{
|
||||
int i, total_sensors = 0;
|
||||
SDL_LockSensors();
|
||||
|
|
@ -123,8 +117,7 @@ SDL_SensorID SDL_GetNextSensorInstanceID()
|
|||
* Get the driver and device index for an API device index
|
||||
* This should be called while the sensor lock is held, to prevent another thread from updating the list
|
||||
*/
|
||||
static SDL_bool
|
||||
SDL_GetDriverAndSensorIndex(int device_index, SDL_SensorDriver **driver, int *driver_index)
|
||||
static SDL_bool SDL_GetDriverAndSensorIndex(int device_index, SDL_SensorDriver **driver, int *driver_index)
|
||||
{
|
||||
int i, num_sensors, total_sensors = 0;
|
||||
|
||||
|
|
@ -148,8 +141,7 @@ SDL_GetDriverAndSensorIndex(int device_index, SDL_SensorDriver **driver, int *dr
|
|||
/*
|
||||
* Get the implementation dependent name of a sensor
|
||||
*/
|
||||
const char *
|
||||
SDL_SensorGetDeviceName(int device_index)
|
||||
const char *SDL_SensorGetDeviceName(int device_index)
|
||||
{
|
||||
SDL_SensorDriver *driver;
|
||||
const char *name = NULL;
|
||||
|
|
@ -164,8 +156,7 @@ SDL_SensorGetDeviceName(int device_index)
|
|||
return name;
|
||||
}
|
||||
|
||||
SDL_SensorType
|
||||
SDL_SensorGetDeviceType(int device_index)
|
||||
SDL_SensorType SDL_SensorGetDeviceType(int device_index)
|
||||
{
|
||||
SDL_SensorDriver *driver;
|
||||
SDL_SensorType type = SDL_SENSOR_INVALID;
|
||||
|
|
@ -179,8 +170,7 @@ SDL_SensorGetDeviceType(int device_index)
|
|||
return type;
|
||||
}
|
||||
|
||||
int
|
||||
SDL_SensorGetDeviceNonPortableType(int device_index)
|
||||
int SDL_SensorGetDeviceNonPortableType(int device_index)
|
||||
{
|
||||
SDL_SensorDriver *driver;
|
||||
int type = -1;
|
||||
|
|
@ -194,8 +184,7 @@ SDL_SensorGetDeviceNonPortableType(int device_index)
|
|||
return type;
|
||||
}
|
||||
|
||||
SDL_SensorID
|
||||
SDL_SensorGetDeviceInstanceID(int device_index)
|
||||
SDL_SensorID SDL_SensorGetDeviceInstanceID(int device_index)
|
||||
{
|
||||
SDL_SensorDriver *driver;
|
||||
SDL_SensorID instance_id = -1;
|
||||
|
|
@ -216,8 +205,7 @@ SDL_SensorGetDeviceInstanceID(int device_index)
|
|||
*
|
||||
* This function returns a sensor identifier, or NULL if an error occurred.
|
||||
*/
|
||||
SDL_Sensor *
|
||||
SDL_SensorOpen(int device_index)
|
||||
SDL_Sensor *SDL_SensorOpen(int device_index)
|
||||
{
|
||||
SDL_SensorDriver *driver;
|
||||
SDL_SensorID instance_id;
|
||||
|
|
@ -239,16 +227,16 @@ SDL_SensorOpen(int device_index)
|
|||
instance_id = driver->GetDeviceInstanceID(device_index);
|
||||
while (sensorlist) {
|
||||
if (instance_id == sensorlist->instance_id) {
|
||||
sensor = sensorlist;
|
||||
++sensor->ref_count;
|
||||
SDL_UnlockSensors();
|
||||
return sensor;
|
||||
sensor = sensorlist;
|
||||
++sensor->ref_count;
|
||||
SDL_UnlockSensors();
|
||||
return sensor;
|
||||
}
|
||||
sensorlist = sensorlist->next;
|
||||
}
|
||||
|
||||
/* Create and initialize the sensor */
|
||||
sensor = (SDL_Sensor *) SDL_calloc(sizeof(*sensor), 1);
|
||||
sensor = (SDL_Sensor *)SDL_calloc(sizeof(*sensor), 1);
|
||||
if (sensor == NULL) {
|
||||
SDL_OutOfMemory();
|
||||
SDL_UnlockSensors();
|
||||
|
|
@ -288,8 +276,7 @@ SDL_SensorOpen(int device_index)
|
|||
/*
|
||||
* Find the SDL_Sensor that owns this instance id
|
||||
*/
|
||||
SDL_Sensor *
|
||||
SDL_SensorFromInstanceID(SDL_SensorID instance_id)
|
||||
SDL_Sensor *SDL_SensorFromInstanceID(SDL_SensorID instance_id)
|
||||
{
|
||||
SDL_Sensor *sensor;
|
||||
|
||||
|
|
@ -306,8 +293,7 @@ SDL_SensorFromInstanceID(SDL_SensorID instance_id)
|
|||
/*
|
||||
* Checks to make sure the sensor is valid.
|
||||
*/
|
||||
static int
|
||||
SDL_PrivateSensorValid(SDL_Sensor * sensor)
|
||||
static int SDL_PrivateSensorValid(SDL_Sensor *sensor)
|
||||
{
|
||||
int valid;
|
||||
|
||||
|
|
@ -324,8 +310,7 @@ SDL_PrivateSensorValid(SDL_Sensor * sensor)
|
|||
/*
|
||||
* Get the friendly name of this sensor
|
||||
*/
|
||||
const char *
|
||||
SDL_SensorGetName(SDL_Sensor * sensor)
|
||||
const char *SDL_SensorGetName(SDL_Sensor *sensor)
|
||||
{
|
||||
if (!SDL_PrivateSensorValid(sensor)) {
|
||||
return NULL;
|
||||
|
|
@ -337,8 +322,7 @@ SDL_SensorGetName(SDL_Sensor * sensor)
|
|||
/*
|
||||
* Get the type of this sensor
|
||||
*/
|
||||
SDL_SensorType
|
||||
SDL_SensorGetType(SDL_Sensor * sensor)
|
||||
SDL_SensorType SDL_SensorGetType(SDL_Sensor *sensor)
|
||||
{
|
||||
if (!SDL_PrivateSensorValid(sensor)) {
|
||||
return SDL_SENSOR_INVALID;
|
||||
|
|
@ -350,8 +334,7 @@ SDL_SensorGetType(SDL_Sensor * sensor)
|
|||
/*
|
||||
* Get the platform dependent type of this sensor
|
||||
*/
|
||||
int
|
||||
SDL_SensorGetNonPortableType(SDL_Sensor * sensor)
|
||||
int SDL_SensorGetNonPortableType(SDL_Sensor *sensor)
|
||||
{
|
||||
if (!SDL_PrivateSensorValid(sensor)) {
|
||||
return -1;
|
||||
|
|
@ -363,8 +346,7 @@ SDL_SensorGetNonPortableType(SDL_Sensor * sensor)
|
|||
/*
|
||||
* Get the instance id for this opened sensor
|
||||
*/
|
||||
SDL_SensorID
|
||||
SDL_SensorGetInstanceID(SDL_Sensor * sensor)
|
||||
SDL_SensorID SDL_SensorGetInstanceID(SDL_Sensor *sensor)
|
||||
{
|
||||
if (!SDL_PrivateSensorValid(sensor)) {
|
||||
return -1;
|
||||
|
|
@ -376,23 +358,32 @@ SDL_SensorGetInstanceID(SDL_Sensor * sensor)
|
|||
/*
|
||||
* Get the current state of this sensor
|
||||
*/
|
||||
int
|
||||
SDL_SensorGetData(SDL_Sensor * sensor, float *data, int num_values)
|
||||
int SDL_SensorGetData(SDL_Sensor *sensor, float *data, int num_values)
|
||||
{
|
||||
return SDL_SensorGetDataWithTimestamp(sensor, NULL, data, num_values);
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the current state of this sensor
|
||||
*/
|
||||
int SDL_SensorGetDataWithTimestamp(SDL_Sensor *sensor, Uint64 *timestamp, float *data, int num_values)
|
||||
{
|
||||
if (!SDL_PrivateSensorValid(sensor)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
num_values = SDL_min(num_values, SDL_arraysize(sensor->data));
|
||||
SDL_memcpy(data, sensor->data, num_values*sizeof(*data));
|
||||
SDL_memcpy(data, sensor->data, num_values * sizeof(*data));
|
||||
if (timestamp) {
|
||||
*timestamp = sensor->timestamp_us;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Close a sensor previously opened with SDL_SensorOpen()
|
||||
*/
|
||||
void
|
||||
SDL_SensorClose(SDL_Sensor * sensor)
|
||||
void SDL_SensorClose(SDL_Sensor *sensor)
|
||||
{
|
||||
SDL_Sensor *sensorlist;
|
||||
SDL_Sensor *sensorlistprev;
|
||||
|
|
@ -441,16 +432,15 @@ SDL_SensorClose(SDL_Sensor * sensor)
|
|||
SDL_UnlockSensors();
|
||||
}
|
||||
|
||||
void
|
||||
SDL_SensorQuit(void)
|
||||
void SDL_SensorQuit(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
SDL_LockSensors();
|
||||
|
||||
/* Make sure we're not getting called in the middle of updating sensors */
|
||||
SDL_assert(!SDL_updating_sensor);
|
||||
|
||||
SDL_LockSensors();
|
||||
|
||||
/* Stop the event polling */
|
||||
while (SDL_sensors) {
|
||||
SDL_sensors->ref_count = 1;
|
||||
|
|
@ -459,7 +449,7 @@ SDL_SensorQuit(void)
|
|||
|
||||
/* Quit the sensor setup */
|
||||
for (i = 0; i < SDL_arraysize(SDL_sensor_drivers); ++i) {
|
||||
SDL_sensor_drivers[i]->Quit();
|
||||
SDL_sensor_drivers[i]->Quit();
|
||||
}
|
||||
|
||||
SDL_UnlockSensors();
|
||||
|
|
@ -474,11 +464,9 @@ SDL_SensorQuit(void)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/* These are global for SDL_syssensor.c and SDL_events.c */
|
||||
|
||||
int
|
||||
SDL_PrivateSensorUpdate(SDL_Sensor *sensor, float *data, int num_values)
|
||||
int SDL_PrivateSensorUpdate(SDL_Sensor *sensor, Uint64 timestamp_us, float *data, int num_values)
|
||||
{
|
||||
int posted;
|
||||
|
||||
|
|
@ -486,7 +474,8 @@ SDL_PrivateSensorUpdate(SDL_Sensor *sensor, float *data, int num_values)
|
|||
|
||||
/* Update internal sensor state */
|
||||
num_values = SDL_min(num_values, SDL_arraysize(sensor->data));
|
||||
SDL_memcpy(sensor->data, data, num_values*sizeof(*data));
|
||||
SDL_memcpy(sensor->data, data, num_values * sizeof(*data));
|
||||
sensor->timestamp_us = timestamp_us;
|
||||
|
||||
/* Post the event, if desired */
|
||||
posted = 0;
|
||||
|
|
@ -497,15 +486,15 @@ SDL_PrivateSensorUpdate(SDL_Sensor *sensor, float *data, int num_values)
|
|||
event.sensor.which = sensor->instance_id;
|
||||
num_values = SDL_min(num_values, SDL_arraysize(event.sensor.data));
|
||||
SDL_memset(event.sensor.data, 0, sizeof(event.sensor.data));
|
||||
SDL_memcpy(event.sensor.data, data, num_values*sizeof(*data));
|
||||
SDL_memcpy(event.sensor.data, data, num_values * sizeof(*data));
|
||||
event.sensor.timestamp_us = timestamp_us;
|
||||
posted = SDL_PushEvent(&event) == 1;
|
||||
}
|
||||
#endif /* !SDL_EVENTS_DISABLED */
|
||||
return posted;
|
||||
}
|
||||
|
||||
void
|
||||
SDL_SensorUpdate(void)
|
||||
void SDL_SensorUpdate(void)
|
||||
{
|
||||
int i;
|
||||
SDL_Sensor *sensor, *next;
|
||||
|
|
@ -524,15 +513,10 @@ SDL_SensorUpdate(void)
|
|||
|
||||
SDL_updating_sensor = SDL_TRUE;
|
||||
|
||||
/* Make sure the list is unlocked while dispatching events to prevent application deadlocks */
|
||||
SDL_UnlockSensors();
|
||||
|
||||
for (sensor = SDL_sensors; sensor; sensor = sensor->next) {
|
||||
sensor->driver->Update(sensor);
|
||||
}
|
||||
|
||||
SDL_LockSensors();
|
||||
|
||||
SDL_updating_sensor = SDL_FALSE;
|
||||
|
||||
/* If any sensors were closed while updating, free them here */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -37,7 +37,7 @@ extern int SDL_SensorInit(void);
|
|||
extern void SDL_SensorQuit(void);
|
||||
|
||||
/* Internal event queueing functions */
|
||||
extern int SDL_PrivateSensorUpdate(SDL_Sensor *sensor, float *data, int num_values);
|
||||
extern int SDL_PrivateSensorUpdate(SDL_Sensor *sensor, Uint64 timestamp_us, float *data, int num_values);
|
||||
|
||||
#endif /* SDL_sensor_c_h_ */
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -32,20 +32,21 @@
|
|||
/* The SDL sensor structure */
|
||||
struct _SDL_Sensor
|
||||
{
|
||||
SDL_SensorID instance_id; /* Device instance, monotonically increasing from 0 */
|
||||
char *name; /* Sensor name - system dependent */
|
||||
SDL_SensorType type; /* Type of the sensor */
|
||||
int non_portable_type; /* Platform dependent type of the sensor */
|
||||
SDL_SensorID instance_id; /* Device instance, monotonically increasing from 0 */
|
||||
char *name; /* Sensor name - system dependent */
|
||||
SDL_SensorType type; /* Type of the sensor */
|
||||
int non_portable_type; /* Platform dependent type of the sensor */
|
||||
|
||||
float data[16]; /* The current state of the sensor */
|
||||
Uint64 timestamp_us; /* The timestamp of the last sensor update */
|
||||
float data[16]; /* The current state of the sensor */
|
||||
|
||||
struct _SDL_SensorDriver *driver;
|
||||
|
||||
struct sensor_hwdata *hwdata; /* Driver dependent information */
|
||||
struct sensor_hwdata *hwdata; /* Driver dependent information */
|
||||
|
||||
int ref_count; /* Reference count for multiple opens */
|
||||
int ref_count; /* Reference count for multiple opens */
|
||||
|
||||
struct _SDL_Sensor *next; /* pointer to next sensor we have allocated */
|
||||
struct _SDL_Sensor *next; /* pointer to next sensor we have allocated */
|
||||
};
|
||||
|
||||
typedef struct _SDL_SensorDriver
|
||||
|
|
@ -78,17 +79,17 @@ typedef struct _SDL_SensorDriver
|
|||
The sensor to open is specified by the device index.
|
||||
It returns 0, or -1 if there is an error.
|
||||
*/
|
||||
int (*Open)(SDL_Sensor * sensor, int device_index);
|
||||
int (*Open)(SDL_Sensor *sensor, int device_index);
|
||||
|
||||
/* Function to update the state of a sensor - called as a device poll.
|
||||
* This function shouldn't update the sensor structure directly,
|
||||
* but instead should call SDL_PrivateSensorUpdate() to deliver events
|
||||
* and update sensor device state.
|
||||
*/
|
||||
void (*Update)(SDL_Sensor * sensor);
|
||||
void (*Update)(SDL_Sensor *sensor);
|
||||
|
||||
/* Function to close a sensor after use */
|
||||
void (*Close)(SDL_Sensor * sensor);
|
||||
void (*Close)(SDL_Sensor *sensor);
|
||||
|
||||
/* Function to perform any system-specific sensor related cleanup */
|
||||
void (*Quit)(void);
|
||||
|
|
@ -101,6 +102,7 @@ extern SDL_SensorDriver SDL_COREMOTION_SensorDriver;
|
|||
extern SDL_SensorDriver SDL_WINDOWS_SensorDriver;
|
||||
extern SDL_SensorDriver SDL_DUMMY_SensorDriver;
|
||||
extern SDL_SensorDriver SDL_VITA_SensorDriver;
|
||||
extern SDL_SensorDriver SDL_N3DS_SensorDriver;
|
||||
|
||||
#endif /* SDL_syssensor_h_ */
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -32,10 +32,9 @@
|
|||
#include "SDL_androidsensor.h"
|
||||
#include "../SDL_syssensor.h"
|
||||
#include "../SDL_sensor_c.h"
|
||||
//#include "../../core/android/SDL_android.h"
|
||||
|
||||
#ifndef LOOPER_ID_USER
|
||||
#define LOOPER_ID_USER 3
|
||||
#define LOOPER_ID_USER 3
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
|
|
@ -44,26 +43,25 @@ typedef struct
|
|||
SDL_SensorID instance_id;
|
||||
} SDL_AndroidSensor;
|
||||
|
||||
static ASensorManager* SDL_sensor_manager;
|
||||
static ALooper* SDL_sensor_looper;
|
||||
static ASensorManager *SDL_sensor_manager;
|
||||
static ALooper *SDL_sensor_looper;
|
||||
static SDL_AndroidSensor *SDL_sensors;
|
||||
static int SDL_sensors_count;
|
||||
|
||||
static int
|
||||
SDL_ANDROID_SensorInit(void)
|
||||
static int SDL_ANDROID_SensorInit(void)
|
||||
{
|
||||
int i, sensors_count;
|
||||
ASensorList sensors;
|
||||
|
||||
SDL_sensor_manager = ASensorManager_getInstance();
|
||||
if (!SDL_sensor_manager) {
|
||||
if (SDL_sensor_manager == NULL) {
|
||||
return SDL_SetError("Couldn't create sensor manager");
|
||||
}
|
||||
|
||||
SDL_sensor_looper = ALooper_forThread();
|
||||
if (!SDL_sensor_looper) {
|
||||
if (SDL_sensor_looper == NULL) {
|
||||
SDL_sensor_looper = ALooper_prepare(ALOOPER_PREPARE_ALLOW_NON_CALLBACKS);
|
||||
if (!SDL_sensor_looper) {
|
||||
if (SDL_sensor_looper == NULL) {
|
||||
return SDL_SetError("Couldn't create sensor event loop");
|
||||
}
|
||||
}
|
||||
|
|
@ -72,7 +70,7 @@ SDL_ANDROID_SensorInit(void)
|
|||
sensors_count = ASensorManager_getSensorList(SDL_sensor_manager, &sensors);
|
||||
if (sensors_count > 0) {
|
||||
SDL_sensors = (SDL_AndroidSensor *)SDL_calloc(sensors_count, sizeof(*SDL_sensors));
|
||||
if (!SDL_sensors) {
|
||||
if (SDL_sensors == NULL) {
|
||||
return SDL_OutOfMemory();
|
||||
}
|
||||
|
||||
|
|
@ -85,25 +83,21 @@ SDL_ANDROID_SensorInit(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_ANDROID_SensorGetCount(void)
|
||||
static int SDL_ANDROID_SensorGetCount(void)
|
||||
{
|
||||
return SDL_sensors_count;
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_ANDROID_SensorDetect(void)
|
||||
static void SDL_ANDROID_SensorDetect(void)
|
||||
{
|
||||
}
|
||||
|
||||
static const char *
|
||||
SDL_ANDROID_SensorGetDeviceName(int device_index)
|
||||
static const char *SDL_ANDROID_SensorGetDeviceName(int device_index)
|
||||
{
|
||||
return ASensor_getName(SDL_sensors[device_index].asensor);
|
||||
}
|
||||
|
||||
static SDL_SensorType
|
||||
SDL_ANDROID_SensorGetDeviceType(int device_index)
|
||||
static SDL_SensorType SDL_ANDROID_SensorGetDeviceType(int device_index)
|
||||
{
|
||||
switch (ASensor_getType(SDL_sensors[device_index].asensor)) {
|
||||
case 0x00000001:
|
||||
|
|
@ -115,20 +109,17 @@ SDL_ANDROID_SensorGetDeviceType(int device_index)
|
|||
}
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_ANDROID_SensorGetDeviceNonPortableType(int device_index)
|
||||
static int SDL_ANDROID_SensorGetDeviceNonPortableType(int device_index)
|
||||
{
|
||||
return ASensor_getType(SDL_sensors[device_index].asensor);
|
||||
}
|
||||
|
||||
static SDL_SensorID
|
||||
SDL_ANDROID_SensorGetDeviceInstanceID(int device_index)
|
||||
static SDL_SensorID SDL_ANDROID_SensorGetDeviceInstanceID(int device_index)
|
||||
{
|
||||
return SDL_sensors[device_index].instance_id;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_ANDROID_SensorOpen(SDL_Sensor *sensor, int device_index)
|
||||
static int SDL_ANDROID_SensorOpen(SDL_Sensor *sensor, int device_index)
|
||||
{
|
||||
struct sensor_hwdata *hwdata;
|
||||
int delay_us, min_delay_us;
|
||||
|
|
@ -163,24 +154,22 @@ SDL_ANDROID_SensorOpen(SDL_Sensor *sensor, int device_index)
|
|||
sensor->hwdata = hwdata;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_ANDROID_SensorUpdate(SDL_Sensor *sensor)
|
||||
|
||||
static void SDL_ANDROID_SensorUpdate(SDL_Sensor *sensor)
|
||||
{
|
||||
int events;
|
||||
ASensorEvent event;
|
||||
struct android_poll_source* source;
|
||||
struct android_poll_source *source;
|
||||
|
||||
if (ALooper_pollAll(0, NULL, &events, (void**)&source) == LOOPER_ID_USER) {
|
||||
if (ALooper_pollAll(0, NULL, &events, (void **)&source) == LOOPER_ID_USER) {
|
||||
SDL_zero(event);
|
||||
while (ASensorEventQueue_getEvents(sensor->hwdata->eventqueue, &event, 1) > 0) {
|
||||
SDL_PrivateSensorUpdate(sensor, event.data, SDL_arraysize(event.data));
|
||||
SDL_PrivateSensorUpdate(sensor, 0, event.data, SDL_arraysize(event.data));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_ANDROID_SensorClose(SDL_Sensor *sensor)
|
||||
static void SDL_ANDROID_SensorClose(SDL_Sensor *sensor)
|
||||
{
|
||||
if (sensor->hwdata) {
|
||||
ASensorEventQueue_disableSensor(sensor->hwdata->eventqueue, sensor->hwdata->asensor);
|
||||
|
|
@ -190,8 +179,7 @@ SDL_ANDROID_SensorClose(SDL_Sensor *sensor)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_ANDROID_SensorQuit(void)
|
||||
static void SDL_ANDROID_SensorQuit(void)
|
||||
{
|
||||
if (SDL_sensors) {
|
||||
SDL_free(SDL_sensors);
|
||||
|
|
@ -200,8 +188,7 @@ SDL_ANDROID_SensorQuit(void)
|
|||
}
|
||||
}
|
||||
|
||||
SDL_SensorDriver SDL_ANDROID_SensorDriver =
|
||||
{
|
||||
SDL_SensorDriver SDL_ANDROID_SensorDriver = {
|
||||
SDL_ANDROID_SensorInit,
|
||||
SDL_ANDROID_SensorGetCount,
|
||||
SDL_ANDROID_SensorDetect,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -27,5 +27,4 @@ struct sensor_hwdata
|
|||
ASensorEventQueue *eventqueue;
|
||||
};
|
||||
|
||||
|
||||
/* vi: set ts=4 sw=4 expandtab: */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -26,5 +26,4 @@ struct sensor_hwdata
|
|||
float data[3];
|
||||
};
|
||||
|
||||
|
||||
/* vi: set ts=4 sw=4 expandtab: */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -42,8 +42,7 @@ static CMMotionManager *SDL_motion_manager;
|
|||
static SDL_CoreMotionSensor *SDL_sensors;
|
||||
static int SDL_sensors_count;
|
||||
|
||||
static int
|
||||
SDL_COREMOTION_SensorInit(void)
|
||||
static int SDL_COREMOTION_SensorInit(void)
|
||||
{
|
||||
int i, sensors_count = 0;
|
||||
|
||||
|
|
@ -80,19 +79,16 @@ SDL_COREMOTION_SensorInit(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_COREMOTION_SensorGetCount(void)
|
||||
static int SDL_COREMOTION_SensorGetCount(void)
|
||||
{
|
||||
return SDL_sensors_count;
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_COREMOTION_SensorDetect(void)
|
||||
static void SDL_COREMOTION_SensorDetect(void)
|
||||
{
|
||||
}
|
||||
|
||||
static const char *
|
||||
SDL_COREMOTION_SensorGetDeviceName(int device_index)
|
||||
static const char *SDL_COREMOTION_SensorGetDeviceName(int device_index)
|
||||
{
|
||||
switch (SDL_sensors[device_index].type) {
|
||||
case SDL_SENSOR_ACCEL:
|
||||
|
|
@ -104,26 +100,22 @@ SDL_COREMOTION_SensorGetDeviceName(int device_index)
|
|||
}
|
||||
}
|
||||
|
||||
static SDL_SensorType
|
||||
SDL_COREMOTION_SensorGetDeviceType(int device_index)
|
||||
static SDL_SensorType SDL_COREMOTION_SensorGetDeviceType(int device_index)
|
||||
{
|
||||
return SDL_sensors[device_index].type;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_COREMOTION_SensorGetDeviceNonPortableType(int device_index)
|
||||
static int SDL_COREMOTION_SensorGetDeviceNonPortableType(int device_index)
|
||||
{
|
||||
return SDL_sensors[device_index].type;
|
||||
}
|
||||
|
||||
static SDL_SensorID
|
||||
SDL_COREMOTION_SensorGetDeviceInstanceID(int device_index)
|
||||
static SDL_SensorID SDL_COREMOTION_SensorGetDeviceInstanceID(int device_index)
|
||||
{
|
||||
return SDL_sensors[device_index].instance_id;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_COREMOTION_SensorOpen(SDL_Sensor *sensor, int device_index)
|
||||
static int SDL_COREMOTION_SensorOpen(SDL_Sensor *sensor, int device_index)
|
||||
{
|
||||
struct sensor_hwdata *hwdata;
|
||||
|
||||
|
|
@ -133,8 +125,7 @@ SDL_COREMOTION_SensorOpen(SDL_Sensor *sensor, int device_index)
|
|||
}
|
||||
sensor->hwdata = hwdata;
|
||||
|
||||
switch (sensor->type)
|
||||
{
|
||||
switch (sensor->type) {
|
||||
case SDL_SENSOR_ACCEL:
|
||||
[SDL_motion_manager startAccelerometerUpdates];
|
||||
break;
|
||||
|
|
@ -146,55 +137,49 @@ SDL_COREMOTION_SensorOpen(SDL_Sensor *sensor, int device_index)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_COREMOTION_SensorUpdate(SDL_Sensor *sensor)
|
||||
|
||||
static void SDL_COREMOTION_SensorUpdate(SDL_Sensor *sensor)
|
||||
{
|
||||
switch (sensor->type)
|
||||
{
|
||||
switch (sensor->type) {
|
||||
case SDL_SENSOR_ACCEL:
|
||||
{
|
||||
CMAccelerometerData *accelerometerData = SDL_motion_manager.accelerometerData;
|
||||
if (accelerometerData) {
|
||||
CMAcceleration acceleration = accelerometerData.acceleration;
|
||||
float data[3];
|
||||
data[0] = -acceleration.x * SDL_STANDARD_GRAVITY;
|
||||
data[1] = -acceleration.y * SDL_STANDARD_GRAVITY;
|
||||
data[2] = -acceleration.z * SDL_STANDARD_GRAVITY;
|
||||
if (SDL_memcmp(data, sensor->hwdata->data, sizeof(data)) != 0) {
|
||||
SDL_PrivateSensorUpdate(sensor, data, SDL_arraysize(data));
|
||||
SDL_memcpy(sensor->hwdata->data, data, sizeof(data));
|
||||
}
|
||||
{
|
||||
CMAccelerometerData *accelerometerData = SDL_motion_manager.accelerometerData;
|
||||
if (accelerometerData) {
|
||||
CMAcceleration acceleration = accelerometerData.acceleration;
|
||||
float data[3];
|
||||
data[0] = -acceleration.x * SDL_STANDARD_GRAVITY;
|
||||
data[1] = -acceleration.y * SDL_STANDARD_GRAVITY;
|
||||
data[2] = -acceleration.z * SDL_STANDARD_GRAVITY;
|
||||
if (SDL_memcmp(data, sensor->hwdata->data, sizeof(data)) != 0) {
|
||||
SDL_PrivateSensorUpdate(sensor, 0, data, SDL_arraysize(data));
|
||||
SDL_memcpy(sensor->hwdata->data, data, sizeof(data));
|
||||
}
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
case SDL_SENSOR_GYRO:
|
||||
{
|
||||
CMGyroData *gyroData = SDL_motion_manager.gyroData;
|
||||
if (gyroData) {
|
||||
CMRotationRate rotationRate = gyroData.rotationRate;
|
||||
float data[3];
|
||||
data[0] = rotationRate.x;
|
||||
data[1] = rotationRate.y;
|
||||
data[2] = rotationRate.z;
|
||||
if (SDL_memcmp(data, sensor->hwdata->data, sizeof(data)) != 0) {
|
||||
SDL_PrivateSensorUpdate(sensor, data, SDL_arraysize(data));
|
||||
SDL_memcpy(sensor->hwdata->data, data, sizeof(data));
|
||||
}
|
||||
{
|
||||
CMGyroData *gyroData = SDL_motion_manager.gyroData;
|
||||
if (gyroData) {
|
||||
CMRotationRate rotationRate = gyroData.rotationRate;
|
||||
float data[3];
|
||||
data[0] = rotationRate.x;
|
||||
data[1] = rotationRate.y;
|
||||
data[2] = rotationRate.z;
|
||||
if (SDL_memcmp(data, sensor->hwdata->data, sizeof(data)) != 0) {
|
||||
SDL_PrivateSensorUpdate(sensor, 0, data, SDL_arraysize(data));
|
||||
SDL_memcpy(sensor->hwdata->data, data, sizeof(data));
|
||||
}
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_COREMOTION_SensorClose(SDL_Sensor *sensor)
|
||||
static void SDL_COREMOTION_SensorClose(SDL_Sensor *sensor)
|
||||
{
|
||||
if (sensor->hwdata) {
|
||||
switch (sensor->type)
|
||||
{
|
||||
switch (sensor->type) {
|
||||
case SDL_SENSOR_ACCEL:
|
||||
[SDL_motion_manager stopAccelerometerUpdates];
|
||||
break;
|
||||
|
|
@ -209,13 +194,11 @@ SDL_COREMOTION_SensorClose(SDL_Sensor *sensor)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_COREMOTION_SensorQuit(void)
|
||||
static void SDL_COREMOTION_SensorQuit(void)
|
||||
{
|
||||
}
|
||||
|
||||
SDL_SensorDriver SDL_COREMOTION_SensorDriver =
|
||||
{
|
||||
SDL_SensorDriver SDL_COREMOTION_SensorDriver = {
|
||||
SDL_COREMOTION_SensorInit,
|
||||
SDL_COREMOTION_SensorGetCount,
|
||||
SDL_COREMOTION_SensorDetect,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -29,70 +29,58 @@
|
|||
#include "SDL_dummysensor.h"
|
||||
#include "../SDL_syssensor.h"
|
||||
|
||||
static int
|
||||
SDL_DUMMY_SensorInit(void)
|
||||
static int SDL_DUMMY_SensorInit(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_DUMMY_SensorGetCount(void)
|
||||
static int SDL_DUMMY_SensorGetCount(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_DUMMY_SensorDetect(void)
|
||||
static void SDL_DUMMY_SensorDetect(void)
|
||||
{
|
||||
}
|
||||
|
||||
static const char *
|
||||
SDL_DUMMY_SensorGetDeviceName(int device_index)
|
||||
static const char *SDL_DUMMY_SensorGetDeviceName(int device_index)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static SDL_SensorType
|
||||
SDL_DUMMY_SensorGetDeviceType(int device_index)
|
||||
static SDL_SensorType SDL_DUMMY_SensorGetDeviceType(int device_index)
|
||||
{
|
||||
return SDL_SENSOR_INVALID;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_DUMMY_SensorGetDeviceNonPortableType(int device_index)
|
||||
static int SDL_DUMMY_SensorGetDeviceNonPortableType(int device_index)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
static SDL_SensorID
|
||||
SDL_DUMMY_SensorGetDeviceInstanceID(int device_index)
|
||||
static SDL_SensorID SDL_DUMMY_SensorGetDeviceInstanceID(int device_index)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_DUMMY_SensorOpen(SDL_Sensor *sensor, int device_index)
|
||||
static int SDL_DUMMY_SensorOpen(SDL_Sensor *sensor, int device_index)
|
||||
{
|
||||
return SDL_Unsupported();
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_DUMMY_SensorUpdate(SDL_Sensor *sensor)
|
||||
|
||||
static void SDL_DUMMY_SensorUpdate(SDL_Sensor *sensor)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_DUMMY_SensorClose(SDL_Sensor *sensor)
|
||||
static void SDL_DUMMY_SensorClose(SDL_Sensor *sensor)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_DUMMY_SensorQuit(void)
|
||||
static void SDL_DUMMY_SensorQuit(void)
|
||||
{
|
||||
}
|
||||
|
||||
SDL_SensorDriver SDL_DUMMY_SensorDriver =
|
||||
{
|
||||
SDL_SensorDriver SDL_DUMMY_SensorDriver = {
|
||||
SDL_DUMMY_SensorInit,
|
||||
SDL_DUMMY_SensorGetCount,
|
||||
SDL_DUMMY_SensorDetect,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
|||
207
Engine/lib/sdl/src/sensor/n3ds/SDL_n3dssensor.c
Normal file
207
Engine/lib/sdl/src/sensor/n3ds/SDL_n3dssensor.c
Normal file
|
|
@ -0,0 +1,207 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "../../SDL_internal.h"
|
||||
|
||||
#ifdef SDL_SENSOR_N3DS
|
||||
|
||||
#include <3ds.h>
|
||||
|
||||
#include "../SDL_syssensor.h"
|
||||
|
||||
/* 1 accelerometer and 1 gyroscope */
|
||||
#define N3DS_SENSOR_COUNT 2
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SDL_SensorType type;
|
||||
SDL_SensorID instance_id;
|
||||
} SDL_N3DSSensor;
|
||||
|
||||
static SDL_N3DSSensor N3DS_sensors[N3DS_SENSOR_COUNT];
|
||||
|
||||
SDL_FORCE_INLINE int InitN3DSServices(void);
|
||||
SDL_FORCE_INLINE void UpdateN3DSAccelerometer(SDL_Sensor *sensor);
|
||||
SDL_FORCE_INLINE void UpdateN3DSGyroscope(SDL_Sensor *sensor);
|
||||
|
||||
SDL_FORCE_INLINE SDL_bool
|
||||
IsDeviceIndexValid(int device_index)
|
||||
{
|
||||
return device_index >= 0 && device_index < N3DS_SENSOR_COUNT;
|
||||
}
|
||||
|
||||
static int N3DS_SensorInit(void)
|
||||
{
|
||||
if (InitN3DSServices() < 0) {
|
||||
return SDL_SetError("Failed to initialise N3DS services");
|
||||
}
|
||||
|
||||
N3DS_sensors[0].type = SDL_SENSOR_ACCEL;
|
||||
N3DS_sensors[0].instance_id = SDL_GetNextSensorInstanceID();
|
||||
N3DS_sensors[1].type = SDL_SENSOR_GYRO;
|
||||
N3DS_sensors[1].instance_id = SDL_GetNextSensorInstanceID();
|
||||
return 0;
|
||||
}
|
||||
|
||||
SDL_FORCE_INLINE int
|
||||
InitN3DSServices(void)
|
||||
{
|
||||
if (R_FAILED(hidInit())) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (R_FAILED(HIDUSER_EnableAccelerometer())) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (R_FAILED(HIDUSER_EnableGyroscope())) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int N3DS_SensorGetCount(void)
|
||||
{
|
||||
return N3DS_SENSOR_COUNT;
|
||||
}
|
||||
|
||||
static void N3DS_SensorDetect(void)
|
||||
{
|
||||
}
|
||||
|
||||
static const char *N3DS_SensorGetDeviceName(int device_index)
|
||||
{
|
||||
if (IsDeviceIndexValid(device_index)) {
|
||||
switch (N3DS_sensors[device_index].type) {
|
||||
case SDL_SENSOR_ACCEL:
|
||||
return "Accelerometer";
|
||||
case SDL_SENSOR_GYRO:
|
||||
return "Gyroscope";
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static SDL_SensorType N3DS_SensorGetDeviceType(int device_index)
|
||||
{
|
||||
if (IsDeviceIndexValid(device_index)) {
|
||||
return N3DS_sensors[device_index].type;
|
||||
}
|
||||
return SDL_SENSOR_INVALID;
|
||||
}
|
||||
|
||||
static int N3DS_SensorGetDeviceNonPortableType(int device_index)
|
||||
{
|
||||
return (int)N3DS_SensorGetDeviceType(device_index);
|
||||
}
|
||||
|
||||
static SDL_SensorID N3DS_SensorGetDeviceInstanceID(int device_index)
|
||||
{
|
||||
if (IsDeviceIndexValid(device_index)) {
|
||||
return N3DS_sensors[device_index].instance_id;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int N3DS_SensorOpen(SDL_Sensor *sensor, int device_index)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void N3DS_SensorUpdate(SDL_Sensor *sensor)
|
||||
{
|
||||
switch (sensor->type) {
|
||||
case SDL_SENSOR_ACCEL:
|
||||
UpdateN3DSAccelerometer(sensor);
|
||||
break;
|
||||
case SDL_SENSOR_GYRO:
|
||||
UpdateN3DSGyroscope(sensor);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SDL_FORCE_INLINE void
|
||||
UpdateN3DSAccelerometer(SDL_Sensor *sensor)
|
||||
{
|
||||
static accelVector previous_state = { 0, 0, 0 };
|
||||
accelVector current_state;
|
||||
float data[3];
|
||||
|
||||
hidAccelRead(¤t_state);
|
||||
if (SDL_memcmp(&previous_state, ¤t_state, sizeof(accelVector)) != 0) {
|
||||
SDL_memcpy(&previous_state, ¤t_state, sizeof(accelVector));
|
||||
data[0] = (float)current_state.x * SDL_STANDARD_GRAVITY;
|
||||
data[1] = (float)current_state.y * SDL_STANDARD_GRAVITY;
|
||||
data[2] = (float)current_state.z * SDL_STANDARD_GRAVITY;
|
||||
SDL_PrivateSensorUpdate(sensor, 0, data, sizeof(data));
|
||||
}
|
||||
}
|
||||
|
||||
SDL_FORCE_INLINE void
|
||||
UpdateN3DSGyroscope(SDL_Sensor *sensor)
|
||||
{
|
||||
static angularRate previous_state = { 0, 0, 0 };
|
||||
angularRate current_state;
|
||||
float data[3];
|
||||
|
||||
hidGyroRead(¤t_state);
|
||||
if (SDL_memcmp(&previous_state, ¤t_state, sizeof(angularRate)) != 0) {
|
||||
SDL_memcpy(&previous_state, ¤t_state, sizeof(angularRate));
|
||||
data[0] = (float)current_state.x;
|
||||
data[1] = (float)current_state.y;
|
||||
data[2] = (float)current_state.z;
|
||||
SDL_PrivateSensorUpdate(sensor, 0, data, sizeof(data));
|
||||
}
|
||||
}
|
||||
|
||||
static void N3DS_SensorClose(SDL_Sensor *sensor)
|
||||
{
|
||||
}
|
||||
|
||||
static void N3DS_SensorQuit(void)
|
||||
{
|
||||
HIDUSER_DisableGyroscope();
|
||||
HIDUSER_DisableAccelerometer();
|
||||
hidExit();
|
||||
}
|
||||
|
||||
SDL_SensorDriver SDL_N3DS_SensorDriver = {
|
||||
.Init = N3DS_SensorInit,
|
||||
.GetCount = N3DS_SensorGetCount,
|
||||
.Detect = N3DS_SensorDetect,
|
||||
.GetDeviceName = N3DS_SensorGetDeviceName,
|
||||
.GetDeviceType = N3DS_SensorGetDeviceType,
|
||||
.GetDeviceNonPortableType = N3DS_SensorGetDeviceNonPortableType,
|
||||
.GetDeviceInstanceID = N3DS_SensorGetDeviceInstanceID,
|
||||
.Open = N3DS_SensorOpen,
|
||||
.Update = N3DS_SensorUpdate,
|
||||
.Close = N3DS_SensorClose,
|
||||
.Quit = N3DS_SensorQuit,
|
||||
};
|
||||
|
||||
#endif /* SDL_SENSOR_N3DS */
|
||||
|
||||
/* vi: set ts=4 sw=4 expandtab: */
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -42,8 +42,7 @@ typedef struct
|
|||
static SDL_VitaSensor *SDL_sensors;
|
||||
static int SDL_sensors_count;
|
||||
|
||||
static int
|
||||
SDL_VITA_SensorInit(void)
|
||||
static int SDL_VITA_SensorInit(void)
|
||||
{
|
||||
sceMotionReset();
|
||||
sceMotionStartSampling();
|
||||
|
|
@ -55,7 +54,7 @@ SDL_VITA_SensorInit(void)
|
|||
SDL_sensors_count = 2;
|
||||
|
||||
SDL_sensors = (SDL_VitaSensor *)SDL_calloc(SDL_sensors_count, sizeof(*SDL_sensors));
|
||||
if (!SDL_sensors) {
|
||||
if (SDL_sensors == NULL) {
|
||||
return SDL_OutOfMemory();
|
||||
}
|
||||
|
||||
|
|
@ -67,36 +66,32 @@ SDL_VITA_SensorInit(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_VITA_SensorGetCount(void)
|
||||
static int SDL_VITA_SensorGetCount(void)
|
||||
{
|
||||
return SDL_sensors_count;
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_VITA_SensorDetect(void)
|
||||
static void SDL_VITA_SensorDetect(void)
|
||||
{
|
||||
}
|
||||
|
||||
static const char *
|
||||
SDL_VITA_SensorGetDeviceName(int device_index)
|
||||
static const char *SDL_VITA_SensorGetDeviceName(int device_index)
|
||||
{
|
||||
if (device_index < SDL_sensors_count) {
|
||||
switch (SDL_sensors[device_index].type) {
|
||||
case SDL_SENSOR_ACCEL:
|
||||
return "Accelerometer";
|
||||
case SDL_SENSOR_GYRO:
|
||||
return "Gyro";
|
||||
default:
|
||||
return "Unknown";
|
||||
case SDL_SENSOR_ACCEL:
|
||||
return "Accelerometer";
|
||||
case SDL_SENSOR_GYRO:
|
||||
return "Gyro";
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static SDL_SensorType
|
||||
SDL_VITA_SensorGetDeviceType(int device_index)
|
||||
static SDL_SensorType SDL_VITA_SensorGetDeviceType(int device_index)
|
||||
{
|
||||
if (device_index < SDL_sensors_count) {
|
||||
return SDL_sensors[device_index].type;
|
||||
|
|
@ -105,8 +100,7 @@ SDL_VITA_SensorGetDeviceType(int device_index)
|
|||
return SDL_SENSOR_INVALID;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_VITA_SensorGetDeviceNonPortableType(int device_index)
|
||||
static int SDL_VITA_SensorGetDeviceNonPortableType(int device_index)
|
||||
{
|
||||
if (device_index < SDL_sensors_count) {
|
||||
return SDL_sensors[device_index].type;
|
||||
|
|
@ -114,8 +108,7 @@ SDL_VITA_SensorGetDeviceNonPortableType(int device_index)
|
|||
return -1;
|
||||
}
|
||||
|
||||
static SDL_SensorID
|
||||
SDL_VITA_SensorGetDeviceInstanceID(int device_index)
|
||||
static SDL_SensorID SDL_VITA_SensorGetDeviceInstanceID(int device_index)
|
||||
{
|
||||
if (device_index < SDL_sensors_count) {
|
||||
return SDL_sensors[device_index].instance_id;
|
||||
|
|
@ -123,8 +116,7 @@ SDL_VITA_SensorGetDeviceInstanceID(int device_index)
|
|||
return -1;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_VITA_SensorOpen(SDL_Sensor *sensor, int device_index)
|
||||
static int SDL_VITA_SensorOpen(SDL_Sensor *sensor, int device_index)
|
||||
{
|
||||
struct sensor_hwdata *hwdata;
|
||||
|
||||
|
|
@ -137,70 +129,71 @@ SDL_VITA_SensorOpen(SDL_Sensor *sensor, int device_index)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_VITA_SensorUpdate(SDL_Sensor *sensor)
|
||||
static void SDL_VITA_SensorUpdate(SDL_Sensor *sensor)
|
||||
{
|
||||
int err = 0;
|
||||
SceMotionSensorState motionState[SCE_MOTION_MAX_NUM_STATES];
|
||||
SDL_memset(motionState, 0, sizeof(motionState));
|
||||
|
||||
err = sceMotionGetSensorState(motionState, SCE_MOTION_MAX_NUM_STATES);
|
||||
if (err != 0)
|
||||
{
|
||||
if (err != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < SCE_MOTION_MAX_NUM_STATES; i++)
|
||||
{
|
||||
if (sensor->hwdata->counter < motionState[i].counter)
|
||||
{
|
||||
for (int i = 0; i < SCE_MOTION_MAX_NUM_STATES; i++) {
|
||||
if (sensor->hwdata->counter < motionState[i].counter) {
|
||||
unsigned int timestamp = motionState[i].timestamp;
|
||||
|
||||
sensor->hwdata->counter = motionState[i].counter;
|
||||
switch (sensor->type)
|
||||
|
||||
if (sensor->hwdata->timestamp_us) {
|
||||
unsigned int delta;
|
||||
if (sensor->hwdata->last_timestamp > timestamp) {
|
||||
SDL_COMPILE_TIME_ASSERT(timestamp, sizeof(timestamp) == sizeof(Uint32));
|
||||
delta = (SDL_MAX_UINT32 - sensor->hwdata->last_timestamp + timestamp + 1);
|
||||
} else {
|
||||
delta = (timestamp - sensor->hwdata->last_timestamp);
|
||||
}
|
||||
sensor->hwdata->timestamp_us += delta;
|
||||
} else {
|
||||
sensor->hwdata->timestamp_us = timestamp;
|
||||
}
|
||||
sensor->hwdata->last_timestamp = timestamp;
|
||||
|
||||
switch (sensor->type) {
|
||||
case SDL_SENSOR_ACCEL:
|
||||
{
|
||||
case SDL_SENSOR_ACCEL:
|
||||
{
|
||||
float data[3];
|
||||
data[0] = motionState[i].accelerometer.x * SDL_STANDARD_GRAVITY;
|
||||
data[1] = motionState[i].accelerometer.y * SDL_STANDARD_GRAVITY;
|
||||
data[2] = motionState[i].accelerometer.z * SDL_STANDARD_GRAVITY;
|
||||
if (SDL_memcmp(data, sensor->hwdata->data, sizeof(data)) != 0) {
|
||||
SDL_PrivateSensorUpdate(sensor, data, SDL_arraysize(data));
|
||||
SDL_memcpy(sensor->hwdata->data, data, sizeof(data));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SDL_SENSOR_GYRO:
|
||||
{
|
||||
float data[3];
|
||||
data[0] = motionState[i].gyro.x;
|
||||
data[1] = motionState[i].gyro.y;
|
||||
data[2] = motionState[i].gyro.z;
|
||||
if (SDL_memcmp(data, sensor->hwdata->data, sizeof(data)) != 0) {
|
||||
SDL_PrivateSensorUpdate(sensor, data, SDL_arraysize(data));
|
||||
SDL_memcpy(sensor->hwdata->data, data, sizeof(data));
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
float data[3];
|
||||
data[0] = motionState[i].accelerometer.x * SDL_STANDARD_GRAVITY;
|
||||
data[1] = motionState[i].accelerometer.y * SDL_STANDARD_GRAVITY;
|
||||
data[2] = motionState[i].accelerometer.z * SDL_STANDARD_GRAVITY;
|
||||
SDL_PrivateSensorUpdate(sensor, sensor->hwdata->timestamp_us, data, SDL_arraysize(data));
|
||||
} break;
|
||||
case SDL_SENSOR_GYRO:
|
||||
{
|
||||
float data[3];
|
||||
data[0] = motionState[i].gyro.x;
|
||||
data[1] = motionState[i].gyro.y;
|
||||
data[2] = motionState[i].gyro.z;
|
||||
SDL_PrivateSensorUpdate(sensor, sensor->hwdata->timestamp_us, data, SDL_arraysize(data));
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_VITA_SensorClose(SDL_Sensor *sensor)
|
||||
static void SDL_VITA_SensorClose(SDL_Sensor *sensor)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_VITA_SensorQuit(void)
|
||||
static void SDL_VITA_SensorQuit(void)
|
||||
{
|
||||
sceMotionStopSampling();
|
||||
}
|
||||
|
||||
SDL_SensorDriver SDL_VITA_SensorDriver =
|
||||
{
|
||||
SDL_SensorDriver SDL_VITA_SensorDriver = {
|
||||
SDL_VITA_SensorInit,
|
||||
SDL_VITA_SensorGetCount,
|
||||
SDL_VITA_SensorDetect,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -23,8 +23,9 @@
|
|||
/* The private structure used to keep track of a sensor */
|
||||
struct sensor_hwdata
|
||||
{
|
||||
float data[3];
|
||||
Uint32 counter;
|
||||
unsigned int last_timestamp;
|
||||
Uint64 timestamp_us;
|
||||
};
|
||||
|
||||
/* vi: set ts=4 sw=4 expandtab: */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -65,9 +65,9 @@ static SDL_Windows_Sensor *SDL_sensors;
|
|||
static int ConnectSensor(ISensor *sensor);
|
||||
static int DisconnectSensor(ISensor *sensor);
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE ISensorManagerEventsVtbl_QueryInterface(ISensorManagerEvents * This, REFIID riid, void **ppvObject)
|
||||
static HRESULT STDMETHODCALLTYPE ISensorManagerEventsVtbl_QueryInterface(ISensorManagerEvents *This, REFIID riid, void **ppvObject)
|
||||
{
|
||||
if (!ppvObject) {
|
||||
if (ppvObject == NULL) {
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
|
|
@ -79,17 +79,17 @@ static HRESULT STDMETHODCALLTYPE ISensorManagerEventsVtbl_QueryInterface(ISensor
|
|||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG STDMETHODCALLTYPE ISensorManagerEventsVtbl_AddRef(ISensorManagerEvents * This)
|
||||
static ULONG STDMETHODCALLTYPE ISensorManagerEventsVtbl_AddRef(ISensorManagerEvents *This)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static ULONG STDMETHODCALLTYPE ISensorManagerEventsVtbl_Release(ISensorManagerEvents * This)
|
||||
static ULONG STDMETHODCALLTYPE ISensorManagerEventsVtbl_Release(ISensorManagerEvents *This)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE ISensorManagerEventsVtbl_OnSensorEnter(ISensorManagerEvents * This, ISensor *pSensor, SensorState state)
|
||||
static HRESULT STDMETHODCALLTYPE ISensorManagerEventsVtbl_OnSensorEnter(ISensorManagerEvents *This, ISensor *pSensor, SensorState state)
|
||||
{
|
||||
ConnectSensor(pSensor);
|
||||
return S_OK;
|
||||
|
|
@ -105,9 +105,9 @@ static ISensorManagerEvents sensor_manager_events = {
|
|||
&sensor_manager_events_vtbl
|
||||
};
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_QueryInterface(ISensorEvents * This, REFIID riid, void **ppvObject)
|
||||
static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_QueryInterface(ISensorEvents *This, REFIID riid, void **ppvObject)
|
||||
{
|
||||
if (!ppvObject) {
|
||||
if (ppvObject == NULL) {
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
|
|
@ -119,17 +119,17 @@ static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_QueryInterface(ISensorEvents
|
|||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG STDMETHODCALLTYPE ISensorEventsVtbl_AddRef(ISensorEvents * This)
|
||||
static ULONG STDMETHODCALLTYPE ISensorEventsVtbl_AddRef(ISensorEvents *This)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static ULONG STDMETHODCALLTYPE ISensorEventsVtbl_Release(ISensorEvents * This)
|
||||
static ULONG STDMETHODCALLTYPE ISensorEventsVtbl_Release(ISensorEvents *This)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_OnStateChanged(ISensorEvents * This, ISensor *pSensor, SensorState state)
|
||||
static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_OnStateChanged(ISensorEvents *This, ISensor *pSensor, SensorState state)
|
||||
{
|
||||
#ifdef DEBUG_SENSORS
|
||||
int i;
|
||||
|
|
@ -145,7 +145,7 @@ static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_OnStateChanged(ISensorEvents
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_OnDataUpdated(ISensorEvents * This, ISensor *pSensor, ISensorDataReport *pNewData)
|
||||
static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_OnDataUpdated(ISensorEvents *This, ISensor *pSensor, ISensorDataReport *pNewData)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -171,7 +171,7 @@ static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_OnDataUpdated(ISensorEvents *
|
|||
values[0] = (float)valueX.dblVal * SDL_STANDARD_GRAVITY;
|
||||
values[1] = (float)valueY.dblVal * SDL_STANDARD_GRAVITY;
|
||||
values[2] = (float)valueZ.dblVal * SDL_STANDARD_GRAVITY;
|
||||
SDL_PrivateSensorUpdate(SDL_sensors[i].sensor_opened, values, 3);
|
||||
SDL_PrivateSensorUpdate(SDL_sensors[i].sensor_opened, 0, values, 3);
|
||||
}
|
||||
break;
|
||||
case SDL_SENSOR_GYRO:
|
||||
|
|
@ -186,7 +186,7 @@ static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_OnDataUpdated(ISensorEvents *
|
|||
values[0] = (float)valueX.dblVal * DEGREES_TO_RADIANS;
|
||||
values[1] = (float)valueY.dblVal * DEGREES_TO_RADIANS;
|
||||
values[2] = (float)valueZ.dblVal * DEGREES_TO_RADIANS;
|
||||
SDL_PrivateSensorUpdate(SDL_sensors[i].sensor_opened, values, 3);
|
||||
SDL_PrivateSensorUpdate(SDL_sensors[i].sensor_opened, 0, values, 3);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
@ -202,7 +202,7 @@ static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_OnDataUpdated(ISensorEvents *
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_OnEvent(ISensorEvents * This, ISensor *pSensor, REFGUID eventID, IPortableDeviceValues *pEventData)
|
||||
static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_OnEvent(ISensorEvents *This, ISensor *pSensor, REFGUID eventID, IPortableDeviceValues *pEventData)
|
||||
{
|
||||
#ifdef DEBUG_SENSORS
|
||||
int i;
|
||||
|
|
@ -218,7 +218,7 @@ static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_OnEvent(ISensorEvents * This,
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_OnLeave(ISensorEvents * This, REFSENSOR_ID ID)
|
||||
static HRESULT STDMETHODCALLTYPE ISensorEventsVtbl_OnLeave(ISensorEvents *This, REFSENSOR_ID ID)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -286,7 +286,7 @@ static int ConnectSensor(ISensor *sensor)
|
|||
if (bstr_name != NULL) {
|
||||
SysFreeString(bstr_name);
|
||||
}
|
||||
if (!name) {
|
||||
if (name == NULL) {
|
||||
return SDL_OutOfMemory();
|
||||
}
|
||||
|
||||
|
|
@ -343,8 +343,7 @@ static int DisconnectSensor(ISensor *sensor)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_WINDOWS_SensorInit(void)
|
||||
static int SDL_WINDOWS_SensorInit(void)
|
||||
{
|
||||
HRESULT hr;
|
||||
ISensorCollection *sensor_collection = NULL;
|
||||
|
|
@ -353,7 +352,7 @@ SDL_WINDOWS_SensorInit(void)
|
|||
SDL_windowscoinit = SDL_TRUE;
|
||||
}
|
||||
|
||||
hr = CoCreateInstance(&SDL_CLSID_SensorManager, NULL, CLSCTX_INPROC_SERVER, &SDL_IID_SensorManager, (LPVOID *) &SDL_sensor_manager);
|
||||
hr = CoCreateInstance(&SDL_CLSID_SensorManager, NULL, CLSCTX_INPROC_SERVER, &SDL_IID_SensorManager, (LPVOID *)&SDL_sensor_manager);
|
||||
if (FAILED(hr)) {
|
||||
/* If we can't create a sensor manager (i.e. on Wine), we won't have any sensors, but don't fail the init */
|
||||
return 0; /* WIN_SetErrorFromHRESULT("Couldn't create the sensor manager", hr); */
|
||||
|
|
@ -392,55 +391,46 @@ SDL_WINDOWS_SensorInit(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_WINDOWS_SensorGetCount(void)
|
||||
static int SDL_WINDOWS_SensorGetCount(void)
|
||||
{
|
||||
return SDL_num_sensors;
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_WINDOWS_SensorDetect(void)
|
||||
static void SDL_WINDOWS_SensorDetect(void)
|
||||
{
|
||||
}
|
||||
|
||||
static const char *
|
||||
SDL_WINDOWS_SensorGetDeviceName(int device_index)
|
||||
static const char *SDL_WINDOWS_SensorGetDeviceName(int device_index)
|
||||
{
|
||||
return SDL_sensors[device_index].name;
|
||||
}
|
||||
|
||||
static SDL_SensorType
|
||||
SDL_WINDOWS_SensorGetDeviceType(int device_index)
|
||||
static SDL_SensorType SDL_WINDOWS_SensorGetDeviceType(int device_index)
|
||||
{
|
||||
return SDL_sensors[device_index].type;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_WINDOWS_SensorGetDeviceNonPortableType(int device_index)
|
||||
static int SDL_WINDOWS_SensorGetDeviceNonPortableType(int device_index)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
static SDL_SensorID
|
||||
SDL_WINDOWS_SensorGetDeviceInstanceID(int device_index)
|
||||
static SDL_SensorID SDL_WINDOWS_SensorGetDeviceInstanceID(int device_index)
|
||||
{
|
||||
return SDL_sensors[device_index].id;
|
||||
}
|
||||
|
||||
static int
|
||||
SDL_WINDOWS_SensorOpen(SDL_Sensor *sensor, int device_index)
|
||||
static int SDL_WINDOWS_SensorOpen(SDL_Sensor *sensor, int device_index)
|
||||
{
|
||||
SDL_sensors[device_index].sensor_opened = sensor;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_WINDOWS_SensorUpdate(SDL_Sensor *sensor)
|
||||
static void SDL_WINDOWS_SensorUpdate(SDL_Sensor *sensor)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_WINDOWS_SensorClose(SDL_Sensor *sensor)
|
||||
static void SDL_WINDOWS_SensorClose(SDL_Sensor *sensor)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -452,8 +442,7 @@ SDL_WINDOWS_SensorClose(SDL_Sensor *sensor)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
SDL_WINDOWS_SensorQuit(void)
|
||||
static void SDL_WINDOWS_SensorQuit(void)
|
||||
{
|
||||
while (SDL_num_sensors > 0) {
|
||||
DisconnectSensor(SDL_sensors[0].sensor);
|
||||
|
|
@ -470,8 +459,7 @@ SDL_WINDOWS_SensorQuit(void)
|
|||
}
|
||||
}
|
||||
|
||||
SDL_SensorDriver SDL_WINDOWS_SensorDriver =
|
||||
{
|
||||
SDL_SensorDriver SDL_WINDOWS_SensorDriver = {
|
||||
SDL_WINDOWS_SensorInit,
|
||||
SDL_WINDOWS_SensorGetCount,
|
||||
SDL_WINDOWS_SensorDetect,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue