ALooper_pollAll was obsoleted since NDK 27 and resulted in
renderdoccmd_android.cpp:526:8: error: 'ALooper_pollAll' is
unavailable: obsoleted in Android 1 - ALooper_pollAll may ignore
wakes. Use ALooper_pollOnce instead. See The API documentation for
more information
Since we poll from within a loop, we can replace it by ALooper_pollOnce
directly. But to be on the safe side, do this only on NDK 27+.
* In a previous update in 2021 many copyright ranges were truncated
accidentally, and some files have been copy-pasted with wrong years. These
dates have been fixed based on git history and original copyright messages.
The screen doesn't refresh when changing between captures during replay on remote Android device because it fails to display the splash screen and the new preview window.
* This helps on android where we might fail to create the preview window
if our app isn't in the front, but we still want to let the base loop
know that we're done previewing and let it go back to the generic
splash screen.
* If we destroy them at the end of android_main we might destroy them
while the thread is running and cause incorrect code flows where we
try to join and restart the thread while it's blocking.
* Don't get me started on why android_main exits when you get alt-tabbed
away from...
* APP_CMD_INIT_WINDOW can be called when the application hasn't fully
shutdown, and the thread is still running. Hold a lock while we're
inside renderdoccmd() so that we know if the thread has exited or not.
* This would be easier if android had pthread_tryjoin_np()...
* The functions are still exported and that's all renderdocui cares for.
* The interface is no longer to be used so gets in the way of the
generated SWIG bindings.
* This gives a little nicer syntax, a bit better type safety, and also
reflects better for SWIG bindings. Overall it's a minor change but
better.
* We don't update the C# UI at all, since it's soon to be removed and
not worth the effort/code churn.
* For now so we're ABI compatible with C#, all enums are uint32_t, but
that is an obvious optimisation in future to reduce struct packing.
* We avoid 'None' as an enum value, because it's a reserved word in
python so will cause problems generating bindings.
* This is primarily for vulkan, which supports either xlib or xcb (and
not necessarily both). GL still only supports xlib, windows and
android only support one system regardless of API.
* This should also support xlib again for fetching keystates etc.