Mon, 10 Jul 2017 17:16:12 -0700Fixed bug 3696 - SDL_ShowMessageBox displays different error from intended
Sam Lantinga [Mon, 10 Jul 2017 17:16:12 -0700] rev 11137
Fixed bug 3696 - SDL_ShowMessageBox displays different error from intended

Mark Callow

SDL_ShowMessageBox calls SDL_CaptureMouse which, in the UIKit driver, raises a “That operation is not supported” error, overwriting the SDL error that an application may be trying to report.

This is because UIKit SDL_CaptureMouse returns SDL_Unsupported() which ends up calling SDL_SetError() which has the following code:

/* If we are in debug mode, print out an error message */
SDL_LogDebug(SDL_LOG_CATEGORY_ERROR, "%s", SDL_GetError());

The SDL_GetError call here overwrites the static buffer…..

Although an application can avoid this by using SDL_GetErrorMsg(char* errstr, int maxlen) to avoid the static buffer, SDL should be fixed.

The fix is simple. In SDL_SetError change

SDL_LogDebug(SDL_LOG_CATEGORY_ERROR, "%s", SDL_GetError());

to

SDL_LogDebug(SDL_LOG_CATEGORY_ERROR, "%s", error);

where error is the pointer to the buffer where it assembled the message.

Mon, 10 Jul 2017 17:07:19 -0700Fixed bug 3697 - Main thread gets stuck on left mouse down
Sam Lantinga [Mon, 10 Jul 2017 17:07:19 -0700] rev 11136
Fixed bug 3697 - Main thread gets stuck on left mouse down

Amruth Raj

- My app runs in full screen to play video(I use SDL_WINDOW_FULLSCREEN_DESKTOP)
- Cmd-tab to go out of full screen to another app
- Cmd-tab again to get back to my app
- Press left mouse button at one of the edges of the screen, don't release yet.
After this point the main thread is stuck until I release the left mouse button and hence video rendering doesn't happen anymore.

On debugging more, I see that thread 0 is stuck as shown below with sendEvent processing left mouse down. It comes out only after it receives a left mouse up. There are some frames below which show NSWindowResizing, but my window flag doesn't have SDL_WINDOW_RESIZABLE set.

Thread 0:: CrBrowserMain Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fffbe13d34a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x00007fffbe13c797 mach_msg + 55
2 com.apple.CoreFoundation 0x00007fffa889d434 __CFRunLoopServiceMachPort + 212
3 com.apple.CoreFoundation 0x00007fffa889c8c1 __CFRunLoopRun + 1361
4 com.apple.CoreFoundation 0x00007fffa889c114 CFRunLoopRunSpecific + 420
5 com.apple.HIToolbox 0x00007fffa7dfdebc RunCurrentEventLoopInMode + 240
6 com.apple.HIToolbox 0x00007fffa7dfdcf1 ReceiveNextEventCommon + 432
7 com.apple.HIToolbox 0x00007fffa7dfdb26 _BlockUntilNextEventMatchingListInModeWithFilter + 71
8 com.apple.AppKit 0x00007fffa6396a54 _DPSNextEvent + 1120
9 com.apple.AppKit 0x00007fffa6b127ee -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 2796
10 com.apple.AppKit 0x00007fffa66f568d +[NSWindow(NSWindowResizing) _mouseHysteresisCheck:withExpiration:andDistance:finalMouseLocation:] + 525
11 com.apple.AppKit 0x00007fffa65eedb5 -[NSWindow(NSWindowResizing) _hitTestWithHysteresisCheck:forEvent:allowWindowDragging:] + 394
12 com.apple.AppKit 0x00007fffa6c8f0db -[NSWindow(NSEventRouting) _handleMouseDownEvent:isDelayedEvent:] + 1873
13 com.apple.AppKit 0x00007fffa6c8ca6c -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 1942
14 com.apple.AppKit 0x00007fffa6c8bf0a -[NSWindow(NSEventRouting) sendEvent:] + 541
15 org.libsdl.SDL2 0x000000010d46d74a -[SDLWindow sendEvent:] + 90
16 com.apple.AppKit 0x00007fffa6b10681 -[NSApplication(NSEvent) sendEvent:] + 1145
17 org.libsdl.SDL2 0x000000010d46532b -[SDLApplication sendEvent:] + 139
18 org.libsdl.SDL2 0x000000010d466b2f Cocoa_PumpEvents + 495
19 org.libsdl.SDL2 0x000000010d44c1d5 SDL_PumpEvents_REAL + 53
20 org.libsdl.SDL2 0x000000010d44c2f5 SDL_WaitEventTimeout_REAL + 53
21 org.libsdl.SDL2 0x000000010d44c2b7 SDL_PollEvent_REAL + 23
22 org.libsdl.SDL2 0x000000010d51bb24 SDL_PollEvent + 36
23 libTest.dylib 0x000000010cf3e0e8 SDLEventProcessor::processEvents(int) + 568
24 Test 0x000000010cde6bba BrowserApp::RunAppMessageLoop(BAInstData*, CefStringBase, CefStringBase) + 810
25 Test 0x000000010ce04bbc main + 17980
26 libdyld.dylib 0x00007fffbe016235 start + 1

I further noticed that while entering full screen in SDL_cocoawindow.m NSResizableWindowMask is set. If I clear it inside windowDidEnterFullScreen, then, the issue doesn't repro.

This is discussed at https://discourse.libsdl.org/t/main-thread-gets-stuck-on-left-mouse-down/22753/3 and thanks to Eric for the pointers.

Mon, 10 Jul 2017 15:55:13 -0700Updated Visual Studio 2008 project
Sam Lantinga [Mon, 10 Jul 2017 15:55:13 -0700] rev 11135
Updated Visual Studio 2008 project

Sun, 09 Jul 2017 23:00:43 +0200Updated generated configure script.
Philipp Wiesemann [Sun, 09 Jul 2017 23:00:43 +0200] rev 11134
Updated generated configure script.

Sun, 09 Jul 2017 23:00:35 +0200Fixed typo in log message in testime program.
Philipp Wiesemann [Sun, 09 Jul 2017 23:00:35 +0200] rev 11133
Fixed typo in log message in testime program.

Sun, 09 Jul 2017 23:00:25 +0200Fixed compiler warning about redundant declaration.
Philipp Wiesemann [Sun, 09 Jul 2017 23:00:25 +0200] rev 11132
Fixed compiler warning about redundant declaration.

SDL_RecordGesture() is already in the gesture header with additional specifiers.

Fri, 07 Jul 2017 23:00:47 +0200Fixed missing audio entries in configure summary.
Philipp Wiesemann [Fri, 07 Jul 2017 23:00:47 +0200] rev 11131
Fixed missing audio entries in configure summary.

Fri, 07 Jul 2017 23:00:22 +0200haiku: Fixed compiling without OpenGL support.
Philipp Wiesemann [Fri, 07 Jul 2017 23:00:22 +0200] rev 11130
haiku: Fixed compiling without OpenGL support.

Fri, 07 Jul 2017 23:00:10 +0200qnx: Fixed setting a field twice.
Philipp Wiesemann [Fri, 07 Jul 2017 23:00:10 +0200] rev 11129
qnx: Fixed setting a field twice.

Wed, 05 Jul 2017 12:04:37 -0400audio: trying to pacify static analysis.
Ryan C. Gordon [Wed, 05 Jul 2017 12:04:37 -0400] rev 11128
audio: trying to pacify static analysis.