Commit graph

8894 commits

Author SHA1 Message Date
Ryan C. Gordon
68abf12b7b Added SDL_SetWindowResizable(). (thanks, Ethan!)
--HG--
extra : rebase_source : a1929f1de6844265f3744a87384620703f960de9
2016-09-29 22:52:41 -04:00
Sam Lantinga
d7c4e4aa49 Fixed bug 3426 - Fixes for joystick related issues
ny00

This report is going to cover three issues, with a suggestion for fixes. For reference, tests were done using an installation of android-x86-5.1-rc1.iso within a VirtualBox session. I've actually used an adapter that accepts up to two Playstation 1/2 controllers.

A ZIP file should be attached, with the following contents:
- The patch file itself.
- Outputs of joysticks lists from testjoystick with different orders (before fixing bug).
- Game controllers database entries (for reference).
--- Different outputs for different platforms may stem from different tools being used; The Android mapping was manually constructed using a previously available mapping as a base.
--- Note that it turns out the Linux mapping is already out there in some form: https://github.com/gabomdq/SDL_GameControllerDB/blob/master/gamecontrollerdb.txt

And so, let's begin listing the issues:

1. While changeset https://hg.libsdl.org/SDL/rev/f6567f77f663 has good intentions, it appears to make various input devices being mistakenly detected as SDL joysticks. I got lists of the devices from joysticktest, given in the ZIP file. "badordering.txt" is what I get if the device has been plugged since a reboot of the virtual machine, while I've gotten "goodordering.txt" after hot-plugging the USB adapter. As expected, only in the latter case I could use the controller in the test program (assuming it isn't modified).

To take care of this, I updated pollInputDevices and added the function SDLActivity.isDeviceSDLJoystick, in order to have a better filter. Note that it also checks that the device id is non-negative, since VIRTUAL_KEYBOARD appears to include a SOURCE_DPAD, and I should probably keep accepting it as an SDL_joystick (good if you want, say, to support multiple independent d-pad devices).

I hope the device id filter does not break support for the virtual remote (mentioned in the changeset above).

2. So there's a weird glitch here, where the game controller is reported to have SOURCE_KEYBOARD and SOURCE_JOYSTICK, while each controller button press/release emits a KeyEvent with SOURCE_KEYBOARD only. So obviously any test going over the event's own sources is expected to fail.

It is possible to try and filter by the key code, but then there are the dpad key codes, which can also be emitted by actual PC keyboard's key presses/releases (the arrow keys).

So instead, I just call the newly added isDeviceSDLJoystick function again and check if the input device (not the event) has any source considered to be a joystick/gamepad for us.

3. Finally, if SDL2 properly detects an SDL_Joystick being connected, but it is not opened, then whenever a KeyEvent is received after a button press/release from the same controller, SDLActivity.onNativePadDown/onNativePadUp returns a negative value. In such a case, the onKey handler continues to check for SOURCE_KEYBOARD (and possibly also SOURCE_MOUSE), which is clearly not desired.

And so, in the given patch, the return values of onNativePadDown and onNativePadUp are ignored and "true" is returned either way.

(Note: Maybe the native functions should be modified to have the return value of "void".)

Finally, as another side-note, I've noticed that the various bitwise tests for sources are wrong. For instance, to check if an InputDevice 'device' has source SOURCE_JOYSTICK, the value (device.getSources() & SOURCE_JOYSTICK) should be compared to SOURCE_JOYSTICK, not 0.
However, I think there's enough that this patch covers. At the least, isDeviceSDLJoystick partially solves this.
2016-09-29 16:52:48 -07:00
Sam Lantinga
82e80692e1 Fixed bug 3427 - Android accelerometer z-axis incorrect
Alex Szpakowski

As seen here https://bitbucket.org/rude/love/issues/1202/accelerometer-z-axis , the Java code for sending accelerometer data to SDL's C code has an incorrect Z-axis calculation.
2016-09-29 16:40:34 -07:00
Sam Lantinga
295b8597ae Fixed bug 3429 - Update AM_PATH_SDL2() to also check for SDL2.framework
neoaggelos

