Fri, 14 Oct 2016 00:51:57 -0700Fixed divide by zero if setting integer scale without setting logical width and height
Sam Lantinga <slouken@libsdl.org> [Fri, 14 Oct 2016 00:51:57 -0700] rev 10532
Fixed divide by zero if setting integer scale without setting logical width and height

Thu, 13 Oct 2016 04:57:31 -0700Fixed typo getting the drawable size
Sam Lantinga <slouken@libsdl.org> [Thu, 13 Oct 2016 04:57:31 -0700] rev 10531
Fixed typo getting the drawable size

Thu, 13 Oct 2016 04:54:43 -0700Fixed bug 3328 - Race condition in Wayland_VideoInit
Sam Lantinga <slouken@libsdl.org> [Thu, 13 Oct 2016 04:54:43 -0700] rev 10530
Fixed bug 3328 - Race condition in Wayland_VideoInit

Robert Folland

When running this little test program with SDL2 on Wayland it often crashes in SDL_Init.

From a backtrace it is apparent that there is a race condition in creating a xkb_context_ref. Sometimes it is 0x0.

By moving the relevant lines higher up in Wayland_VideoInit (in SDL2-2.0.4/src/video/wayland/SDL_waylandvideo.c:302) this seems to get fixed.

I moved the call to WAYLAND_xkb_context_new() up to before the call to WAYLAND_wl_display_connect().

Here is the test program (just a loop of init and quit), and a backtrace from gdb:

#include <cstdio>
#include <stdlib.h>
#include <SDL2/SDL.h>
#include <unistd.h>
#include <iostream>

int main(int argc, char **argv)
{
int count = atoi(argv[1]);

for (int i = 0; i < count; i++) {
std::cout << "Init " << i << std::endl;
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
"Couldn't initialize SDL: %s\n",
SDL_GetError());
return 1;
}
std::cout << "Quit" << std::endl;
SDL_Quit();
}
return 0;
}


Init 12
Quit
Init 13

Program received signal SIGSEGV, Segmentation fault.
xkb_context_ref (ctx=ctx@entry=0x0) at src/context.c:156
156 ctx->refcnt++;
(gdb) bt
#0 xkb_context_ref (ctx=ctx@entry=0x0) at src/context.c:156
#1 0x00007ffff5e1cd4c in xkb_keymap_new (ctx=0x0, format=XKB_KEYMAP_FORMAT_TEXT_V1, flags=flags@entry=XKB_KEYMAP_COMPILE_NO_FLAGS) at src/keymap-priv.c:65
#2 0x00007ffff5e1c6cc in xkb_keymap_new_from_buffer (ctx=<optimized out>,
buffer=0x7ffff7fd5000 "xkb_keymap {\nxkb_keycodes \"(unnamed)\" {\n\tminimum = 8;\n\tmaximum = 255;\n\t<ESC>", ' ' <repeats 16 times>, "= 9;\n\t<AE01>", ' ' <re
peats 15 times>, "= 10;\n\t<AE02>", ' ' <repeats 15 times>, "= 11;\n\t<AE03>", ' ' <repeats 15 times>, "= 12;\n\t<AE04>", ' ' <repeats 12 times>..., length=48090,
format=<optimized out>, flags=<optimized out>) at src/keymap.c:191
#3 0x00007ffff7b8ea4e in keyboard_handle_keymap (data=0x6169b0, keyboard=<optimized out>, format=<optimized out>, fd=5, size=48091)
at /home/vlab/abs/sdl2/src/SDL2-2.0.4/src/video/wayland/SDL_waylandevents.c:269
#4 0x00007ffff64501f0 in ffi_call_unix64 () from /usr/lib/libffi.so.6
#5 0x00007ffff644fc58 in ffi_call () from /usr/lib/libffi.so.6
#6 0x00007ffff665be3e in wl_closure_invoke (closure=closure@entry=0x61f000, flags=flags@entry=1, target=<optimized out>, target@entry=0x616d20,
opcode=opcode@entry=0, data=<optimized out>) at src/connection.c:949
#7 0x00007ffff6658be0 in dispatch_event (display=<optimized out>, queue=<optimized out>) at src/wayland-client.c:1274
#8 0x00007ffff6659db4 in dispatch_queue (queue=0x617398, display=0x6172d0) at src/wayland-client.c:1420
#9 wl_display_dispatch_queue_pending (display=0x6172d0, queue=0x617398) at src/wayland-client.c:1662
#10 0x00007ffff665a0cf in wl_display_roundtrip_queue (display=0x6172d0, queue=0x617398) at src/wayland-client.c:1085
#11 0x00007ffff7b8faa0 in Wayland_VideoInit (_this=<optimized out>) at /home/vlab/abs/sdl2/src/SDL2-2.0.4/src/video/wayland/SDL_waylandvideo.c:302
#12 0x00007ffff7b7aed6 in SDL_VideoInit_REAL (driver_name=<optimized out>, driver_name@entry=0x0) at /home/vlab/abs/sdl2/src/SDL2-2.0.4/src/video/SDL_video.c:513
#13 0x00007ffff7ae0ee7 in SDL_InitSubSystem_REAL (flags=16416) at /home/vlab/abs/sdl2/src/SDL2-2.0.4/src/SDL.c:173
#14 0x0000000000400b24 in main (argc=2, argv=0x7fffffffebb8) at vplay-init.cpp:13
(gdb)

