Commit graph

10111 commits

Author SHA1 Message Date
Sam Lantinga
35811c4c2f Fixed crash in SDL_IsGameController() on Windows if called when a controller is being removed 2017-10-09 11:45:15 -07:00
Sam Lantinga
19658e6739 Fixed bug 3865 - [PATCH] Support for GreenAsia Inc. PSX to USB converter as SDL_GameController
Manuel

I would like this small patch merged that adds support for my GreenAsia Inc. PSX to USB converter, so SDL_IsGameController() returns true when using this adaptor.
It's interesting because PSX/PS2 controllers connected using this model won't be detected as gamecontrollers otherwise, only as joysticks.
2017-10-08 10:59:03 -07:00
Sam Lantinga
3f6a06c954 Fixed bug 3857 - SDL_ConvertPixels misses YUV conversions
Sylvain

There are various YUV-RGB conversion coefficients, according to https://www.fourcc.org/fccyvrgb.php
I choose the first (from Video Demystified, with integer multiplication),
but the current SDL2 Dither functions use in fact the next one, which follows a specifications called CCIR 601.

Here's a patch to use the second ones and with previous warning corrections.
There are less multiplications involved because Chroma coefficient is 1.
Also, doing float multiplication is as efficient with vectorization.
In the end, the YUV decoding is faster: ~165 ms vs my previous 195 ms.

Moreover, if SDL2 is compiled with -march=native, then YUV decoding time drops to ~130ms, while older ones remains around ~220 ms.


For information, from jpeg-9 source code:
jpeg-9/jccolor.c

   * YCbCr is defined per CCIR 601-1, except that Cb and Cr are
   * normalized to the range 0..MAXJSAMPLE rather than -0.5 .. 0.5.
   * The conversion equations to be implemented are therefore
   * Y  =  0.29900 * R + 0.58700 * G + 0.11400 * B
   * Cb = -0.16874 * R - 0.33126 * G + 0.50000 * B  + CENTERJSAMPLE
   * Cr =  0.50000 * R - 0.41869 * G - 0.08131 * B  + CENTERJSAMPLE

jpeg-9/jdcolor.c

   * YCbCr is defined per CCIR 601-1, except that Cb and Cr are
   * normalized to the range 0..MAXJSAMPLE rather than -0.5 .. 0.5.
   * The conversion equations to be implemented are therefore
   *
   * R = Y                + 1.40200 * Cr
   * G = Y - 0.34414 * Cb - 0.71414 * Cr
   * B = Y + 1.77200 * Cb
2017-10-07 15:26:55 -07:00
Sam Lantinga
b0ee1f1505 Fixed restoring window size when coming out of fullscreen desktop mode.
Use the style of the window as it will be, not as it currently is at the
time of the AdjustWindowRect call.
2017-10-06 21:43:59 -07:00
Sam Lantinga
c6a9bb2e6b Fixed bug 3857 - SDL_ConvertPixels misses YUV conversions
Sylvain

Few issues with YUV on SDL2 when using odd dimensions, and missing conversions from/back to YUV formats.

1) The big part is that SDL_ConvertPixels() does not convert to/from YUV in most cases. This now works with any format and also with odd dimensions,
  by adding two internal functions SDL_ConvertPixels_YUV_to_ARGB8888 and SDL_ConvertPixels_ARGB8888_to_YUV (could it be XRGB888 ?).
  The target format is hard coded to ARGB888 (which is the default in the internal of the software renderer).
  In case of different YUV conversion, it will do an intermediate conversion to a ARGB8888 buffer.

  SDL_ConvertPixels_YUV_to_ARGB8888 is somehow redundant with all the "Color*Dither*Mod*".
  But it allows some completeness of SDL_ConvertPixels to handle all YUV format.
  It also works with odd dimensions.

  Moreover, I did some benchmark(SDL_ConvertPixel vs Color32DitherYV12Mod1X and Color32DitherYUY2Mod1X).
  gcc-6.3 and clang-4.0. gcc performs better than clang. And, with gcc, SDL_ConvertPixels() performs better (20%) than the two C function Color32Dither*().
  For instance, to convert 10 times a 3888x2592 image, it takes ~195 ms with SDL_ConvertPixels and ~235 ms with Color32Dither*().
  Especially because of gcc vectorize feature that optimises all conversion loops (-ftree-loop-vectorize).

  Nb: I put no image pitch for the YUV buffers. because it complexify a little bit the code and the API :
  There would be some ambiguity when setting the pitch exactly to image width:
  would it a be pitch of image width (for luma and chroma). or just contiguous data ? (could set pitch=0 for the later).


