src/video/android


Log

Author Commit Date CI Message
Sam Lantinga 88dfa466 2018-06-18T13:14:04 Use a blank cursor instead of PointerIcon.TYPE_NULL since that shows the default cursor on Samsung DeX
Sam Lantinga 4a4bac95 2018-06-12T13:22:58 Deal with fullscreen limitations under windowed Android environments (Chromebook, DeX, etc.) (Thanks Rachel!)
Sam Lantinga fe196db7 2018-06-07T17:07:03 Track android device panel width & height as well as window surface & height. Expand SDLActivity::SDLSurface::surfaceChanged() callback to grab the panel width and height at the same time and pass that along to the native code. Only works on API 17+. Duplicates surface dimensions whenever it fails. Add Android_DeviceWidth/Android_DeviceHeight globals to native code. Disambiguate Android_ScreenWidth/Android_ScreenHeight -> Android_SurfaceWidth/Android_SurfaceHeight Use device width/height for all display mode settings.
Sam Lantinga 2dedbc72 2018-06-05T12:46:11 Add Android support for relative mouse mode to SDL.
Sam Lantinga f536fbea 2018-03-16T11:08:53 Reimplemented Android cursor API support using reflection so it builds with older SDKs
Sam Lantinga e20d4173 2018-03-15T18:22:48 Added Android custom cursor implementation This is commented out in SDLActivity.java, with the note #CURSORIMPLEENTATION because it requires API 24, which is higher than the minimum required SDK
Sam Lantinga 849d042f 2018-02-24T08:58:22 Fixed bug 4091 - Undefined references to Android audio functions when SDL_AUDIO_DISABLED is on Manuel Sabogal If SDL is compiled with the Audio subsystem disabled there are some undefined references to the functions ANDROIDAUDIO_ResumeDevices and ANDROIDAUDIO_PauseDevices in the file src/video/android/SDL_androidevents.c.
sezero 40b27fd5 2018-02-12T17:00:00 revert the recent typecast assignment changes (see bug #4079) also change the void* typedefs for the two vulkan function pointers added in vulkan_internal.h into generic function pointer typedefs.
Sam Lantinga 6e01fbb7 2018-02-11T18:23:37 On Android show the system UI when an SDL window is windowed, hide the system UI when it's fullscreen, like we do on iOS. We're increasing the Android SDK minimum version to API 19, this doesn't increase the minimum target API, which is API 14.
Sam Lantinga 90e72bf4 2018-01-30T18:08:34 Fixed ISO C99 compatibility SDL now builds with gcc 7.2 with the following command line options: -Wall -pedantic-errors -Wno-deprecated-declarations -Wno-overlength-strings --std=c99
Sam Lantinga e3cc5b2c 2018-01-03T10:03:25 Updated copyright for 2018
Sam Lantinga 4478707b 2017-10-31T13:49:59 Add SDL_GetDisplayDPI implementation on Android. (thanks Rachel!)
Sam Lantinga c8e3e0c4 2017-09-06T01:10:10 Fixed bug 3799 - SDL_CreateWindow fails with SDL_WINDOW_VULKAN (libvulkan.so.1 not found) Manuel Sabogal Android NDK defines Vulkan as libvulkan.so, not libvulkan.so.1. This is causing the program to not being able to create a window using SDL_WINDOW_VULKAN. To fix this issue just change the line http://hg.libsdl.org/SDL/file/bbaec41e93b5/src/video/android/SDL_androidvulkan.c#l53 from "libvulkan.so.1" to "libvulkan.so"
Sam Lantinga 50efbda7 2017-08-28T00:43:14 Fixed mingw Windows build, since SDL_vulkan_internal.h includes windows.h
Sam Lantinga 0d011ec6 2017-08-28T00:22:23 Renaming of guard header names to quiet -Wreserved-id-macro
Sam Lantinga ce2b1644 2017-08-28T00:11:38 Be clear that disabling Vulkan surface support disables the entire SDL Vulkan integration
Sam Lantinga 5cd1a959 2017-08-27T23:53:09 Fixed Android build with Vulkan support
Sam Lantinga 82ffabc8 2017-08-27T22:34:15 Fixed Android build
Ryan C. Gordon 25e3a1ec 2017-08-27T22:15:57 vulkan: Initial Vulkan support! This work was done by Jacob Lifshay and Mark Callow; I'm just merging it into revision control.
Sam Lantinga de91b124 2017-08-14T06:28:21 Fixed bug 3745 - specify SDLCALL as the calling convention for API callbacks Patches contributed by Ozkan Sezer
Sam Lantinga e54eede2 2017-08-13T21:05:15 Provide the correct state of the on-screen keyboard to the API (patch from Sylvain)
Sam Lantinga 6ee66139 2017-08-13T20:55:59 Fixed bug 3235 - Make the Android window creation similar to iOS' window creation Sylvain Here's a patch. It tries to get the hint first. Resizable will allow any orientation. Otherwise it uses width/height window. setOrientation method is splitted in static and non-static, so that it can be overloaded in a user subclass. Some artefact observed : surfaceChanged() can be called twice at the beginning. When the phone starts in portrait and run a landscape application.
Sam Lantinga c0862512 2017-08-12T12:24:59 Fixed bug 3128 - Removing all the static variables from android SDLActivity and accompanying JNI calls. owen I removed all the static variables from SDLActivity.java Updated all the SDL_android.c jni calls as well I added a new function to SDL_android.c/ h void Android_JNI_SeparateEventsHint(const char* c); This is called by SDL_androidtouch.c so that this TU doesn't need to call any JNI functions.
Sam Lantinga 78c84e70 2017-08-12T08:06:16 Fixed part of bug 3227 - patch for multiple buttons at the same time not working Philipp Wiesemann There is another problem with the current implementation which maybe should be fixed first (to prevent some work). It was written as if it would get the number of a button from the Java side but actually it gets the state of all buttons. That is why it should not work if more than one button is pressed at once.
Sam Lantinga 56363ebf 2017-08-02T10:22:48 Fixed bug 3690 - SDL2 KMS/DRM render context support Manuel The attached patch adds support for KMS/DRM context graphics. It builds with no problem on X86_64 GNU/Linux systems, provided the needed libraries are present, and on ARM GNU/Linux systems that have KMS/DRM support and a GLES2 implementation. Tested on Raspberry Pi: KMS/DRM is what the Raspberry Pi will use as default in the near future, once the propietary DispmanX API by Broadcom is overtaken by open graphics stack, it's possible to boot current Raspbian system in KMS mode by adding "dtoverlay=vc4-kms-v3d" to config.txt on Raspbian's boot partition. X86 systems use KMS right away in every current GNU/Linux system. Simple build instructions: $./autogen.sh $./configure --enable-video-kmsdrm $make
Sam Lantinga 2008d866 2017-07-20T10:46:38 Fixed bug 3703 - Missing media keys support on Amazon Fire TV remote control Holger Schemel Summary: This patch adds support for key events for the "rewind" and "fast forward" media keys on the Amazon Fire TV remote control. How to reproduce the problem: Run Android build of SDL2 application on the Amazon Fire TV (tested with "stick" version) and log key events. Expected behaviour: Every key pressed on the Fire TV remote control should result in a corresponding key event (pressed/released). Observed behaviour: Of the bottom row of buttons on the Fire TV remote control, only the "play/pause" (middle) button generates a key event, while the "rewind" (left) and "fast forward" (right) buttons to not generate any event at all. The attached patch adds support for these two missing buttons/keys. Note 1: Some missing definitions were added for the already existing key codes SDL_SCANCODE_APP1 and SDL_SCANCODE_APP2 (to keep up the correct order of enumerations / array positions when adding the two new key codes). Note 2: Definitions in "scancodes_linux.h" and "scancodes_xfree86.h" (to also add support for these keys on other platforms) were added without testing. However, I was unable to find corresponding definitions for these two media keys for Windows and Mac OS X. Note 3: I have also updated the (broken) link to the USB usage page standard PDF document (comment in "include/SDL_scancode.h").
Sam Lantinga ccf0566c 2017-05-16T06:30:39 SDL - add SDL_WINDOW_VULKAN and make Android_CreateWindow only create an EGLSurface when SDL_WINDOW_VULKAN is not present. This makes it so the ANativeWindow* can be used with vkCreateAndroidSurfaceKHR, otherwise it will fail because having both an EGLSurface and VkSurfaceKHR attached to a window is not allowed according to the Vulkan spec: "In particular, only one VkSurfaceKHR can exist at a time for a given window. Similarly, a native window cannot be used by both a VkSurfaceKHR and EGLSurface simultaneously" CR: SamL
Philipp Wiesemann 266816b4 2017-03-26T21:00:19 Removed newlines from error messages.
Sam Lantinga 22161480 2017-03-14T07:22:08 Compile fix for android. "ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]" Moving some variable declarations to the top of Android_SetScreenResolution()
Sam Lantinga 45b774e3 2017-01-01T18:33:28 Updated copyright for 2017
Sam Lantinga 97d05b0d 2016-12-09T05:12:27 Fixed a bunch of SwapWindow calls that needed their return value updated
Sam Lantinga 26f05ecb 2016-12-02T02:25:12 Fixed missing prototypes on Android, patch from Sylvain
Sam Lantinga f674f231 2016-10-07T15:21:19 Fixed bug 2808 - Fix SDL reporting wrong window size on resume Jonas Kulla At startup time, the single android window is assigned a "windowed" (window->windowed.{w,h}) size based on the current orientation of the mobile device; this size is never updated throughout the lifetime of the app. This becomes problematic when the app is paused and then resumed in an orientation that it did not start up in. Eventually, 'SDL_OnWindowRestored()' is called, which calls 'SDL_UpdateFullscreenMode()'. This function is very problematic because it is written with a desktop monitor in mind: it tries to find a matching display mode for the windowed size, doesn't find any, and finally applies the windowed size as the fullscreen one. In the end, the windowed size is reported in a RESIZED event, which doesn't correspond to the actual surface size. To see this in action: Start an orientation aware SDL app in eg. portrait mode, suspend the app, put the device into landscape orientation and resume the app. It will erroneously render in portrait mode (until the device is rotated again).
Magnus Bjerke Vik 555e6c96 2016-10-01T14:18:29 Fix SDL not resizing window when Android screen resolution changes
Philipp Wiesemann cf28727f 2016-08-30T21:14:52 Android: Fixed missing mouse motion events while button down (thanks, Sylvain!). Happened for real mouse if SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH was active. Fixes Bugzilla #3313.
Ryan C. Gordon 6f4bcd24 2016-08-11T22:22:09 audio: Renamed some internal driver symbols in various targets.
Philipp Wiesemann 495057b0 2016-07-09T22:06:00 Android: Added new key codes from API 24.
Philipp Wiesemann 8d035b1a 2016-01-12T22:23:00 Android: Added mouse initialization to reset state. If the app is launched again then the shared object may be reused (on Android).
Philipp Wiesemann 15603519 2016-01-11T20:02:48 Android: Added mapping of mouse forward button and mouse back button.
Ryan C. Gordon fa8c83c1 2016-01-03T06:50:50 Remove almost all instances of "volatile" keyword. As Tiffany pointed out in Bugzilla, volatile is not useful for thread safety: https://software.intel.com/en-us/blogs/2007/11/30/volatile-almost-useless-for-multi-threaded-programming/ Some of these volatiles didn't need to be, some were otherwise protected by spinlocks or mutexes, and some got moved over to SDL_atomic_t data, etc. Fixes Bugzilla #3220.
Sam Lantinga 42065e78 2016-01-02T10:10:34 Updated copyright to 2016
Philipp Wiesemann 86711041 2015-10-07T21:16:18 Android: Added new key codes without mapping.
Philipp Wiesemann 0e45984f 2015-06-21T17:33:46 Fixed crash if initialization of EGL failed but was tried again later. The internal function SDL_EGL_LoadLibrary() did not delete and remove a mostly uninitialized data structure if loading the library first failed. A later try to use EGL then skipped initialization and assumed it was previously successful because the data structure now already existed. This led to at least one crash in the internal function SDL_EGL_ChooseConfig() because a NULL pointer was dereferenced to make a call to eglBindAPI().
Philipp Wiesemann 551fbf7b 2015-05-31T19:22:42 Android: Changed two unknown keys to be consistent with Windows and X11 mapping.
Sam Lantinga 2c4a6ea0 2015-05-26T06:27:46 Updated the copyright year to 2015
Ryan C. Gordon b72938c8 2015-04-20T12:22:44 Windows: Always set the system timer resolution to 1ms by default. An existing hint lets apps that don't need the timer resolution changed avoid this, to save battery, etc, but this fixes several problems in timing, audio callbacks not firing fast enough, etc. Fixes Bugzilla #2944.
Alex Szpakowski fe6c797c 2015-04-10T23:30:31 Fixed an iOS view orientation issue when SDL_GL_CreateContext or SDL_CreateRenderer is called.
Philipp Wiesemann 458b94da 2015-04-08T22:18:10 Android: Fixed creating mouse coordinates which are not needed if hint is set.
Philipp Wiesemann b473d30f 2015-04-08T22:15:25 Android: Fixed not resetting mouse pointer state if hint was changed at runtime.
Ryan C. Gordon 0713c1e5 2015-04-05T15:52:37 Patched to compile on Android when audio subsystem is disabled (thanks, Jonas!) Fixes Bugzilla #2797.
Ryan C. Gordon 64237d7f 2015-04-01T14:45:09 Patched to compile on Android (I hope).
Ryan C. Gordon f9041771 2015-04-01T12:14:56 Android: more separate-mouse-and-touch work. This avoids a hint lookup for each mouse event we get by setting a static Java variable from native code during our hint watcher callback. Also attempts to do the right thing with mouse buttons if you happen to be on an API14 (Ice Cream Sandwich, Android 4.0) or later device. We still target API12 (Honeycomb MR1, Android 3.1) for SDL 2.0.4 though. This isn't tested, so I'm pushing to see what the Android buildbot says. Stand back, I'm a professional!
Ryan C. Gordon 1270247c 2015-03-25T10:59:10 Add a hint watch callback for SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH.
Ryan C. Gordon 83a44680 2015-03-25T10:48:59 Removed unnecessary SDL_log.h include.
Joseba Garc?a Etxebarria ca7b18e4 2015-03-24T21:02:28 * More Android patch work
Joseba Garc?a Etxebarria 387fa5dc 2015-03-24T20:45:29 * Improve mouse support in Android. These changes require Android API v12 to compile
Edward Rudd b88ca1b4 2015-02-10T16:28:56 the last parameter of XChangeProperty is the number of elements.. and when the element format is 32.. the element is "long" so we have 5 long elements here. Yes this seems confusing as on mac+linux Long is either 32 or 64bits depending on the architecture, but this is how the X11 protocol is defined. Thus 5 is the correct value for the nelts here. Not 5 or 10 depending on the architecture. More info on the confusion https://bugs.freedesktop.org/show_bug.cgi?id=16802
Philipp Wiesemann f4b7cf6e 2015-01-31T21:02:56 Fixed including SDL_config.h in implementation for Android. SDL_internal.h should be included to support dynamic API.
Philipp Wiesemann f64e6742 2015-01-26T22:12:38 Fixed memory leak in video quit implementation for Android.
Philipp Wiesemann b48e54aa 2015-01-26T22:00:29 Fixed bug 2802 - [patch] Fix android build compiling in wrong filesystem implementation Jonas Kulla The configure script didn't differentiate between Linux and Android, unconditionally compiling in the unix implementation of SDL_sysfilesystem.c. I'm probably one of the very few people building SDL for android using classic configure + standalone toolchain, so this has gone undetected all along.
Philipp Wiesemann a26a4e9e 2015-01-23T20:29:08 Fixed bug 2816 - [patch] Android: Expose screen refresh rate Jonas Kulla Display::getRefreshRate() is available on all API levels.
David Ludwig 70438be2 2014-12-03T10:55:23 WinRT: fixed bug whereby SDL would override an app's default orientation WinRT apps can set a default, preferred orientation via a .appxmanifest file. SDL was overriding this on app startup, and making the app use all possible orientations (landscape and portrait). Thanks to Eric Wing for the heads up on this!
Philipp Wiesemann 9c398852 2014-11-22T22:20:40 Corrected header file documentation comment.
Philipp Wiesemann d5d3721b 2014-10-24T19:50:29 Added new key codes from Android 4.4 (API 20) and 5.0 (API 21).
Gabriel Jacobo 79035b39 2014-10-20T10:10:39 Bug 2739 - [Android] No support for SDL_DisableScreenSaver by Martin Gerhardy
Gabriel Jacobo 47658057 2014-09-18T11:03:34 [Android] Better fix for #2480, pause/resume audio
Gabriel Jacobo 4544343b 2014-09-17T11:41:12 [Android] Fixes #2480, music does not pause when process backgrounded This modifies SDL_PauseAudio behavior to pause all audio devices instead of just the default one (required on Android, at least for testmultiaudio on my Nexus 4 which reported 2 audio devices). It also changes SDL_PauseAudioDevice to retain the device lock from pause until resume in order to save battery in mobile devices.
Sam Lantinga 5f39ea89 2014-09-13T02:15:18 Fixed bug 2415 - Message Boxes aren't implemented on Android Philipp Wiesemann I attached a patch for an incomplete implementation of the messagebox parts. It was not tested on lots of devices yet and features a very fragile workaround to block the calling SDL thread while the dialog is handled on Android's UI thread. Although it works for testmessage.c I assume there are lot of situations were it may fail (standby, device rotation and other changes). Also not all flags and colors are implemented. On the other hand most uses of the messagebox are to show an error on start and fragility (or working at all) may not matter there.
Pierre-Loup A. Griffais 24c86b55 2014-09-11T19:24:42 [X11] Reconcile logical keyboard state with physical state on FocusIn since the window system doesn't do it for us like other platforms. This prevents sticky keys and missed keys when going in and out of focus, for example Alt would appear to stick if switching away from an SDL app with Alt-Tab and had to be pressed again. CR: Sam
Gabriel Jacobo 1ed1f7f2 2014-06-28T12:36:44 Fixes #2611 #2610, Touch events cause crash on Android, thanks Alvin & Sylvain This bug was introduced on this rev: https://hg.libsdl.org/SDL/rev/42f6bd8c8575
Sam Lantinga ece2a9bf 2014-06-02T09:20:09 Hopefully really fixed the Android build
Sam Lantinga 5186be4a 2014-06-02T09:12:51 Fixed Android build
Sam Lantinga 32665131 2014-06-02T09:01:26 Added a way to get the native Android window and EGL context
Gabriel Jacobo 4bb6afef 2014-04-17T12:44:08 Comment out eglWaitGL from Android_GLES_SwapWindow Let's hope for the best! If anyone has a device affected by this removal, please file a bug!
David Ludwig 3dcb451f 2014-04-09T21:29:19 Added a README file regarding WinRT support To note, this file is currently formatted with CRLF line endings, rather than LF, to allow the file to be viewed with Notepad.
Gabriel Jacobo 1f92c9dc 2014-03-24T11:04:42 Emit SDL_RENDER_DEVICE_RESET on Android when the GLES context is recreated
Sam Lantinga 58edac3e 2014-02-02T00:53:27 Fixed bug 2374 - Update copyright for 2014... Is it that time already??
Gabriel Jacobo f848adff 2013-11-29T10:06:08 Improve Android pause/resume behavior.
Gabriel Jacobo 1ad0d248 2013-11-25T12:28:09 [Android] Fixes #2228, reworked touch code Lets Android take care of which is the primary pointer (the one acting as the mouse in SDL), reorganized the Java side code as well to make it easier to understand.
Ryan C. Gordon 7e1289af 2013-11-24T23:56:17 Make internal SDL sources include SDL_internal.h instead of SDL_config.h The new header will include SDL_config.h, but allows for other global stuff.
Gabriel Jacobo 61959aa6 2013-11-22T13:24:53 OpenGL ES support for Windows
Gabriel Jacobo 35915d4f 2013-11-14T20:14:02 Clean up the EGL related video backends (X11, Android, RPi)
Philipp Wiesemann aa337980 2013-11-10T14:50:37 Added a new unused key code from Android 4.4 (API 19).
Gabriel Jacobo 22770a8f 2013-11-06T11:23:24 [Android] Fixes Bug 2041 - can't get SDL_QUIT event... Thanks to Denis Bernard! Also, changed the Android manifest so the app doesn't quit with orientation changes, and made testgles.c exit properly on Android.
Gabriel Jacobo d0fddfab 2013-10-10T00:30:03 Fixes Bug 2134 - [Android] Black screen after resume (sometimes)
Philipp Wiesemann 0db36f51 2013-10-05T17:08:19 Added detection of touch devices before first touch events happen on Android. On Android available touch devices are now added with video initialization (like the keyboard). This fixes SDL_GetNumTouchDevices() returning 0 before any touch events happened although there is a touch screen available. The adding of touch devices after a touch event was received is still active to allow connecting devices later (if this is possible) and to provide a fallback if the new init did not work somehow. For the implementation JNI was used and API level 9 is required. There seems to be nothing in the Android NDK's input header (input.h) to implement everything on C side without communication with Java side.
Gabriel Jacobo eec4710c 2013-08-29T14:03:44 Fixes bug #2074 - Thanks Sylvain! SDL_syssem.c:159 comparison of unsigned expression >= 0 is always true Solved by comparing unsigneds directly SDL_systimer.c:164: warning: control may reach end of Compile Solved by returning the default value if all else fails. SDL_androidgl.c:41:1: warning: type specifier missing, defaults to 'int' SDL_androidgl.c:47:1: warning: control reaches end of non-void function Solved by adding void return type to the function implementation
Gabriel Jacobo 695344d1 2013-08-21T09:43:09 OCD fixes: Adds a space before */
Gabriel Jacobo 0eeb76d8 2013-08-19T16:29:46 Fixes bug #2037, common EGL code for Android and X11
Gabriel Jacobo dad42067 2013-08-12T11:13:50 Fixes #2022, do not resume on Android when surfaceChanged If the app is in landscape mode and the user presses the power button, a pause is followed immediately by a surfaceChanged event because the lock screen is shown in portrait mode. This triggers a "false" resume. So, we just pause and resume following the onWindowFocusChanged events. Also, wait for SDL_APP_WILLENTERBACKGROUND and SDL_APP_DIDENTERBACKGROUND before blocking the event pump.
Sam Lantinga 1ad936eb 2013-08-11T19:56:43 Fixed bug 2027 - Full-screen appears to be broken - hang in SDL_DestroyWindow() Rainer Deyke I'm running Linux Mint 15 with the Cinnamon window manager. SDL_DestroyWindow consistently locks up for me when the window if fullscreen.