Commit Graph

7864 Commits

Author SHA1 Message Date
Gabriel Jacobo 1084421cca Zero out haptic linked list items on creation
(thanks to Turo Lamminen for the report!)
2014-02-24 10:25:02 -03:00
Gabriel Jacobo 2ed47d8369 Fixes #2417, memory leak in SDL_gamecontroller.c (thanks Leonardo!) 2014-02-24 10:00:10 -03:00
Ryan C. Gordon 96f09df730 Free the correct variable. 2014-02-23 01:24:46 -05:00
Ryan C. Gordon 295acea953 CMake: Just assume Apple platforms have Cocoa support.
Fixes Bugzilla #2056.
2014-02-23 01:10:33 -05:00
Ryan C. Gordon f9f2bc5afb Fixed Mac DualShock 4 gamecontroller db entry again. 2014-02-22 21:21:33 -05:00
Ryan C. Gordon b67b970db1 Mac joystick: ignore duplicate HID elements.
The DualShock 4 has all elements listed twice: once in the top-level list of
 elements, and once in an "Application Collection" element at the top-level.

Each element has a proper cookie with a unique value, so now we descend into
 each element collections, but before we add an element to the device's list,
 we make sure we don't already have one with that cookie, probably from
 another collection or a buggy device.
2014-02-22 21:15:34 -05:00
Sam Lantinga 9cd5f5ceca Fixed bug 2404 - CPU detection not working with MSVC on x64
Tiemo Jung

All CPU detection functions SDL_Has* will return false, even if it is supported by the CPU, if SDL is compiled with MSVC and the target is x64.

The reason for this is that 'CPU_haveCPUID' will return 0 and macro 'cpuid' in SDL_cpuinfo.c is the fallback implementation, which sets all params to zero.

It is safe to assume that cpuid is supported on a CPU that runs windows x64, so CPU_haveCPUID can just return 1, and the empty macro can be replaced with a small wrap around the __cpuid intrinsic.
2014-02-22 19:10:45 -08:00
Sam Lantinga fea87cc9cf Fixed bug 2335 - Fails to build on Debian GNU/kFreeBSD
Felix Geyer

Starting from version 2.0.1 libsdl fails to build on Debian GNU/kFreeBSD in SDL_cpuinfo.c.

GNU/kFreeBSD defines __FreeBSD_kernel__ but not __FreeBSD__.
The #ifdef __FreeBSD__ check should be extended for __FreeBSD_kernel__, see the attached patch.

Build log:
libtool: compile:  gcc -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -DUSING_GENERATED_CONFIG_H -Iinclude -I/?BUILDDIR?/libsdl2-2.0.1+dfsg1/include -mmmx -m3dnow -msse -msse2 -fvisibility=hidden -D_REENTRANT -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-kfreebsd-gnu/dbus-1.0/include -DHAVE_USBHID_H -DUSBHID_NEW -D_REENTRANT -Wall -c /?BUILDDIR?/libsdl2-2.0.1+dfsg1/src/cpuinfo/SDL_cpuinfo.c  -fPIC -DPIC -o build/.libs/SDL_cpuinfo.o
/?BUILDDIR?/libsdl2-2.0.1+dfsg1/src/cpuinfo/SDL_cpuinfo.c: In function 'SDL_GetSystemRAM':
/?BUILDDIR?/libsdl2-2.0.1+dfsg1/src/cpuinfo/SDL_cpuinfo.c:632:35: error: 'HW_MEMSIZE' undeclared (first use in this function)
             int mib[2] = {CTL_HW, HW_MEMSIZE};
                                   ^
/?BUILDDIR?/libsdl2-2.0.1+dfsg1/src/cpuinfo/SDL_cpuinfo.c:632:35: note: each undeclared identifier is reported only once for each function it appears in
make[2]: *** [build/SDL_cpuinfo.lo] Error 1
2014-02-22 18:01:18 -08:00
Sam Lantinga 6bb2f2ef8d Fixed bug 2347 - On OSX, an SDL app prevents system shutdown.
Tim McDaniel