2) Small issues with odd dimensions:
  If width "w" is odd, luma plane width is still "w" whereas chroma planes will be "(w + 1)/2". Almost the same for odd h.
  Solution is to strategically substitute "w" by "(w+1)/2" at the good places ...

- In the repository, SDL_ConvertPixels() handles YUV only if yuv source format is exactly the same as YUV destination format.
  It basically does a memcpy of pixels, but it's done incorrectly when width or height is odd (wrong size of chroma planes). This is fixed.

- SDL Renderers don't support odd width/height for YUV textures.
  This is fixed for software, opengl, opengles2. (opengles 1 does not support it and fallback to software rendering).
  This is *not* fixed for D3D and D3D11 ... (and others, psp ?)
  Only *two* Dither function are fixed ... not sure if others are really used.

- This is not possible to create a NV12/NV12 texture with the software renderer, whereas other renderers allow it.
  This is fixed, by using SDL_ConvertPixels underneath.

- It was not possible to SDL_UpdateTexture() of format NV12/NV21 with the software renderer. this is fixed.

Here's also two testcases:
- that do all combination of conversion.
- to test partial UpdateTexture
2017-10-06 16:50:24 -07:00
Sam Lantinga
92645159cf Fixed bug 3862 - Install is broken when adding SDL2 to an existing CMake project
Steve Robinson

In my existing CMake project, I use add_subdirectory to add the source for SDL2.  This worked fine in 2.0.5, but now in 2.0.6 when I build the INSTALL CMake target, I get this error:

file INSTALL cannot find "D:/path/to/SDL2Config.cmake".
Call Stack (most recent call first):
  3rdparty/SDL2/cmake_install.cmake:32 (include)
  3rdparty/cmake_install.cmake:36 (include)
  cmake_install.cmake:32 (include)

To fix this, I changed line 1770 from this:
${CMAKE_SOURCE_DIR}/SDL2Config.cmake

To this:
${CMAKE_CURRENT_SOURCE_DIR}/SDL2Config.cmake
2017-10-06 16:42:43 -07:00
Sam Lantinga
64786b5dfc Fixed potential overflow in surface allocation (thanks Yves!) 2017-10-06 16:17:50 -07:00
Sam Lantinga
be62ae8910 Fixed bug 3854 - arguments to dbus_type_is_basic() were incorrect
Aaron

As of 2.0.6, all of my games are failing with the following error:

process 31778: arguments to dbus_type_is_basic() were incorrect, assertion "dbus_type_is_valid (typecode) || typecode == DBUS_TYPE_INVALID" failed in file dbus-signature.c line 322.
This is normally a bug in some application using the D-Bus library.
  D-Bus not built with -rdynamic so unable to print a backtrace

(patch by  Ozkan Sezer)
2017-10-05 09:37:28 -07:00
Brandon Schaefer
5df6ac64d0 Fixed bug 3855 - Memory leak in SDL_FreeSurface 2017-10-02 10:50:33 -07:00
Brandon Schaefer
c355765d99 revert files I didnt mean to commit! 2017-09-29 10:15:44 -07:00
Brandon Schaefer
2ba8f45ae6 wayland: Fix bug 3814 -Wmissing-field-initializers 2017-09-29 10:07:37 -07:00
Sam Lantinga
1b2b7b2bfe Fixed bug 3852 - SDL_FreeSurface deallocates surface->map even if the surface is not yet freed
Evgeny Kapun

Commit 52dcef74bdc5 [1], which was a fix for bug #3790, introduced a new bug: now, calling SDL_FreeSurface(surface) deallocates surface->map even if there are other references to the surface. This is bad, because some functions (such as SDL_ConvertSurface) assume that surface->map is not NULL.
2017-09-29 07:44:30 -07:00
Sam Lantinga
157ff58212 Fixed bug 3850 - incorrect numbering in docs/README-ios.md
Michal

the numbering of the bulletpoints in:
docs/README-ios.md

has been mangled with:
changeset 11365	a9bd2625fa01

fix:
    12 2.  Open SDL.xcodeproj (located in Xcode-iOS/SDL) in Xcode.
    13 4.  Select your desired target, and hit build.

remove:
    28 1. Follow step 1 above.

adapt:
    29 2. cd (PATH WHERE THE SDL CODE IS)/build-scripts
    30 3. ./iosbuild.sh
2017-09-26 16:27:24 -07:00
Sam Lantinga
5572175ced Fixed bug 3847 - Hit Test x coordinate wrong on secondary monitor
Robert Turner

SDL_windowsevents.c contains code to retrieve the x and y coordinate for a requested hit test. It does this as follows:

    POINT winpoint = { (int) LOWORD(lParam), (int) HIWORD(lParam) };

