Commit graph

560 commits

Author SHA1 Message Date
Sam Lantinga da478d1f66 Fixed build 2022-10-25 10:30:56 -07:00
Simon McVittie 2dc788cb9f build: Expand version info in SDL_REVISION and SDL_GetRevision()
Instead of using a URL and git sha1, this uses `git describe` to
describe the version relative to the nearest previous git tag, which
gives a better indication of whether this is a release, a prerelease,
a slightly patched prerelease, or a long way after the last release
during active development.

This serves two purposes: it makes those APIs more informative, and it
also puts this information into the binary in a form that is easy to
screen-scrape using strings(1). For instance, if the bundled version of
SDL in a game has this, we can see at a glance what version it is.

It's also shorter than using the web address of the origin git
repository and the full git commit sha1.

Also write the computed version into a file ./VERSION in `make dist`
tarballs, so that when we build from a tarball on a system that doesn't
have git available, we still get the version details.

For the Perforce code path in showrev.sh, output the version number
followed by the Perforce revision, in a format reminiscent of
`git describe` (with p instead of g to indicate Perforce).

For the code path with no VCS available at all, put a suffix on the
version number to indicate that this is just a guess (we can't know
whether this SDL version is actually a git snapshot or has been
patched locally or similar).

Resolves: https://github.com/libsdl-org/SDL/issues/6418
Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-10-22 09:27:10 -07:00
Brad Smith f4e3af15a1 Simplify OSS test by removing OpenBSD specific location of the soundcard.h header
OpenBSD has long since stopped using OSS. Remove checking for OpenBSD specific header.
2022-10-17 07:18:47 -07:00
Simon McVittie 7d230af51d testevdev: Explain why the test data is encoded the way it is
Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-10-12 19:20:40 +03:00
Simon McVittie 81dee31949 testevdev: Add a static assertion for supported sizeof(long)
If this assertion fails on some platform (unlikely), we will need a
third implementation for SwapLongLE().

Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-10-12 19:20:40 +03:00
Helge Deller fb32effd15 testevdev: Fix detection of word size
The check for whether to use a 32- or 64-bit swap for an array of long
values always took the 64-bit path, because <limits.h> wasn't included
and therefore ULONG_MAX wasn't defined. Turn this into a runtime check,
which a reasonable compiler will optimize into a constant.

This fixes testevdev failures on 32-bit big-endian platforms such as hppa
and older powerpc. Little-endian and/or 64-bit platforms are unaffected.

[smcv: Added commit message]
Bug-Debian: https://bugs.debian.org/1021310
Co-authored-by: Simon McVittie <smcv@collabora.com>
2022-10-11 14:33:34 -07:00
Pierre Wendling c1317175b4 PSP: Fix Wformat warnings. 2022-10-10 22:31:16 -07:00
Pierre Wendling 6784d84c9d N3DS: Fix -Wformat warnings in tests.
All warnings were about invalid specifiers. Since U/Sint32 is a long,
using `%d` emits a -Wformat warning.
2022-10-10 08:50:59 -07:00
Pierre Wendling 655275378d N3DS port (squashed)
A dedicated renderer using Citro3D would likely allow for better
much better graphical performances.
2022-10-10 08:50:59 -07:00
Cameron Gutman ec1137dfbd cmake: Apply CETCOMPAT fix from ef988fe1 to tests 2022-10-09 15:19:47 -05:00
Ozkan Sezer d022039529 testhaptic: fix watcom "&array may not produce intended result" warning 2022-10-09 12:01:02 +03:00
Anonymous Maarten b8a4b8d1cd testautomation_mouse: fix format '%i' expecting 'int' instead of 'Uint32'
Emitted by Nintendo 3DS's gcc
2022-10-08 23:41:07 +02:00
Anonymous Maarten 7ae5d8d406 testmessage: fix conversion from intptr_t to Uint32
Emitted by MSVC
2022-10-08 23:41:07 +02:00
Anonymous Maarten 02b200ef08 testoffscreen: fix '<': signed/unsigned mismatch
Emitted by MSVC
2022-10-08 23:41:07 +02:00
Anonymous Maarten 7a7980fafa testnative: fix conversion from time_t to unsigned int
Emitted by MSVC
2022-10-08 23:41:07 +02:00
Anonymous Maarten 8770689525 testmouse: add explicit int-cast to avoid warning about converting float to int
Emitted by MSVC
2022-10-08 23:41:07 +02:00
Anonymous Maarten 3c251ec41e testintersections: fix conversion from time_t to unsigned int
Emitted by MSVC
2022-10-08 23:41:07 +02:00
Anonymous Maarten b771d9beec tests: avoid MSVC preaching about unsafe functions 2022-10-08 23:41:07 +02:00
Anonymous Maarten ebae142aa4 testhaptic: fix conversion from size_t to int
Emitted by MSVC
2022-10-08 23:41:07 +02:00
Anonymous Maarten 18c776e155 testspriteminimal: fix conversion from time_t to unsigned int
Emitted by MSVC
2022-10-08 23:41:07 +02:00
Anonymous Maarten f3389f13ef testgeometry: fix conversion from 'double' to 'float', possible loss of data
emitted by MSVC
2022-10-08 23:41:07 +02:00
Anonymous Maarten 45da133999 cmake: don't error on apple when using deprecated declarations 2022-10-08 23:41:07 +02:00
Anonymous Maarten 274ec02581 testautomation: avoid format related warnings by using a few pragma's
ci: enable -Werror to a few platforms
2022-10-08 23:41:07 +02:00
Anonymous Maarten d04fa0ef76 controllermap: use enum to avoid '-Wmaybe-uninitialized'
Emitted by MinGW:

