Sat, 22 Feb 2014 19:10:45 -0800Fixed bug 2404 - CPU detection not working with MSVC on x64
Sam Lantinga <slouken@libsdl.org> [Sat, 22 Feb 2014 19:10:45 -0800] rev 8241
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.

Sat, 22 Feb 2014 18:01:18 -0800Fixed bug 2335 - Fails to build on Debian GNU/kFreeBSD
Sam Lantinga <slouken@libsdl.org> [Sat, 22 Feb 2014 18:01:18 -0800] rev 8240
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

Sat, 22 Feb 2014 17:55:58 -0800Fixed bug 2347 - On OSX, an SDL app prevents system shutdown.
Sam Lantinga <slouken@libsdl.org> [Sat, 22 Feb 2014 17:55:58 -0800] rev 8239
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.

Sat, 22 Feb 2014 17:39:35 -0800Don't fail initialization if the helper window class already exists.
Sam Lantinga <slouken@libsdl.org> [Sat, 22 Feb 2014 17:39:35 -0800] rev 8238
Don't fail initialization if the helper window class already exists.

Sat, 22 Feb 2014 17:32:18 -0800Fixed bug 2395 - OSX: App name in the menu bar is not localized.
Sam Lantinga <slouken@libsdl.org> [Sat, 22 Feb 2014 17:32:18 -0800] rev 8237
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;
}

Sat, 22 Feb 2014 15:34:31 -0800Fixed bug 2298 - undefined reference to `IID_IUnknown' on cygwin
Sam Lantinga <slouken@libsdl.org> [Sat, 22 Feb 2014 15:34:31 -0800] rev 8236
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.

Fri, 21 Feb 2014 13:57:53 +0000Fix audio conversion when channel count changes
James Legg <jlegg@feralinteractive.com> [Fri, 21 Feb 2014 13:57:53 +0000] rev 8235
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.

Sat, 22 Feb 2014 15:27:11 -0800Fixed bug 2414 - Execute event watchers in the order they were added
Sam Lantinga <slouken@libsdl.org> [Sat, 22 Feb 2014 15:27:11 -0800] rev 8234
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.

Sat, 22 Feb 2014 15:23:09 -0800Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS
Sam Lantinga <slouken@libsdl.org> [Sat, 22 Feb 2014 15:23:09 -0800] rev 8233
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.

Sat, 22 Feb 2014 14:57:12 -0800Fixed bug 2346 - Mac: mousewheel events have flipped horizontal scroll values
Sam Lantinga <slouken@libsdl.org> [Sat, 22 Feb 2014 14:57:12 -0800] rev 8232
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.