LOWORD(lParam) does not correctly mask off high bits that are set if the point is on a second (or third, etc.) monitor. This effectively offsets the x-coordinate by a large value.

MSDN documentation suggests that LOWORD() and HIWORD() are the wrong macros for the task, instead suggesting we should be doing something like the following:

    POINT winpoint = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };

Testing this change on my Windows 10 machine with 2 monitors gives the correct results.
2017-09-26 15:07:35 -07:00
Alex Szpakowski
73b38803ec Mac: Fix the menu bar not always working for non-.app-bundled apps. Fixes bug #3051. 2017-09-25 20:49:31 -03:00
Sam Lantinga
d93911e99b Fixed bug 3842 - fix SDL_thread.h for emx
Ozkan Sezer

EMX declares _beginthread() / _endthread() in stdlib.h, not process.h.
The attached patch updates the OS/2 case of SDL_thread.h for it.  (It
also tidies the unreadable whitespace in win32 case.)
2017-09-23 12:38:47 -07:00
Sam Lantinga
36b6c65977 Fixed bug 3843 - Android missing some code in SDLHapticHandler
Sylvain

Some check for android SDK version are missing from https://hg.libsdl.org/SDL/rev/04dd43a2c83a
here's a patch
2017-09-23 12:37:09 -07:00
Ryan C. Gordon
25f80b473f audio: Fixed compiler warning on Visual Studio. 2017-09-22 22:28:21 -04:00
Sam Lantinga
9df4b9f11d Fixed spacing 2017-09-22 17:32:05 -07:00
Sam Lantinga
cb784eb2a6 Added an example for SDL_SetWindowHitTest() when you create a borderless resizable window. 2017-09-22 17:29:32 -07:00
Sam Lantinga
503dfb7560 Good bye, Visual Studio 2008 2017-09-22 17:02:18 -07:00
Sam Lantinga
fbeccb046d Added stub Steam Controller sources to Android and iOS command line builds 2017-09-22 16:33:34 -07:00
Sam Lantinga
2a09cd52d3 Added stubs for simple Steam Controller support 2017-09-22 08:32:31 -07:00
Sam Lantinga
d314080fa4 Separated out SDL Android java code so audio, controller, and filesystem APIs can be used independently of the SDL activity, in Qt apps for example. 2017-09-22 08:31:56 -07:00
Sam Lantinga
c2e69a5256 Removed non-existent files 2017-09-22 08:31:02 -07:00
Sam Lantinga
6ba2d5e6e0 Removed non-existent files 2017-09-22 08:30:58 -07:00
Sam Lantinga
1e46b7fc9a Added stubs for simple Steam Controller support 2017-09-22 08:30:52 -07:00
Sam Lantinga
402ec39ea2 Separated out SDL Android java code so audio, controller, and filesystem APIs can be used independently of the SDL activity, in Qt apps for example. 2017-09-22 08:30:46 -07:00
Sam Lantinga
a0bb4bd9fb Guarded EGL code with SDL_VIDEO_OPENGL_EGL 2017-09-22 08:30:37 -07:00
Sam Lantinga
1fabc5160f borderless windows will have WM_NCCALCSIZE return 0 for the non-client area. When this happens, it looks like windows will send a resize message expanding the window client area to the previous window + chrome size, so shouldn't need to adjust the window size for the set styles. 2017-09-22 07:15:41 -07:00
Sam Lantinga
23e7cf4466 sdl
- Fixing rendering borderless window. Need to force windows to send a WM_NCCALCSIZE then return 0 for non-client area size.

- Adding WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX to borderless windows, for reasons noted in comments.

- Fix SetupWindowData() setting SDL_WINDOW_BORDERLESS. This was being cleared at window creation, causing hanlding for the first WM_NCCALCSIZE message to fail
2017-09-22 07:11:36 -07:00
Sam Lantinga
281e904a4f Fixed bug 3837 - Change project settings for Xcode 9?
Mark Callow

Xcode 9 emits a warning to validate project settings. The changes it proposes are

1. [iOS] Update the iOS deployment target to 8.0 since Xcode does
   not support anything older.

2. [macOS] Target 'Framework' - Automatically Select Archectures.

3. [iOS & macOS] Turns on a bunch more compile warnings, a *lot* more on iOS.

4. [iOS & macOS] Turn on "Missing Localizability".

I want to confirm if it is ok to accept these changes and submit updated project files.

Since Alex Szpakowski has just removed iOS 7 guard ifdef's, I'm guessing 1 isn't a problem.

2 is probably ok for anyone building themselves. I wonder if it may cause problems for building distribution binaries.

