src/video/emscripten

Branch


Log

Author Commit Date CI Message
Ryan C. Gordon b93a8a86 2023-09-20T14:32:41 emscripten: Restore compatibility with existing emsdk releases. (cherry picked from commit 5008521538ffe7931ecd0d11c4a5e75a05f54b5b)
Jaswant Panchumarti 536f625b 2023-09-19T10:45:50 Use EM_ASM_PTR when the return value is a pointer - closes https://github.com/libsdl-org/SDL/issues/8241 (cherry picked from commit 953b55dd6da1dd9fb937f3c67a18c5cab2988599)
Sam Clegg 7d80e208 2023-07-05T13:52:37 emscripten: Add JS library dependencies using EM_JS_DEPS macro See https://github.com/emscripten-core/emscripten/pull/19780 (cherry picked from commit 042243471fb7ecf6ba5e53f0ba35e825a8bb066a)
Eric Wasylishen 76392f4f 2023-01-11T19:45:01 Handle DPI scaling in SDL_GetWindowSurface Fixes DPI awareness of testdrawchessboard (previously, the surface was being created in points instead of pixels, resulting in the demo app only drawing in a corner of the screen on High-DPI displays) *_CreateWindowFramebuffer()/*_UpdateWindowFramebuffer(): are updated to use SDL_GetWindowSizeInPixels instead of SDL_GetWindowSize() or window->w/window->h. Most of the _CreateWindowFramebuffer backends are untested except for Windows. Fixes #7047 (cherry picked from commit 67c91353e01f6f2c0cc80c17eeddbad6def7cb01)
Sam Lantinga 3f1fd5ab 2023-05-23T10:59:03 Updated source to match SDL function prototype style
valid-ptr 424bc4bc 2023-05-17T20:07:22 SDL emscripten port: preventDefault should not be called on mousedown. Otherwise mouseup will not be fired outside iframe in Chrome-based browsers
Sam Lantinga 0479df53 2023-01-09T09:48:21 Updated copyright for 2023
Sam Lantinga b8d85c69 2022-11-30T12:51:59 Update for SDL3 coding style (#6717) I updated .clang-format and ran clang-format 14 over the src and test directories to standardize the code base. In general I let clang-format have it's way, and added markup to prevent formatting of code that would break or be completely unreadable if formatted. The script I ran for the src directory is added as build-scripts/clang-format-src.sh This fixes: #6592 #6593 #6594 (cherry picked from commit 5750bcb174300011b91d1de20edb288fcca70f8c)
Sylvain Becker fb0ce375 2022-11-27T17:38:43 Cleanup add brace (#6545) * Add braces after if conditions * More add braces after if conditions * Add braces after while() conditions * Fix compilation because of macro being modified * Add braces to for loop * Add braces after if/goto * Move comments up * Remove extra () in the 'return ...;' statements * More remove extra () in the 'return ...;' statements * More remove extra () in the 'return ...;' statements after merge * Fix inconsistent patterns are xxx == NULL vs !xxx * More "{}" for "if() break;" and "if() continue;" * More "{}" after if() short statement * More "{}" after "if () return;" statement * More fix inconsistent patterns are xxx == NULL vs !xxx * Revert some modificaion on SDL_RLEaccel.c * SDL_RLEaccel: no short statement * Cleanup 'if' where the bracket is in a new line * Cleanup 'while' where the bracket is in a new line * Cleanup 'for' where the bracket is in a new line * Cleanup 'else' where the bracket is in a new line (cherry picked from commit 6a2200823c66e53bd3cda4a25f0206b834392652 to reduce conflicts merging between SDL2 and SDL3)
Ryan C. Gordon b9e1d1b4 2022-10-09T19:49:34 events: Rename SDL_SendKeyboardKeyComplete to SDL_SendKeyboardKeyAndKeycode.+
Ryan C. Gordon 92215481 2022-10-09T19:33:52 emscripten: Make an attempt at correct keyboard scancode/keycodes. This uses a newer browser API to get physical scancodes, but still uses the (deprecated) event field that we were already using for scancodes, but for keycodes instead now, which appears to be more accurate. Since keyboard layout isn't (generally) available to web apps, this adds an internal interface to send key events with both scancode and keycode to SDL's internals, instead of sending just scancodes and expecting SDL to use its own keymap to generate keycodes. Future work in this area would be to use the keyboard layout APIs on browsers that support them, which would allow us to use SDL's usual keymap code and not rely on a deprecated browser API, but until we get there, this patch gives significantly more correct results than we would have before. Fixes #2098.
Noel Berry 00452e47 2022-08-24T11:25:13 Adding SDL_GetWindowSizeInPixels for window size in pixels (#6112)
Ryan C. Gordon 20a76b0e 2022-07-25T23:06:58 video: removed unused devindex argument from bootstrap's create method.
Charlie Birks 0fcfaf9e 2022-06-08T14:20:50 emscripten: use MAIN_THREAD_EM_ASM for the fb/cursor proxying This is how everything else was handled and fixes undefined symbol errors in non-threads builds.
Ryan C. Gordon ea7d5307 2022-03-31T14:11:52 emscripten: Proxy SDL_GetUsableDisplayBounds to the main thread.
Reinhold Gschweicher fe79eb2f 2022-02-26T20:46:52 emscriptenframebuffer: fix formatting
Reinhold Gschweicher 268cc2a4 2022-02-26T20:42:54 emscriptenmouse: remove useless return statement
NeroBurner 3136a530 2022-02-25T14:26:23 fix formatting and cast warnings Co-authored-by: Charlie Birks <charlie@daftgames.net>
Reinhold Gschweicher 40415859 2022-02-25T00:12:33 emscriptenmouse: remove old extra `_INT`
Reinhold Gschweicher 4dca8f7f 2022-02-24T21:09:03 SDL2 thread proxying fixes This PR uses new APIs added in [emscripten-core/emscripten#9336](https://github.com/emscripten-core/emscripten/pull/9336) to improve compatibility with USE_PTHREADS=1. Original PR: https://github.com/emscripten-ports/SDL2/pull/127 By: @jakogut Reviewed by: Daft-Freak
Charlie Birks 9de97e19 2020-12-01T12:46:59 emscripten: Don't prevent default on filtered key events
Mahyar Koshkouei 41e7d1ba 2022-03-06T23:02:57 Add SDL_GetDisplayDPI implementation on Emscripten Signed-off-by: Mahyar Koshkouei <mk@deltabeard.com>
Sam Lantinga 120c76c8 2022-01-03T09:40:00 Updated copyright for 2022
Sylvain d31251b0 2021-11-21T22:30:48 use SDL's functions version inplace of libc version
Thomas Ballinger 94c1276a 2021-11-07T20:49:32 emscripten: Decrease vertical scroll speed by using deltaMode Reference issue #4623.
Jānis Rūcis 454943cf 2021-04-11T16:44:48 emscripten: Don't flag window fullscreen on external requests Also, the condition was always true.
Joseph Kogut 55af8dca 2019-02-27T14:16:37 emscripten: use emscripten_set_window_title api
Joseph Kogut d8baad7e 2019-02-27T14:15:40 emscripten: use emscripten_get_screen_size api
Charlie Birks abc04270 2020-04-15T15:22:39 emscripten: Fix framebuffer array creation optimisation
Charlie Birks b4f11a36 2020-04-15T14:48:52 emscripten: Drop commented out code from the dummy driver
Stephan Vedder fa367cdd 2020-11-24T10:56:50 emscripten: Fix alt key being a nav key
Charlie Birks edaf3f9c 2020-04-21T15:02:06 emscripten: Extend the "nav key" blacklist Add the F keys and Ctrl/Alt+*. Consistent with other naviagtion disabling. Also, none of these generate keypress events anyway.
Cameron Gutman a0d3c6c6 2021-01-25T21:42:14 Rename SetWindowGrab() to SetWindowMouseGrab()
Sam Lantinga 9130f7c3 2021-01-02T10:25:38 Updated copyright for 2021
Sam Lantinga cb361896 2020-12-09T07:16:22 Fixed bug 5235 - All internal sources should include SDL_assert.h Ryan C. Gordon We should really stick this in SDL_internal.h or something so it's always available.
M Stoeckl 052a1373 2020-07-12T19:11:15 Merge VideoBootStrap::available into VideoBootStrap::create The two are only ever called together, and combining them makes it possible to eliminate redundant symbol loading and redundant attempts to connect to a display server.
Sylvain Beucler e594a673 2020-06-27T16:25:47 emscripten: Introduce SDL_HINT_EMSCRIPTEN_ASYNCIFY See https://github.com/emscripten-core/emscripten/issues/10746 and https://github.com/emscripten-ports/SDL2/pull/112 Fixes Bugzilla #4997.
Sylvain Beucler 01af7b02 2020-06-27T16:22:50 emscripten: support pseudo-synchronous screen refresh and events update using asyncify
Ryan C. Gordon daf360e0 2020-05-13T16:48:42 emscripten: Fix crash in SDL_SetWindowTitle(). This patch came from emscripten-ports, thanks! Fixes Bugzilla #5133.
Charlie Birks 258d4106 2020-04-09T15:57:12 emscripten: Add a few keyCode mappings for German keyboards From @sy2002 in https://github.com/emscripten-ports/SDL2/issues/108
Charlie Birks babf010c 2020-04-09T15:01:47 emscripten: Pass canvas id to request_pointer_lock Fixes pointer lock with DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1
Daid 287772f5 2020-04-09T15:01:45 emscripten: Let SDL_GetDisplayUsableBounds return the size of the window This does not account for scrollbars nor margins. But is much better then returning the full display size when not running fullscreen, but for example in an iframe.
Daid fb3df3a1 2020-04-09T15:01:41 emscripten: Fix the reported keys for the numpad. See https://github.com/emscripten-ports/SDL2/issues/94
Sylvain Beucler 44716b02 2020-04-09T15:01:37 emscripten: Send SDL_APP_TERMINATING before unload (#88)
Beuc 0380cbd7 2020-04-09T15:01:32 emscripten: Typo
Ryan C. Gordon 8641f6e9 2020-04-07T14:03:13 emscripten: support KaiOS's Left Soft Key and Right Soft Key (thanks, pelya!). Fixes Bugzilla #5027.
Sam Lantinga 2a91f682 2020-03-03T17:56:33 Fixed bug 5012 - KaiOS keycodes support pelya KaiOS is an OS for feature phones, with numeric keypad and non-touch screen, and typically 512 Mb RAM and 4 Gb flash. It is based on Firefox OS, all apps are made with HTML5 and Javascript. SDL can be cross-compiled using emscripten and packaged as native app. This patch adds support for star '*' and pound '#' keys on such phones to generate SDL events.
Sam Lantinga a8780c6a 2020-01-16T20:49:25 Updated copyright date for 2020
Alex Szpakowski d5ec735a 2019-08-01T18:22:12 Add a windowID field to SDL_TouchFingerEvent (bug #4331). This is unimplemented on some platforms and will cause compile errors when building those platform backends for now.
Ryan C. Gordon ba0fc92d 2019-05-11T12:41:21 Patched to compile.
Charlie Birks 6eb05211 2019-05-09T12:09:45 Emscripten: Use EMSCRIPTEN_EVENT_TARGET_*
Charlie Birks 4e5b5cba 2019-05-09T12:09:40 Emscripten: Switch from canvas[XY] to target[XY] Allows mouse/touch events to work on non-default canvases
Charlie Birks 60c48ed7 2019-05-09T12:09:34 Emscripten: Store canvas id in WindowData Also replace all hardcoded uses of "#canvas" or NULL
Sylvain Becker b45abbb2 2019-04-02T17:57:27 Bug 4576: fix warning and compile
Sylvain Becker b086edc9 2019-04-02T17:10:29 Bug 4576: remove touch/mouse duplication for Emscripten
Sebastian Krzyszkowiak 6311c7cf 2019-03-16T19:08:59 emscripten: force resize event when pixel ratio changes Without this, applications can't react to changed canvas size on window zoom.
Charlie Birks 6d89a7bc 2019-01-29T12:19:32 Emscripten: remove GLES_DeleteContext implementation It was calling glClear without a context. The issue it was trying to solve was actually that after destroying a window and creating a new one , the contents of the old window were preserved. This no longer happens since we resize the window to nothing on destroy.
Charlie Birks 04b1494c 2019-01-29T12:19:23 Emscripten: resize canvas to 0x0 in DestroyWindow Closest we can get to actually destroying it
Charlie Birks d60546aa 2019-01-29T12:19:06 Emscripten: don't zero the display mode before adding it
Charlie Birks 4a2888af 2019-01-29T12:19:03 Emscripten: use UTF8ToString instead of Pointer_stringify
Charlie Birks 8dab9c95 2019-01-29T12:18:56 Emscripten: Use set_canvas_element_size This will be needed for supporting multiple canvases and set_canvas_size is deprecated anyway.
kichikuou ed66a430 2019-01-29T12:14:54 Emscripten: Do not consume mouseup event outside of the canvas
Sylvain Beucler 2838abb5 2019-01-29T12:14:44 Emscripten: fix duplicate mousebuttonup/mousebuttondown events when touch events are disabled
Charlie Birks 1767d091 2019-01-29T12:14:41 Emscripten: use a fake size for external sizing check The check would fail if the canvas happened to be the correct size already. (#66, mentioned in #58)
Charlie Birks 80d690a2 2019-01-29T12:14:33 Emscripten: reset fullscreen_window when leaving fullscreen If the browser left fullscreen mode by the user pressing ESC, the next call to SDL_SetWindowFullscreen(1) will fail as it thinks the window is already fullscreen. (#65)
Sam Lantinga 5e13087b 2019-01-04T22:01:14 Updated copyright for 2019
Alex Szpakowski 5029d50e 2018-11-10T16:15:48 Add SDL_TouchDeviceType enum and SDL_GetTouchDeviceType(SDL_TouchID id). Touch device types include SDL_TOUCH_DEVICE_DIRECT (a touch screen with window-relative coordinates for touches), SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE (a trackpad-style device with absolute device coordinates), and SDL_TOUCH_DEVICE_INDIRECT_RELATIVE (a trackpad-style device with screen cursor-relative coordinates). Phone screens are an example of a direct device type. Mac trackpads are the indirect-absolute touch device type. The Apple TV remote is an indirect-relative touch device type.
Charlie Birks cd63709e 2018-10-13T17:18:59 Emscripten: Load eglQueryString and eglGetError This prevents an assertion on context creation failure (calling a null function pointer).
Ryan Speets aeea6b9b 2018-08-18T12:30:04 Emscripten: Fixed SDL_SYSTEM_CURSOR_SIZEALL
Sam Lantinga e3cc5b2c 2018-01-03T10:03:25 Updated copyright for 2018
Johannes Bader 17243133 2017-11-04T11:16:49 Emscripten: use cursor hotspot the cursor's hotspot simply wasn't translated to it's CSS equivalent, yet see https://developer.mozilla.org/en-US/docs/Web/CSS/cursor?v=example#Syntax. no explicit hotspot if (0|0) for compatibility with Edge and IE, which indeed don't support custom hot spots
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 a4cfa936 2017-08-14T21:28:04 Fixed bug 2293 - Precise scrolling events Martijn Courteaux I implemented precise scrolling events. I have been through all the folders in /src/video/[platform] to implement where possible. This works on OS X, but I can't speak for others. Build farm will figure that out, I guess. I think this patch should introduce precise scrolling on OS X, Wayland, Mir, Windows, Android, Nacl, Windows RT. The way I provide precise scrolling events is by adding two float fields to the SDL_MouseWheelScrollEvent datastructure, called "preciseX" and "preciseY". The old integer fields "x" and "y" are still present. The idea is that every platform specific code normalises the scroll amounts and forwards them to the SDL_SendMouseWheel function. It is this function that will now accumulate these (using a static variable, as I have seen how it was implemented in the Windows specific code) and once we hit a unit size, set the traditional integer "x" and "y" fields. I believe this is pretty solid way of doing it, although I'm not the expert here. There is also a fix in the patch for a typo recently introduced, that might need to be taken away by the time anybody merges this in. There is also a file in Nacl which I have stripped a horrible amount of trailing whitespaces. (Leave that part out if you want).
Philipp Wiesemann 711df8a9 2017-08-05T22:10:48 emscripten: Fixed compiling without OpenGL support.
Ryan C. Gordon 599d9ba1 2017-06-05T21:30:25 emscripten: listen for pointerlockchange events on the #document specifically.
Philipp Wiesemann 75931972 2017-05-26T22:45:40 emscripten: Fixed compiling on C89 compilers.
Charlie Birks 126e5a1d 2017-05-24T14:04:39 Emscripten: Prevent default on arrow keys
Patrick Monaghan f839b209 2017-05-24T14:04:25 Emscripten: fixed incorrect conversion of touch motion events to mouse motion events
Philipp Wiesemann bf8ccf08 2017-05-19T23:30:59 Removed redundant mouse clean up on quit for some platforms. SDL_MouseQuit() already frees cursors and sets fields to NULL.
Philipp Wiesemann 29222db7 2017-05-13T23:00:35 emscripten: Fixed not removing pointer lock event callback.
Philipp Wiesemann cc5b4f45 2017-05-12T23:01:17 emscripten: Changed internal functions to be static.
Philipp Wiesemann 34d9c521 2017-05-06T21:45:43 emscripten: Fixed return type in event callback declaration.
Ryan C. Gordon 93a6191c 2017-04-20T13:00:54 emscripten: keep track of pointer lock losses and maybe regrab pointer later. If an Emscripten app is in relative mouse mode and the user presses Escape (or whatever is appropriate), then the pointer lock is broken by the browser. This keeps track of those losses, and next time the user presses a mouse button down on the canvas, if the app is still meant to be in relative mouse mode, we will attempt to regrab the pointer. This makes it much more seamless for things like first-person shooters, and the app doesn't need any manual intervention.
Charlie Birks 0d647d35 2017-02-17T10:13:17 Emscripten: implement custom cursors
Charlie Birks 33bddcfd 2017-02-17T10:13:12 Emscripten: refactor cursor handling
Charlie Birks 613955b4 2017-02-17T10:13:07 Emscripten: only update pixel ratio if HiDPI is enabled
Sam Lantinga 67ed8943 2017-01-01T19:10:36 Fixed bug 3529 - SDL_EGL_UnloadLibrary is not called at all on SDL_Quit kaisyu In case of OpenGLES, the sequences of loading and unloading driver library should be like that: SDL_Init ... SDL_GL_LoadLibrary SDL_EGL_LoadLibrary ... SDL_Quit ... SDL_GL_UnloadLibrary SDL_EGL_UnloadLibrary ... However, according to my test results, the varible '_this->gl_config.driver_loaded' does not allow 'SDL_GL_UnloadLibrary' to call 'SDL_EGL_UnloadLibrary'.
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
Ryan C. Gordon 232ae688 2016-11-23T17:20:28 Still more compiler warning fixes for various platforms.
Philipp Wiesemann c3451262 2016-11-18T00:05:28 Emscripten: Fixed handling of deactivated mouse events. SDL_GetEventState() was called with a button state instead of an event type.
Csongor Szabo 01f62736 2016-10-14T17:06:28 emscripten: check if device pixel ratio has changed
Sam Lantinga 00791f3a 2016-09-13T00:09:21 Only prevent the default browser event handling when the specific event types aren't disabled by the user, patch contributed by Jonas Platte
Charlie Birks 993dd835 2016-09-13T00:04:00 Add mapping for media keys
Alon Zakai 1b6565fc 2016-09-13T00:03:59 use Module.createContext for 2D rendering in emscripten
Alon Zakai bec55734 2016-09-13T00:03:58 add some detail to fullscreen workaround comment; version 6 Conflicts: version.txt
Charlie Birks 405d64b2 2016-09-13T00:03:56 only unset fullscreen flags if fullscreen failed
Charlie Birks c68cac89 2016-09-13T00:03:55 use screen resolution instead of canvas size
Boris Gjenero 791b946a 2016-09-13T00:03:54 Fix full screen mode in Firefox, which was broken by 9d4beb2