Thu, 13 Oct 2016 04:53:01 -0700Fixed bug 3451 - Raspberry Pi Raspbian SDL_assert triggered sometimes at RPI_WarpMouseGlobal
Sam Lantinga <slouken@libsdl.org> [Thu, 13 Oct 2016 04:53:01 -0700] rev 10529
Fixed bug 3451 - Raspberry Pi Raspbian SDL_assert triggered sometimes at RPI_WarpMouseGlobal

Eric wing

Sometimes an SDL_assert triggers at RPI_WarpMouseGlobal
src/video/raspberry/SDL_rpimouse.c:232 'update'.

It doesn't always reproduce, but it seems to happen when you really bog down the system and the event loop can't update for awhile.


The first time I hit this, I wasn't even using the mouse. I don't call any warp mouse functions either.


I can usually reproduce with a simple program that runs an expensive blocking CPU series of functions which blocks the main loop until complete (can be up to 10 seconds).

Sometimes this assertion gets triggered after that. I'm not sure if
they are related or coincidental.


Disabling the SDL_asserts when compiling SDL will avoid this problem. I actually haven't seen any problems with the mouse when I do this.

On a Raspberry Pi 2 running Raspbian Jessie.

Thu, 13 Oct 2016 04:01:25 -0700Fixed black screen on Steam Link
Sam Lantinga <slouken@libsdl.org> [Thu, 13 Oct 2016 04:01:25 -0700] rev 10528
Fixed black screen on Steam Link

Thu, 13 Oct 2016 02:19:23 -0700Added support for the PS4 Slim controller, model CUH-ZCT2U
Sam Lantinga <slouken@libsdl.org> [Thu, 13 Oct 2016 02:19:23 -0700] rev 10527
Added support for the PS4 Slim controller, model CUH-ZCT2U

Thu, 13 Oct 2016 02:09:37 -0700Fixed black screen on Steam Link
Sam Lantinga <slouken@libsdl.org> [Thu, 13 Oct 2016 02:09:37 -0700] rev 10526
Fixed black screen on Steam Link

Thu, 13 Oct 2016 08:46:34 -0700Fixed bug 3355 - false "Invalid renderer" after creating an "opengles2" renderer.
Sam Lantinga <slouken@libsdl.org> [Thu, 13 Oct 2016 08:46:34 -0700] rev 10525
Fixed bug 3355 - false "Invalid renderer" after creating an "opengles2" renderer.

Call SDL_GL_GetDrawableSize() directly because we may be in the initialization path and SDL_GetRendererOutputSize() will fail because the renderer magic isn't set up yet.

Wed, 12 Oct 2016 22:34:54 -0700Added a note on how to allow non-root applications to increase their thread priority on Linux
Sam Lantinga <slouken@libsdl.org> [Wed, 12 Oct 2016 22:34:54 -0700] rev 10524
Added a note on how to allow non-root applications to increase their thread priority on Linux

Wed, 12 Oct 2016 22:25:19 -0700Work-around for a hang when USB devices are unplugged, contributed by James Zipperer
Sam Lantinga <slouken@libsdl.org> [Wed, 12 Oct 2016 22:25:19 -0700] rev 10523
Work-around for a hang when USB devices are unplugged, contributed by James Zipperer