SDL_CreateColorCursor() no longer frees the surface it is passed.
You have to free it yourself
A new flag, SDL_THREADSAFE can be passed to SDL_AllocSurface(), and will enable thread-safe locking between SDL_LockSurface() and SDL_UnlockSurface() calls, so that only one thread can lock it at a time. This flag does not cause SDL_MUSTLOCK() to return true. SDL_BlitSurface() will lock and unlock surfaces with this flag set (do not set the flag yourself -- pass it to SDL_AllocSurface() The video surface will have this flag set automatically. If you clear this flag, then blitting to the video surface will be slightly faster, but you will not be able to create color cursors and the color cursor blit routines will start interfering with your blitting.