Files
SDL/test
Frank Praznik 4fd778119b video: Implement asynchronous windowing
SDL window size, state, and position functions have been considered immediate, with their effects assuming to have taken effect upon successful return of the function. However, several windowing systems handle these requests asynchronously, resulting in the functions blocking until the changes have taken effect, potentially for long periods of time. Additionally, some windowing systems treat these as requests, and can potentially deny or fulfill the request in a manner differently than the application expects, such as not allowing a window to be positioned or sized beyond desktop borders, prohibiting fullscreen, and so on.

With these changes, applications can make requests of the window manager that do not block, with the understanding that an associated event will be sent if the request is fulfilled. Currently, size, position, maximize, minimize, and fullscreen calls are handled as asynchronous requests, with events being returned if the request is honored. If the application requires that the change take effect immediately, it can call the new SDL_SyncWindow function, which will attempt to block until the request is fulfilled, or some arbitrary timeout period elapses, the duration of which depends not only on the windowing system, but on the operation requested as well (e.g. a 100ms timeout is fine for most X11 events, but maximizing a window can take considerably longer for some reason). There is also a new hint 'SDL_VIDEO_SYNC_ALL_WINDOW_OPS' that will mimic the old behavior by synchronizing after every window operation with, again, the understanding that using this may result in the associated calls blocking for a relatively long period.

The deferred model also results in the window size and position getters not reporting false coordinates anymore, as they only forward what the window manager reports vs allowing applications to set arbitrary values, and fullscreen enter/leave events that were initiated via the window manager update the window state appropriately, where they didn't before.

Care was taken to ensure that order of operations is maintained, and that requests are not ignored or dropped. This does require some implicit internal synchronization in the various backends if many requests are made in a short period, as some state and behavior depends on other bits of state that need to be known at that particular point in time, but this isn't something that typical applications will hit, unless they are sending a lot of window state in a short time as the tests do.

The automated tests developed to test the previous behavior also resulted in previously undefined behavior being defined and normalized across platforms, particularly when it comes to the sizing and positioning of windows when they are in a fixed-size state, such as maximized or fullscreen. Size and position requests made when the window is not in a movable or resizable state will be deferred until it can be applied, so no requests are lost. These changes fix another long-standing issue with renderers recreating maximized windows, where the original non-maximized size was lost, resulting in the window being restored to the wrong size. All automated video tests pass across all platforms.

Overall, the "make a request/get an event" model better reflects how most windowing systems work, and some backends avoid spending significant time blocking while waiting for operations to complete.
2023-12-07 10:26:19 -08:00
..
2022-10-10 08:50:59 -07:00
2023-08-12 17:37:52 +02:00
2023-08-02 15:02:32 -04:00
2023-11-09 14:18:36 -08:00
2023-08-02 15:02:32 -04:00
2023-11-09 14:18:36 -08:00
2022-12-15 08:01:01 -08:00
2023-08-02 15:02:32 -04:00
2023-08-02 15:02:32 -04:00
2023-08-02 15:02:32 -04:00
2023-11-09 14:18:36 -08:00
2023-08-02 15:02:32 -04:00
2023-12-03 15:06:46 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-07-28 07:35:04 +03:00
2023-01-09 09:41:41 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-11-09 14:18:36 -08:00
2023-01-09 09:41:41 -08:00
2023-03-17 17:54:16 +01:00
2023-11-09 14:18:36 -08:00
2023-01-09 09:41:41 -08:00
2023-11-09 14:18:36 -08:00
2023-08-02 15:02:32 -04: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
	testsurround	Audio test -- play test tone on each audio channel
	testaudioinfo	Lists audio device capabilities
	testerror	Tests multi-threaded error handling
	testfile	Tests RWops layer
	testgl		A very simple example of using OpenGL with SDL
	testiconv	Tests international string conversion
	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
	testmouse	Tests mouse coordinates
	testmultiaudio	Tests using several audio devices
	testoverlay	Tests the overlay flickering/scaling during playback.
	testplatform	Tests types, endianness and cpu capabilities
	testsem		Tests SDL's semaphore implementation
	testshape	Tests shaped windows
	testsprite	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
	testwm		Test window manager -- title, icon, events
	torturethread	Simple test for thread creation/destruction
	gamepadmap   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!