Francesco Abbate 0dd7024d55 Modifies WaitEvent and WaitEventTimeout to actually wait instead of polling
When possible use native os functions to make a blocking call waiting for
an incoming event. Previous behavior was to continuously poll the event
queue with a small delay between each poll.

The blocking call uses a new optional video driver event,
WaitEventTimeout, if available. It is called only if an window
already shown is available. If present the window is designated
using the variable wakeup_window to receive a wakeup event if
needed.

The WaitEventTimeout function accept a timeout parameter. If
positive the call will wait for an event or return if the timeout
expired without any event. If the timeout is zero it will
implement a polling behavior. If the timeout is negative the
function will block indefinetely waiting for an event.

To let the main thread sees events sent form a different thread
a "wake-up" signal is sent to the main thread if the main thread
is in a blocking state. The wake-up event is sent to the designated
wakeup_window if present.

The wake-up event is sent only if the PushEvent call is coming
from a different thread. Before sending the wake-up event
the ID of the thread making the blocking call is saved using the
variable blocking_thread_id and it is compared to the current
thread's id to decide if the wake-up event should be sent.

Two new optional video device methods are introduced:

WaitEventTimeout
SendWakeupEvent

in addition the mutex

wakeup_lock

which is defined and initialized but only for the drivers supporting the
methods above.

If the methods are not present the system behaves as previously
performing a periodic polling of the events queue.

The blocking call is disabled if a joystick or sensor is detected
and falls back to previous behavior.
2021-06-04 13:50:50 -07:00
..
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-05-15 00:22:50 +03:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-05-15 00:22:50 +03:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-03-29 09:01:26 -07:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-03-29 09:01:26 -07:00
2021-01-02 10:25:38 -08:00
2021-03-29 09:01:26 -07:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-03-29 09:01:26 -07:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-03-29 09:01:26 -07:00
2021-02-11 14:20:01 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00
2021-01-02 10:25:38 -08:00

These are test programs for the SDL library:

	checkkeys	Watch the key events to check the keyboard
	loopwave	Audio test -- loop playing a WAV file
	loopwavequeue	Audio test -- loop playing a WAV file with SDL_QueueAudio
	testaudioinfo	Lists audio device capabilities
	testerror	Tests multi-threaded error handling
	testfile	Tests RWops layer
	testgl2		A very simple example of using OpenGL with SDL
	testiconv	Tests international string conversion
	testjoystick	List joysticks and watch joystick events
	testkeys	List the available keyboard keys
	testloadso	Tests the loadable library layer
	testlocale  Test Locale API
	testlock	Hacked up test of multi-threading and locking
	testmultiaudio	Tests using several audio devices
	testoverlay2	Tests the overlay flickering/scaling during playback.
	testplatform	Tests types, endianness and cpu capabilities
	testsem		Tests SDL's semaphore implementation
	testshape	Tests shaped windows
	testsprite2	Example of fast sprite movement on the screen
	testthread	Hacked up test of multi-threading
	testtimer	Test the timer facilities
	testver		Check the version and dynamic loading and endianness
	testwm2		Test window manager -- title, icon, events
	torturethread	Simple test for thread creation/destruction
	controllermap   Useful to generate Game Controller API compatible maps



This directory contains sample.wav, which is a sample from Will Provost's
song, The Living Proof:

     From the album The Living Proof
     Publisher: 5 Guys Named Will
     Copyright 1996 Will Provost

You can get a copy of the full song (and album!) from iTunes...

    https://itunes.apple.com/us/album/the-living-proof/id4153978

or Amazon...

    http://www.amazon.com/The-Living-Proof-Will-Provost/dp/B00004R8RH

Thanks to Will for permitting us to distribute this sample with SDL!