It is common for Mac OS X to use the SDL2.framework instead of the classic UNIX dynamic lib.

Therefore, it makes sense for AM_PATH_SDL2() to be able to locate it. Attached is a patched sdl2.m4 (updated for that purpose).

Changes:
* look for SDL2.framework ONLY if pkg-config and sdl2-config tests failed (this is to ensure compatibility with the old behaviour)

* adds option ('--disable-sdlframework') to retreat to the old behaviour

* adds variable 'SDL2_FRAMEWORK' for the user to specify the exact path to SDL2.framework (e.g. if it is installed in a non-standard location)

Open to suggestions for further improvements
2016-09-29 16:37:08 -07:00
Sam Lantinga
97b094e050 Added debug output for new window events 2016-09-29 16:10:08 -07:00
Sam Lantinga
9961af217a Implemented SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH on X11 2016-09-29 16:05:29 -07:00
Sam Lantinga
71e9b9f781 Added Windows support for SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH 2016-09-29 14:48:33 -07:00
Sam Lantinga
5d60a58a8b Generalized the hint for whether the application gets a mouse event when clicking on the window to activate it, and is now named SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH.
The behavior is defined to not receive the click event, and this hint allows you to override that.
2016-09-29 13:34:49 -07:00
Sam Lantinga
273f71a704 When clicking on a window to give it focus, don't pass the mouse click to the application. 2016-09-29 03:59:04 -07:00
Ryan C. Gordon
ee85553e33 Updated Linux notes on building with Mir and Wayland support. 2016-09-29 12:04:07 -04:00
Sam Lantinga
79485875b5 Updated version to 2.0.5 in preparation for release 2016-09-28 22:24:01 -07:00
Philipp Wiesemann
bd1799c67f Updated configure script. 2016-09-26 23:09:34 +02:00
Philipp Wiesemann
c6bf0b860a iOS: Updated comment in demo. 2016-09-26 23:09:19 +02:00
Alex Szpakowski
ef9bde21c8 Enable SDL_LoadObject on iOS 8+ and tvOS. 2016-09-25 15:02:06 -03:00
Alex Szpakowski
d7b455f987 tvOS launch images are now properly supported. 2016-09-25 11:46:25 -03:00
Alex Szpakowski
448940e133 Update the code for the iOS demos to handle modern devices. Fixes bug #3337 2016-09-25 00:23:35 -03:00
Alex Szpakowski
d3410d304c Don't try to load a launch storyboard on tvOS (it doesn't use them). 2016-09-25 00:21:12 -03:00
Alex Szpakowski
1b8e2f31be iOS/tvOS: Try to load the launch screen as a storyboard. Xcode 8 compiles it as a storyboard instead of a nib. 2016-09-24 23:33:49 -03:00
Alex Szpakowski
2e80731ac4 iOS/tvOS: Always send SDL_WINDOWEVENT_FOCUS_GAINED when a window is created on the main screen (fixes bug #3395). 2016-09-24 20:12:57 -03:00
Alex Szpakowski
053c6decab Use OS-provided click counts on macOS and iOS for mouse press and release events. 2016-09-24 18:46:34 -03:00
Alex Szpakowski
9ec0713e72 Fix mouse wheel events on macOS 10.12 (thanks Eric Wasylishen!)
Fixes bug #3432
2016-09-24 13:28:40 -03:00
Brandon Schaefer
9a227e9976 Mir: Add gamma support set/get. Still need one more function to complete the set 2016-09-21 18:23:59 -07:00
Brandon Schaefer
4f622562df Mir: Add fixme (waiting for a public api to be added) 2016-09-21 16:28:23 -07:00
Brandon Schaefer
e2434a9b73 [Mir] Move to the new MirDisplayConfig API 2016-09-21 15:57:15 -07:00
Philipp Wiesemann
546554a3f1 Mac: Fixed markdown formatting in README.
The newlines were lost in doxygen output.
2016-09-21 23:07:08 +02:00
Philipp Wiesemann
42f3ecb5d5 Mac: Fixed whitespace around function return type. 2016-09-21 23:06:49 +02:00
Philipp Wiesemann
0f1075b48e Fixed compiling of three test programs with C++. 2016-09-21 23:06:38 +02:00
Philipp Wiesemann
7cbbd89bb3 Android: Fixed two warnings about unused variables. 2016-09-21 23:06:26 +02:00
Alex Szpakowski
cac05aa410 Handle audio interruptions on iOS/tvOS. Fixes bugs 2569 and 2960. 2016-09-18 19:22:09 -03:00
Ryan C. Gordon
0378b1263e Xcode/mac: fix building standalone static and shared libraries. 2016-09-18 18:19:32 -04:00
Ryan C. Gordon
597bf224a1 emscripten: get even more aggressive about audio device closing.
I still get exceptions thrown sometimes on shutdown without this.

--HG--
extra : rebase_source : 6f1a4c742a186e29b540fde244b95f4a51c7e4e9
2016-09-18 18:07:47 -04:00
Sam Lantinga
d2cb290156 Recommended settings from Xcode 7.3.0 2016-09-16 22:28:12 -07:00
Sam Lantinga
9b769a983d Fixed warning with Xcode 7.3.0 2016-09-16 22:27:58 -07:00
Alex Szpakowski
bc55781bff Updated URL in a comment 2016-09-17 01:36:29 -03:00
Alex Szpakowski
3a2d9cee43 Added a new hint SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION.
When set to "1", the orientation of the Apple TV remote affects the axes of the corresponding SDL joystick. It is "0" (disabled) by default.
2016-09-17 01:31:07 -03:00
Alex Szpakowski
5160ba4a21 tvOS: Add drop-file support 2016-09-15 21:49:29 -03:00
Sam Lantinga
8d2e2aad1d Fixed set of libraries needed to build on Mac OS X 2016-09-15 08:57:56 -07:00
Sam Lantinga
ed62fd26c8 Hopefully fixed the cmake build on Mac OS X 2016-09-15 08:46:14 -07:00
Sam Lantinga
1b61eae340 Fixed building new coreaudio driver on Mac OS X 2016-09-15 08:29:20 -07:00
Alex Szpakowski
a98de9e4f7 CoreAudio iOS/tvOS: Use AVFoundation instead of AudioSession. Fixes audio on tvOS.
Note that linking with AVFoundation is now required if you don't disable SDL_audio compilation on iOS and tvOS.

--HG--
rename : src/audio/coreaudio/SDL_coreaudio.c => src/audio/coreaudio/SDL_coreaudio.m
2016-09-15 19:59:57 -03:00
Sam Lantinga
d3f9978231 Fixed building for both iOS and tvOS on Xcode 8 2016-09-14 08:45:35 -07:00
Sam Lantinga
a1e419f3ad Fixed including OpenGL ES on iOS without any other SDL headers 2016-09-14 08:20:24 -07:00
Sam Lantinga
2cbc2b95ec Allow targeting tvOS 2016-09-14 07:09:35 -07:00
Sam Lantinga
dcc80b6128 Fixed spacing 2016-09-13 18:44:28 -07:00
Sam Lantinga
dcc8498733 Fixed accidental call to SDL_PrivateJoystickHat() 2016-09-13 18:43:55 -07:00
Alex Szpakowski
398a513d09 Initial Apple TV / tvOS support.
The Apple TV remote is currently exposed as a joystick with its touch surface treated as two axes. Key presses are also generated when its buttons and touch surface are used.

A new hint has been added to help deal with deciding whether to background the app when the remote's menu button is pressed: SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS.
2016-09-13 22:18:06 -03:00
Alex Szpakowski
5935e90124 Enable more compiler warnings in the Xcode projects (based on Xcode 8's suggestion), made some integer downcasts explicit. 2016-09-13 19:51:10 -03:00
Sam Lantinga
f6a0ed861b Only prevent the default browser event handling when the specific event types aren't disabled by the user, patch contributed by Jonas Platte 2016-09-13 00:09:21 -07:00
Charlie Birks
7e29f2ad53 Add mapping for media keys 2016-09-13 00:04:00 -07:00
Alon Zakai
a9c5c0a83a use Module.createContext for 2D rendering in emscripten 2016-09-13 00:03:59 -07:00