In function 'WatchJoystick',
    inlined from 'SDL_main' at D:/a/SDL/SDL/test/controllermap.c:802:9:
D:/a/SDL/SDL/test/controllermap.c:437:9: warning: 'marker' may be used uninitialized [-Wmaybe-uninitialized]
  437 |         SDL_SetTextureAlphaMod(marker, alpha);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/a/SDL/SDL/test/controllermap.c: In function 'SDL_main':
D:/a/SDL/SDL/test/controllermap.c:355:71: note: 'marker' was declared here
  355 |     SDL_Texture *background_front, *background_back, *button, *axis, *marker;
2022-10-08 23:41:07 +02:00
Anonymous Maarten a905db9d65 testcustomcursor: fix Wswitch warning by casting the arg to an int 2022-10-08 23:41:07 +02:00
Anonymous Maarten bb527678a3 testgamecontroller: fix -Wshadow warning by renaming global axis+button textures 2022-10-08 23:41:07 +02:00
Anonymous Maarten 57c886551f automation_main.c: fix -Wformat-zero-length warning due to SDL_SetError("") 2022-10-08 23:41:07 +02:00
Anonymous Maarten be5f55c47e watcom: add ENABLE_WERROR option to makefiles 2022-10-08 23:41:07 +02:00
Anonymous Maarten 335c672498 autotools: add --enable-werror option 2022-10-08 23:41:07 +02:00
Sam Lantinga 64ea6cefaf SDL_ResetHint() no longer clears the callbacks associated with a hint
Also added SDL_ResetHints() to reset all callbacks, and clarified that SDL_ClearHints() is just used for cleanup at shutdown.