3 shouldn't be a problem either provided any newly emitted warnings are fixed.

4 I am unfamiliar with. The description says "This will turn on the static analyzer to check for "Missing Localizability", because this project is localized for multiple languages." I suppose this may cause new warnings.
2017-09-22 12:26:54 -07:00
Sam Lantinga
25a51064e5 Added tag release-2.0.6 for changeset 8df7a59b5528 2017-09-22 11:57:35 -07:00
Sam Lantinga
f486f87816 Fixed Mac OS X build 2017-09-22 11:25:52 -07:00
Sam Lantinga
1a34539bdf The volume was too high, clamp to SDL_MIX_MAXVOLUME 2017-09-22 11:15:57 -07:00
Sam Lantinga
796d1f6645 Fixed audio being silent on older iOS devices
Tested on an iPod running iOS 6.1
2017-09-22 11:15:14 -07:00
Sam Lantinga
6ae4a6f2e3 Added instructions for deploying to older iOS devices (thanks Sylvain!) 2017-09-22 11:13:34 -07:00
Sam Lantinga
0273dd1d92 Avoid duplicate joystick axis events 2017-09-22 08:56:09 -07:00
Sam Lantinga
d58b502fad Fixed memory leak when HAVE_ALLOCA isn't defined 2017-09-22 08:51:45 -07:00
Mark Callow
21e8d3d8d4 Avoid hitting ERR_MAX_STRLEN limit. 2017-09-22 22:30:02 +09:00
Ryan C. Gordon
d06b6e98c5 audio: Stream resampling now saves some samples from previous run for padding.
Previously, the padding was silence, which was a problem when streaming since
you would sample a little bit of this silence between each buffer.

We still need a means to get padding data for the right hand side, but this
patch makes the resampler output more correct.

--HG--
extra : amend_source : 0cc91e0b0d6c2314a435a252d88c123c8fa58bfc
2017-09-22 07:42:24 -04:00
Brandon Schaefer
39c91a2406 [egl/mir] Need eglGetProc to find gl 4.5 core profile extensions 2017-09-21 18:38:07 -07:00
Alex Szpakowski
0bd7b4315c iOS MoltenVK code style cleanup. 2017-09-21 20:30:25 -03:00
Alex Szpakowski
82683927b2 iOS: Fix compiling using the iOS 7 SDK, partially broken since MoltenVK support was added.
Note that apps submitted to the iOS App Store *must* use a modern iOS SDK (currently iOS 10 is probably the minimum), however the SDK used to build is separate from the minimum iOS version an app supports at runtime.
2017-09-21 20:11:44 -03:00
Sam Lantinga
e247fc4d55 A hint with an empty string should be treated as the default value 2017-09-21 14:48:03 -07:00
Sam Lantinga
28013a650a Only apply the jitter filter to prevent unexpected motion on axes that haven't been touched. 2017-09-21 10:29:17 -07:00
Sam Lantinga
91339af74b Fixed bug 3788 - software renderer crashes in SDL_RenderCopyEx with rotation and dstrect w or h is 0
Anthony

This is what's making the software renderer crash with rotated destination rectangles of w or h = 0:

SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "2");
2017-09-21 01:22:40 -07:00
Sam Lantinga
26f9eab102 Added some missing "extern" declarations 2017-09-21 00:55:29 -07:00
Ryan C. Gordon
2f484d4e3a audio: removed my perl experiment script.
--HG--
extra : histedit_source : be66a1e28b142b6499cee293f281a8c85bd426f0
2017-09-21 02:06:53 -04:00
Ryan C. Gordon
4509de166f audio: Replaced the resampler. Again.
This time it's using real math from a real whitepaper instead of my previous
amateur, fast-but-low-quality attempt. The new resampler does "bandlimited
interpolation," as described here: https://ccrma.stanford.edu/~jos/resample/

The output appears to sound cleaner, especially at high frequencies, and of
course works with non-power-of-two rate conversions.

There are some obvious optimizations to be done to this still, and there is
other fallout: this doesn't resample a buffer in-place, the 2-channels-Sint16
fast path is gone because this resampler does a _lot_ of floating point math.
There is a nasty hack to make it work with SDL_AudioCVT.

It's possible these issues are solvable, but they aren't solved as of yet.
Still, I hope this effort is slouching in the right direction.

--HG--
extra : rebase_source : 2178d7f422d118dfb76608964f63d290b18c7408
extra : histedit_source : 5461b7f3025ed6c09213910a563318c95d185bf3%2C4a6a6c4c38784b4bc5f241d963c0d752c73ea5b9
2017-09-21 02:51:14 -04:00