diff --git a/test/testcontroller.c b/test/testcontroller.c index 345b712ef4..990878b7b0 100644 --- a/test/testcontroller.c +++ b/test/testcontroller.c @@ -1587,7 +1587,10 @@ static bool SDLCALL VirtualGamepadSetLED(void *userdata, Uint8 red, Uint8 green, static void OpenVirtualGamepad(void) { SDL_VirtualJoystickTouchpadDesc virtual_touchpad = { 1, { 0, 0, 0 } }; - SDL_VirtualJoystickSensorDesc virtual_sensor = { SDL_SENSOR_ACCEL, 0.0f }; + SDL_VirtualJoystickSensorDesc virtual_sensors[] = { + { SDL_SENSOR_ACCEL, 0.0f }, + { SDL_SENSOR_GYRO, 0.0f } + }; SDL_VirtualJoystickDesc desc; SDL_JoystickID virtual_id; @@ -1601,8 +1604,8 @@ static void OpenVirtualGamepad(void) desc.nbuttons = SDL_GAMEPAD_BUTTON_COUNT; desc.ntouchpads = 1; desc.touchpads = &virtual_touchpad; - desc.nsensors = 1; - desc.sensors = &virtual_sensor; + desc.nsensors = SDL_arraysize(virtual_sensors); + desc.sensors = virtual_sensors; desc.SetPlayerIndex = VirtualGamepadSetPlayerIndex; desc.Rumble = VirtualGamepadRumble; desc.RumbleTriggers = VirtualGamepadRumbleTriggers; @@ -2362,10 +2365,13 @@ SDL_AppResult SDLCALL SDL_AppEvent(void *appstate, SDL_Event *event) SDL_AppResult SDLCALL SDL_AppIterate(void *appstate) { - /* If we have a virtual controller, send a virtual accelerometer sensor reading */ + /* If we have a virtual controller, send virtual sensor readings */ if (virtual_joystick) { - float data[3] = { 0.0f, SDL_STANDARD_GRAVITY, 0.0f }; - SDL_SendJoystickVirtualSensorData(virtual_joystick, SDL_SENSOR_ACCEL, SDL_GetTicksNS(), data, SDL_arraysize(data)); + float accel_data[3] = { 0.0f, SDL_STANDARD_GRAVITY, 0.0f }; + float gyro_data[3] = { 0.01f, -0.01f, 0.0f }; + Uint64 sensor_timestamp = SDL_GetTicksNS(); + SDL_SendJoystickVirtualSensorData(virtual_joystick, SDL_SENSOR_ACCEL, sensor_timestamp, accel_data, SDL_arraysize(accel_data)); + SDL_SendJoystickVirtualSensorData(virtual_joystick, SDL_SENSOR_GYRO, sensor_timestamp, gyro_data, SDL_arraysize(gyro_data)); } /* Wait 30 ms for joystick events to stop coming in,