Fixes https://github.com/libsdl-org/SDL/issues/6313
2022-10-02 17:17:31 -07:00
Sam Lantinga 19ecb64e0d Fixed build 2022-10-02 10:18:57 -07:00
Sam Lantinga a00565b8ba Fixed displaying more than 18 buttons 2022-10-02 09:20:12 -07:00
Ethan Lee 0d6c4ff622
testaudioinfo: Initialize deviceName unconditionally 2022-09-29 11:36:07 -04:00
Ethan Lee 1ea1a90edb testaudioinfo: Also test SDL_GetAudioDeviceSpec 2022-09-29 10:41:40 -04:00
Jarod Hillman 40893821f2 coreaudio: Add support for SDL_GetDefaultAudioInfo (#6277)
Co-authored-by: Ethan Lee <flibitijibibo@gmail.com>
Co-authored-by: Ozkan Sezer <sezeroz@gmail.com>
2022-09-29 10:33:07 -04:00
Ryan C. Gordon d843d61cc1
Moved test/versioning.sh to build-scripts/test-versioning.sh
Reference Issue #6171.
2022-09-28 09:09:43 -04:00
Sam Lantinga 2c518747b9 Added microsecond timestamp to sensor values for PS4 and PS5 controllers using the HIDAPI driver 2022-09-27 09:56:49 -07:00
Cameron Cawley 3a6b7c9c69 testiconv: Print the total number of errors at the end 2022-09-24 08:58:51 -07:00
Sam Lantinga 7312b93d32 Fixed crash if a game controller is disconnected while the connect message is in flight 2022-09-22 22:50:28 -07:00
Sam Lantinga c70ffc2a35 Added size_t format specifier test coverage for SDL_snprintf and SDL_sscanf 2022-09-19 15:34:17 -07:00
Ozkan Sezer c833294817 tests, watcom: silence lots of W202 warnings from new vulkan headers. 2022-09-18 17:33:04 +03:00
Cameron Cawley dd51787e07 Fix SDL_PIXELFORMAT_INDEX1LSB test case 2022-09-17 13:18:32 -07:00
DS ac5b9bc4ee
Add support for X11 primary selection (#6132)
X11 has a so-called primary selection, which you can use by marking text and middle-clicking elsewhere to copy the marked text.

There are 3 new API functions in `SDL_clipboard.h`, which work exactly like their clipboard equivalents.

## Test Instructions

* Run the tests (just a copy of the clipboard tests): `$ ./test/testautomation --filter Clipboard`
* Build and run this small application:
<details>
```C
#include <SDL.h>
#include <unistd.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void print_error(const char *where)
{
	const char *errstr = SDL_GetError();
	if (errstr == NULL || errstr[0] == '\0')
		return;
	fprintf(stderr, "SDL Error after '%s': %s\n", where, errstr);
	SDL_ClearError();
}

int main()
{
	char text_buf[256];

	srand(time(NULL));

	SDL_Init(SDL_INIT_VIDEO);
	print_error("SDL_INIT()");
	SDL_Window *window = SDL_CreateWindow("Primary Selection Test", SDL_WINDOWPOS_UNDEFINED,
			SDL_WINDOWPOS_UNDEFINED, 400, 400, SDL_WINDOW_SHOWN);
	print_error("SDL_CreateWindow()");
	SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
	print_error("SDL_CreateRenderer()");

	bool quit = false;
	unsigned int do_render = 0;
	while (!quit) {
		SDL_Event event;
		while (SDL_PollEvent(&event)) {
			print_error("SDL_PollEvent()");
			switch (event.type) {
			case SDL_QUIT: {
				quit = true;
				break;
			} case SDL_KEYDOWN: {
				switch (event.key.keysym.sym) {
				case SDLK_ESCAPE:
				case SDLK_q:
					quit = true;
					break;
				case SDLK_c:
					snprintf(text_buf, sizeof(text_buf), "foo%d", rand());
					SDL_SetClipboardText(text_buf);
					print_error("SDL_SetClipboardText()");
					printf("clipboard: set_to=\"%s\"\n", text_buf);
					break;
				case SDLK_v: {
					printf("clipboard: has=%d, ", SDL_HasClipboardText());
					print_error("SDL_HasClipboardText()");
					char *text = SDL_GetClipboardText();
					print_error("SDL_GetClipboardText()");
					printf("text=\"%s\"\n", text);
					SDL_free(text);
					break;
				} case SDLK_d:
					snprintf(text_buf, sizeof(text_buf), "bar%d", rand());
					SDL_SetPrimarySelectionText(text_buf);
					print_error("SDL_SetPrimarySelectionText()");
					printf("primselec: set_to=\"%s\"\n", text_buf);
					break;
				case SDLK_f: {
					printf("primselec: has=%d, ", SDL_HasPrimarySelectionText());
					print_error("SDL_HasPrimarySelectionText()");
					char *text = SDL_GetPrimarySelectionText();
					print_error("SDL_GetPrimarySelectionText()");
					printf("text=\"%s\"\n", text);
					SDL_free(text);
					break;
				} default:
					break;
				}
				break;
			} default: {
				break;
			}}
		}
		// create less noise with WAYLAND_DEBUG=1
		if (do_render == 0) {
			SDL_RenderPresent(renderer);
			print_error("SDL_RenderPresent()");
		}
		do_render += 1;
		usleep(12000);
	}

	SDL_DestroyRenderer(renderer);
	SDL_DestroyWindow(window);
	SDL_Quit();
	print_error("quit");
	return 0;
}
```
</details>

* Use c,v,d,f to get and set the clipboard and primary selection.
* Mark text and middle-click also in other applications.
* For wayland under x:
  * `$ mutter --wayland --no-x11 --nested`
  * `$ XDG_SESSION_TYPE=wayland SDL_VIDEODRIVER=wayland ./<path_to_test_appl_binary>`
2022-09-14 09:28:35 -07:00
Sam Lantinga a7fde3f835 Allow mapping a controller other than the first one 2022-09-07 01:58:42 -07:00
Sam Lantinga 4018f35ef2 Added left and right sensors for Nintendo Joy-Con and Wii controllers 2022-09-07 00:00:27 -07:00
Ozkan Sezer 911524da45 fix DYLIB version inconsistencies and test failures after #6188. 2022-09-06 03:15:02 +03:00
Sam Lantinga acf397b4df Actually, DYLIB_COMPATIBILITY_VERSION shouldn't be updated for a stable point release
@smcv
2022-09-05 11:21:13 -07:00
Cameron Cawley cf040f8882 testmouse: Allow drawing rectangles as well as lines 2022-09-05 08:51:36 -07:00
Cameron Cawley a932581775 testplatform: Add LSX and LASX checks 2022-09-05 08:50:28 -07:00
Sam Lantinga 4e98ba612b Set DYLIB_COMPATIBILITY_VERSION to DYLIB_CURRENT_VERSION to match autotools
Autotools sets both versions to the same value, so Xcode and CMake need to match for the libraries to be compatible between the different builds.

See these for details:
https://github.com/libsdl-org/sdl12-compat/pull/207
https://github.com/libsdl-org/SDL/issues/2934
https://stackoverflow.com/questions/67055770/usage-of-current-version-and-compatibility-version-on-macos
2022-09-05 08:28:06 -07:00