On OSX, an SDL app forces a system shutdown to be cancelled.  This happens because [SDLAppDelegate applicationShouldTerminate] returns NSTerminateCancel.  A better approach is to subclass NSApplication and override terminate to do nothing except call SDL_SendQuit.  In response to a system shutdown notification, this allows the normal SDL Quit event processing to occur, and if the app then terminates, system shutdown occurs normally.  Please see the attached patch, based on SDL 2.0.1.
2014-02-22 17:55:58 -08:00
Sam Lantinga b80f4f9e50 Don't fail initialization if the helper window class already exists. 2014-02-22 17:39:35 -08:00
Sam Lantinga a5f52ac5a8 Fixed bug 2395 - OSX: App name in the menu bar is not localized.
Tim McDaniel

On OSX, the app name in the menu bar is not localized.  This can be fixed using the following implementation for GetApplicationName in SDL_cocoaevents.m:

static NSString *
GetApplicationName(void)
{
    NSDictionary *dict;
    NSString *appName = 0;

    appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
    if (!appName)
        appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"];

    if (![appName length])
        appName = [[NSProcessInfo processInfo] processName];

    return appName;
}
2014-02-22 17:32:18 -08:00
Sam Lantinga eb5eb04652 Fixed bug 2298 - undefined reference to `IID_IUnknown' on cygwin
Brian Minton

When building static or shared libraries on cygwin 1.7.25 on Windows 7 (32-bit), I get the following link errors:

build/.libs/SDL_windowskeyboard.o: In function `UIElementSink_QueryInterface@12':
/home/c-bminton/src/SDL/src/video/windows/SDL_windowskeyboard.c:995: undefined reference to `IID_IUnknown'
build/.libs/SDL_windowskeyboard.o: In function `IPPASink_QueryInterface@12':
/home/c-bminton/src/SDL/src/video/windows/SDL_windowskeyboard.c:1101: undefined reference to `IID_IUnknown'
collect2: error: ld returned 1 exit status
Makefile:126: recipe for target 'build/libSDL2.la' failed
make: *** [build/libSDL2.la] Error 1

--
The libuuid from e2fsprogs is completely unrelated to the w32api UUID.DLL implib. FWIW, any *NIX software that I've seen obviously wants the e2fsprogs version, but if libuuid-devel is installed (in /usr/lib) then you can't link against the w32api implib with a simple -luuid.
2014-02-22 15:34:31 -08:00
James Legg d3cf7360db Fix audio conversion when channel count changes
- Use the SDL_AUDIO_MASK_DATATYPE bit when selecting an implementation
  where it matters. Previously two existing AUDIO_F32 cases had been
  written, but were unreachable.
- Add AUDIO_F32 case for SDL_ConvertSurround_4.
- Fix incorrect pointer arithmetic causing the 2 to 6 channel
  conversion for 4 byte audio formats to read and write beyond the end
  of the buffer.
2014-02-21 13:57:53 +00:00
Sam Lantinga 5512eac69f Fixed bug 2414 - Execute event watchers in the order they were added
Leonardo

Event watchers are being executed on the inverse order they are added because they are added to the head of the SDL_event_watchers list.

Since watchers are allowed to change events before they are reported (they shouldn't, imo), this breaks code that rely on watcher execution order (such as distributed event handling).

An easy scenario to see this behaving weird to the user is if you add an event watcher to check mouse coordinates and check them again in your event loop. If you add the watcher after renderer's one (which always happens after you have initialized renderer), you get the same event but different coordinates.

The proposed patch adds the event watcher in the tail of the list, not in the beginning, and correctly fixes this problem.
2014-02-22 15:27:11 -08:00
Sam Lantinga f7de4ae130 Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS
Alex Szpakowski

Currently the UIKit/EAGL backend for SDL's OpenGL context creation API doesn't support OpenGL ES 3, despite iOS 7+ being capable (on devices with the necessary hardware.)

I have attached a patch to add support. It's also slightly more future-proof, so eventual OpenGL ES 4+ capability on iOS should hopefully work without requiring changes to SDL's UIKit/EAGL backend.
2014-02-22 15:23:09 -08:00
Sam Lantinga af0ab49003 Fixed bug 2346 - Mac: mousewheel events have flipped horizontal scroll values
Alex Szpakowski

On my Mac OS X system (10.9.1), the SDL_MOUSEWHEEL event reports negative X values when my trackpad scrolls to the right, and positive X values when my trackpad scrolls to the left. This is backwards from what I'd expect, and I don't think it matches the Windows wheel events.

The vertical scroll values are what I'd expect though, and are consistent what gets reported on Windows (positive Y for scrolling up, negative Y for scrolling down.)

This is with "scroll direction: natural" disabled in the OS X trackpad settings (i.e. my scroll direction in non-SDL OS X programs matches what happens in Windows and Linux.)

I also tested with the horizontal scroll on a real mouse (Logitech G500 without custom drivers), and the horizontal scroll values in SDL are still flipped.

I "solved" the issue for myself by changing this line in the Cocoa_HandleMouseWheel function:

    float x = [event deltaX];

to this:

    float x = -[event deltaX];

I believe it should work fine with that change - I found something similar in another codebase while looking online for my issue - but I haven't tested on anything below Mac OS 10.8.
2014-02-22 14:57:12 -08:00
Sam Lantinga 7c33f23361 Thou shalt not use more than 4k local variables in this code. 2014-02-22 10:40:12 -08:00
Ryan C. Gordon 0deb54c024 Reworked Mac OS X joystick code to use the 10.5+ HID Manager API.
Besides being a little more simple to use than the earlier IOKit HID API, and
 less likely to be deprecated, it also has the added benefit of working with
 the Sony DualShock 4 controller in Bluetooth mode out of the box, whereas
 the previous API has a bug that makes it report bad data for the
 controller.

Cleaned up several other things in this code, having gone over every line of
 it. The remaining deprecated calls are also gone.
2014-02-22 00:55:28 -05:00
Gabriel Jacobo abe2ac2cb4 Fixes #2326, clean up the X11 backend a bit 2014-02-21 08:37:57 -03:00
Sam Lantinga 22e3217e59 Fixed infinite recursion in D3D_Reset() 2014-02-20 21:07:56 -08:00
Gabriel Jacobo ea71a5e074 Fixes #2408, VS2013: several projects of release build are not built
Patch by Hiroyuki Iwatsuki
2014-02-20 17:03:55 -03:00
Gabriel Jacobo 01550b96cc Improve testgles2 exit behavior (useful on Android) 2014-02-20 16:12:11 -03:00
Gabriel Jacobo e3f0d53b55 Fixes #2403, add SDL2 dependency to testgles2 (thanks Hiroyuki Iwatsuki) 2014-02-19 11:03:03 -03:00
Sam Lantinga 6b33f2e8ca Fixed resetting the current render target if the D3D device is reset while using a non-default render target. 2014-02-17 22:20:33 -08:00
Ryan C. Gordon ccce6fb302 s/iPhoneOS/iOS 2014-02-17 11:47:54 -05:00
Ryan C. Gordon 245e125e0f Corrected battery percentage on iOS (thanks, Felix!).
Fixes Bugzilla #2397.
2014-02-17 11:46:23 -05:00
Philipp Wiesemann fbeb24e96e Fixed documentation comments in SDL_hints.h file. 2014-02-16 00:04:15 +01:00
Philipp Wiesemann fc1c17cc01 Changed text in documentation. 2014-02-15 23:57:38 +01:00
Philipp Wiesemann 70b975d626 Corrected name of hint in README. 2014-02-15 23:52:04 +01:00
Sam Lantinga 5c5770ad44 Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly. 2014-02-14 11:39:58 -08:00
Sam Lantinga 441f7d8d63 Fixed Mac PS4 controller entry, added Linux OUYA controller entry 2014-02-14 11:38:59 -08:00
Sam Lantinga 268071d16f Added the new function at the end so we don't break the ABI 2014-02-13 11:08:12 -08:00
Sam Lantinga baf2dd4c7e Back out changelist 1951976 2014-02-13 11:05:34 -08:00
Sam Lantinga f5d1559b51 Back out changelist 2026006 2014-02-13 11:05:32 -08:00
Sam Lantinga c52c91056b Added SDL_DXGIGetOutputInfo which returns the adapter and output indices that are used to create DX10 and DX11 devices and swap chains on a particular display.
CR: SamL
2014-02-13 11:05:30 -08:00
Sam Lantinga e34da6801f Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop.
Testing:
* Set the SDL_HINT_MOUSE_RELATIVE_MODE_WARP hint true, run testsprite2, press Ctrl-R to enter relative mode, alt tab away from the window, then click on the title bar of the window. Didn't get the mouse button release before, and we do now.

CR: Yahn + Alfred
2014-02-13 11:05:28 -08:00
Sam Lantinga 567b5ba8e9 As part of Jorgen's code review of this function I added a call to LoadLibrary so the refcounts would be consistent between Windows and Posix. Then I forgot to include the check that the thing was actually loaded and caused it to be loaded all the time. Oops.
CR: AaronL
2014-02-13 11:05:26 -08:00
Sam Lantinga 1fa4939a38 Added SDL_GetLoadedModule to do the equivalent of GetModuleHandle/dlload(NOLOAD)
CR: Jorgen
2014-02-13 11:05:24 -08:00
Gabriel Jacobo cf119f786a Try to work around Android's handling of static variables in terminated apps
Android, we want to love you, but you don't make it easy for us...
2014-02-12 18:12:14 -03:00
Sam Lantinga 076a14b263 Fixed crash if render target textures are used while the device is lost 2014-02-10 13:40:02 -08:00
Sam Lantinga ae05f178c2 Recreate render target textures when the D3D device is being reset, and notify the application using the SDL_RENDER_TARGETS_RESET event when this happens. 2014-02-10 10:02:51 -08:00
Sam Lantinga 9f2509da79 Exposed the font character size and SDLTest_DrawCharacter() to make it easier to do custom debug text layout 2014-02-10 10:02:42 -08:00
Sam Lantinga a396841f8d Fixed bug where a window created fullscreen and hidden would get activated and "shown" but never actually be visible.
This is the case with the Steam In-Home Streaming client.
2014-02-10 10:02:18 -08:00
Ryan C. Gordon f38c1f05f5 Fixed DualShock 4 controller config on Mac OS X. 2014-02-10 12:47:26 -05:00
Edward Rudd 7f4c6a9ca1 Fix Cmake so generated SOname matches autoconf's #. 2014-02-10 10:53:02 -05:00
Ryan C. Gordon 2d92a37237 Make controllermap, etc, work on platforms with hardcoded window sizes.
This makes sure everything renders correctly, even if, say, an Android device
gives you a certain "window" size no matter what you ask for.
2014-02-10 11:29:48 -05:00
Gabriel Jacobo 9268c7a1b3 Backed out 0869362ccc3c
The render target usage in controllermap is required if you are forced to use
the app at a different resolution than the one the art has been made for, for
example on Android, where you don't control the resolution.
(The coordinates for each button are hardcoded to the art size, and appear out
of place otherwise)
2014-02-10 09:26:22 -03:00
Ryan C. Gordon f0aa97d20f Removed unused function. 2014-02-10 01:43:01 -05:00
Ryan C. Gordon b17fd9a180 Replace testgamecontroller visualization mode with something more useful. 2014-02-10 01:41:58 -05:00
Ryan C. Gordon 9a15da84db No need to use a render target here. 2014-02-09 15:20:41 -05:00