Add multi-mouse support for X11, by using XInput2 extensions. Only
master pointers are considered as mice.
New behavior put behind HAVE_XI2 and configure script extended with
necessary detection.
Check network fd/socket validity using INVALID_SOCKET on Windows
(requiring conditional winsock2.h include) and < 0 otherwise.
Fixes -Wsign-compare warning.
- Ensure other touchscreen input is blocked when overlay buttons pressed
- Limit physical+overlay mouse input to iOS for now
- Reset overlay mouse deltas when there is no touch input
- Disable touch mouse in android_input.c for now. Too buggy
The keyboard support for linuxraw driver was a bit spotty. Extended
with missing keyboard query, callback, and a few fixes against
over-indexing the status array.
* Actually read CLI args in emscripten
* Fix fetchfs manifest parsing, increase download chunk size
The chunk size should probably be made a parameter in the future. The
larger chunk size trades longer hitches for fewer hitches.
* Add exec command driver and API functions for emscripten.
Under WASMFS, stdin/stdout can't be customized the way they can with
the JS FS implementation. Also, this approach frees up stdin/stdout
and simplifies interaction with the command interface for web embedders.
* fixup upload paths, show use of new emscripten cmd interface
* Add JS library function names to EXPORTS as well as EXPORTED_FUNCTIONS for older emsdk versions
* workerized RA
* Workerized (non-async) web player, using OPFS
This patch eliminates the need for asyncify and uses modern filesystem
APIs instead of the deprecated, unmaintained BrowserFS.
This is a WIP patch because it won't fully work until these two
Emscripten PRs land and are released:
https://github.com/emscripten-core/emscripten/pull/23518https://github.com/emscripten-core/emscripten/pull/23021
The former fixes an offscreen canvas context recreation bug, and the
latter adds an equivalent to BrowserFS's XHR filesystem (but without
the hazardous running-XHR-on-the-main-thread problem).
The biggest issue is that local storage of users who were using the
old version of the webplayer will be gone when they switch to the new
webplayer. I don't have a good story for converting the old BrowserFS
IDBFS contents into the new OPFS filesystem (the move is worth doing
because OPFS supports seeking and reading only bits of a file, and
because BrowserFS is dead).
I've kept around the old libretro webplayer under
pkg/emscripten/libretro-classic, and with these make flags you can
build a non-workerized RA that uses asyncify to sleep as before:
make -f Makefile.emscripten libretro=$CORE HAVE_WORKER=0 HAVE_WASMFS=0 PTHREAD=0 HAVE_AL=1
I also moved the default directory for core content on emscripten to
not be a subdirectory of the local filesystem mount, because it's
confusing to have a subdirectory that's lazily fetched and not
mirrored to the local storage. I think it won't impact existing users
of the classic web player because they already have a retroarch.cfg in
place.
* Get fetchfs working without manifest support
* makefile fixes
* fix scaling, remove zip dependency
* Support asset/cheats/etc downloaders for emscripten
- Add http transfer support for emscripten
- At the task_http level, not the net_http level --- so no netplay
or webdav.
- Change default paths to be more like other platforms
- Gives us smaller bundles and a faster boot time
- Had to work around a task queue bug on Emscripten
- I made the smallest possible change to do it, but it may be better
to fix in rthread.c
* Load an emscripten file_packager package on first run
If no ozone assets are present, load a libretro_minimal package
created using Emscripten's built-in file packager.
* updated readme, removed indexer from wasmfs libretro-web
* Put back zip dependency, load asset bundle into opfs on first run
* fix upload path
* Remove unused function
* easy testing setup for two multithreaded conditions
1. make PROXY_TO_PTHREAD=1 (slower)
2. make PROXY_TO_PTHREAD=0 (bad audio, because doesn't sleep in
openal.c)
* Remove condition on sleep in openal
also make input_driver check existence of drv->axis, drv->button
before calling them.
* Fix resizing under EGL
* Don't force config file path on emscripten
* Add time.h include to netplay, default HAVE_NETPLAYDISCOVERY to 0
* Remove nearly all proxied joypad calls under emscripten
* Fix file uploads under firefox
* Fix safari API uses, but Safari still hangs in OPFS filesystem mount
I think this can be fixed by moving the backend creation off the main
thread.
* Move filesystem init into emscripten C entry point
* Setup filesystems off of main thread
* re-set default player to async
Also improve Safari compatibility under proxy-to-pthread condition
* Safari upload file fixes
* Remove some excess prints
* Fix typo