• Show log

    Commit

  • Hash : 37722d01
    Author : Sam Lantinga
    Date : 2017-07-10T17:07:19

    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.
    

  • Properties

  • Git HTTP https://git.kmx.io/kc3-lang/SDL.git
    Git SSH git@git.kmx.io:kc3-lang/SDL.git
    Public access ? public
    Description

    Fork of https://github.com/libsdl-org/SDL

    Users
    thodg_m kc3_lang_org thodg_w www_kmx_io thodg thodg_l
    Tags

  • README.txt

  •                          Simple DirectMedia Layer
    
                                      (SDL)
    
                                    Version 2.0
    
    ---
    https://www.libsdl.org/
    
    Simple DirectMedia Layer is a cross-platform development library designed
    to provide low level access to audio, keyboard, mouse, joystick, and graphics
    hardware via OpenGL and Direct3D. It is used by video playback software,
    emulators, and popular games including Valve's award winning catalog
    and many Humble Bundle games.
    
    More extensive documentation is available in the docs directory, starting
    with README.md
    
    Enjoy!
    	Sam Lantinga				(slouken@libsdl.org)