Log

Author Commit Date CI Message
Sylvain Becker ebd9efb3 2018-12-29T16:37:44 opengles 1: same fix as in bug #4433
Sylvain Becker 87b76369 2018-12-29T16:34:50 opengles 1: use color from 'draw' union in SetDrawState()
Alex Szpakowski dc344360 2018-12-21T20:53:31 render: Fix internal state getting out of sync when destroying a texture that was just rendered and then creating a new one, in the GL and GLES2 backends. Fixes bug #4433.
Ryan C. Gordon 0a705901 2018-12-19T18:10:02 render: Prefer the Metal renderer over OpenGL. This is the best option for macOS and iOS, the only platforms with Metal. Pre-Metal versions of these platforms will fall back to OpenGL (ES), as appropriate. Huge thanks to Alexander Szpakowski, who worked incredibly hard to get the Metal renderer to such a high-quality state!
Alex Szpakowski c7db6ade 2018-12-19T18:27:21 metal: Implement SDL_LockTexture for YUV formats.
Alex Szpakowski ce8c716a 2018-12-18T14:23:05 metal: Implement SDL_LockTexture for non-YUV textures.
Sylvain Becker c0c8f2d7 2018-12-16T11:15:21 Gesture: remove warnings when ENABLE_DOLLAR is undefined.
Ryan C. Gordon c3e3503e 2018-12-16T01:04:07 testgl2: Press 'o' or 'p' to decrease/increase OpenGL swap interval.
Ryan C. Gordon 13869f19 2018-12-16T01:03:17 cocoa: Implement OpenGL swap interval support with CVDisplayLink. Not only does this fix macOS 10.14 ("Mojave")'s broken NSOpenGLCPSwapInterval support, it also lets us implement "adaptive vsync" on macOS! CVDisplayLink is supported back to macOS 10.4 ("Tiger"), so we just use it universally without version checks and dump NSOpenGLCPSwapInterval, Mojave or not.
Sylvain Becker 1ed60219 2018-12-15T16:21:24 Fixed bug 4426 - allows re-creation of software renderer Switching between renderers "software -> opengl -> opengles2 -> software" fails. "opengl -> opengles2" calls SDL_RecreateWindow() and frees "window->surface" without marking it as "surface_invalid".
Ryan C. Gordon 18296927 2018-12-15T09:57:05 emscripten: SDL_PrivateJoystickAdded() wants an instance id, not device index.
Sylvain Becker e5476c65 2018-12-15T14:50:12 Fixed bug 4425 - promote to alpha format, palette surface with alpha values. SDL_CreateTextureFromSurface() forgets to choose a texture format with alpha for surfaces that have palettes with alpha values.
Sam Lantinga bd08d72d 2018-12-11T20:04:10 Fixed building with the 10.10 SDK
Sam Lantinga 98829d37 2018-12-11T19:50:58 Handle both "Sony Interactive Intertainment" and "Sony Computer Entertainment" when ignoring motion sensors
Sylvain Becker 71b66451 2018-12-10T13:32:24 Rename _SDL_sensor_h in public header, not to trigger Wreserved-id-macro
Sam Lantinga 39e8e395 2018-12-08T11:22:50 Fixed bug 4379 - fix parallel build with slibtool orbea I am having a parallel build problem with -j3 or higher using the autotools build and slibtool instead of GNU libtool. Basically slibtool is faster than GNU libtool and it will start working before mkdir starts or finishes creating the build/ directory.
Sam Lantinga 1c9595b1 2018-12-08T11:06:40 Fixed bug 4415 - SDL menu bar is nonstandard on Mac foo.null I'm on macOS 10.14 and I think I'm using or around SDL 2.0.9. This is about the menu bar that SDL sets up which looks like: <App Name> <Window> <View> 1. View menu never proceeds after the Window menu in any Mac application (it is always before). 2. For SDL, the only purpose of the View menu is for a single fullscreen menu item, which is not justifiable enough to reserve space for a menu. The View menu should thus be removed, and the full screen menu item should be added at the end inside of Window's menu. See built in apps like Dictionary, Chess, App Store (on 10.14) that do this. 3. SDL should add a "Close" menu item to the Window's submenu, and it should be the first item. Its key equivalent should map to command w. Without this, you cannot close the game window via this shortcut, and you cannot close the app's About window via this shortcut. 4. Apps typically use "Enter Full Screen" or "Exit Full Screen" depending on context, not "Toggle Full Screen" which is less user friendly -- I personally care about this point the least.
Sam Lantinga 70ce0f2e 2018-12-07T12:02:08 Added the hint SDL_HINT_GAMECONTROLLERCONFIG_FILE to specify a file to load at initialization containing SDL game controller mappings
Ethan Lee 0b6e24f7 2018-12-06T14:26:18 Linux Haptic: Fix periodic.magnitude value
Sam Lantinga 898644d1 2018-12-06T09:09:05 Made it more clear that the values being compared are floats
Brandon Schaefer f9192ab8 2018-12-06T10:39:33 wayland: Do not try to lock on an invalid pointer This happens if you try to lock the pointer and (caps & WL_SEAT_CAPABILITY_POINTER) is false Leading to input->pointer being NULL which ends up bringing the wayland client down (at lease on weston)
Sylvain Becker 7468d1e0 2018-12-06T15:46:40 Fix warnings detected on Android build
Sylvain Becker 39ec1699 2018-12-06T10:24:44 opengles2: fix prototype of glDeleteBuffers
Sylvain Becker 252dc85e 2018-12-06T09:22:00 Fix warnings detected on Android build
Ryan C. Gordon a7563bcd 2018-12-05T19:03:15 joystick: Removed unused variable.
Ryan C. Gordon c7b71371 2018-12-05T17:53:38 Whoops, forgot to add a new source file. :/
Sam Lantinga 6ed76ae1 2018-12-05T14:46:03 Fixed the ROCCAT Tyon mouse showing up as a joystick on Windows
Ryan C. Gordon fbead635 2018-12-05T16:55:59 joystick: Added controller config for IMS Passenger Control Unit Devices.
Ryan C. Gordon 2878d4f8 2018-12-05T16:53:15 egl: Don't force X11 support when testing for EGL. Fixes building Wayland support on embedded systems without X11. (TODO: maybe move the EGL test out of the X11 tests at some point, too.)
Ryan C. Gordon 1689e9f9 2018-12-05T16:51:22 linux: Move SDL_LinuxSetThreadPriority() elsewhere to fix build. Fixes Bugzilla #4393.
Ryan C. Gordon bd3ee07c 2018-12-05T16:49:38 wayland: Send SDL_TOUCH_MOUSEID mouse events for touches.
Sylvain Becker 6259a726 2018-12-05T16:13:12 Warnings: fix a documentation warning and missing prototypes
Sam Lantinga db320e46 2018-12-04T14:21:29 Fixed the PS4 motion controls showing up as a separate game controller on Linux
Sylvain Becker 69c256c1 2018-12-04T18:15:45 Fix comment and end of lines
Sylvain Becker f64c9433 2018-12-04T17:13:13 Update comment URL of USB document (HID Usage Tables 1.12)
Sylvain Becker 09b46204 2018-12-04T16:50:31 Windows: NEON detection and intrinsic includes on Visual Studio Visual Studio doesn't define __ARM_ARCH nor _ARM_NEON, but _M_ARM and _M_ARM64, so SDL_HasNEON() was bypassed. PF_ARM_NEON_INSTRUCTIONS_AVAILABLE doesn't see to be defined (but still works when defined as 19).
Sylvain Becker aea7e56a 2018-12-04T12:34:45 android: use __ARM_NEON instead of __ARM_NEON__ to include <arm_neon.h> Only __ARM_NEON is defined with Android NDK and arm64-v8a Tested on ndk-r18, ndk-r13 and also Xcode. (Visual Studio needs a different fix). Fixes Bugzilla #4409.
Ryan C. Gordon cca9d24c 2018-12-03T09:26:05 direct3d: be more aggressive about resetting invalidated cached state. Fixes Bugzilla #4402.
Ryan C. Gordon 939bf1c4 2018-12-03T02:06:17 render: fix some static analysis warnings.
Ryan C. Gordon 33f78eb1 2018-12-03T01:58:23 direct3d: Make sure streaming textures update before being used for drawing. Fixes Bugzilla #4402.
Ryan C. Gordon b744108a 2018-12-02T21:57:33 Patched to compile on C89 compilers.
Ryan C. Gordon 3c936150 2018-12-02T20:55:57 direct3d: Release and NULL out vertex buffers on reset. Otherwise they are irretrievably lost on window resize, etc, which makes rendering freeze and other disasters. Fixes Bugzilla #4358.
Ryan C. Gordon d4a21f54 2018-12-02T02:43:32 cmake: Comment out some debug logging that can upset build environments. Something about the dashes, colons, numbers makes some builders believe this is an error message.
Ryan C. Gordon 65a7c98c 2018-12-02T02:33:06 directfb: Updated render backend to new internal API. Totally untested, beyond it now compiles again. Probably needs some fixes. Fixes Bugzilla #4405.
Sergey Zhuravlevich 583f61b2 2018-12-01T16:31:56 kmsdrm: Check for resources when validating KMSDRM device in check_modesetting. Fixes Bugzilla #4403.
Sergey Zhuravlevich b3ac87d5 2018-12-01T13:09:00 kmsdrm: uninitialized KMSDRM fixes * Search for valid encoder in connector when it doesn't have an encoder ID set. * Search for valid CRTC in resources and encoder's possible CRTCs when encoder doesn't have one set. * Select default mode if CRTC doesn't have a valid one. * Pick current_mode's W/H/Refresh Rate basing on current and valid CRTC mode, not the saved one.
Ryan C. Gordon 3323b355 2018-12-01T12:19:11 android: use cpufeatures to support SDL_HasNEON() (thanks, Sylvain!). Fixes Bugzilla #4406.
Ryan C. Gordon 1e4acca8 2018-12-01T12:17:34 Added some detail to a Doxygen comment (thanks, Sylvain!).
Ryan C. Gordon fac40f8e 2018-12-01T11:14:20 Patched to compile on Linux with threads enabled. (whoops!)
Ryan C. Gordon c4bc59a5 2018-12-01T10:36:26 Patched to compile on Linux with --disable-threads. Fixes Bugzilla #4393.
Sam Lantinga f205f3a8 2018-11-27T15:10:26 Added support for the Razer Raiju Mobile
Sam Lantinga a95291c9 2018-11-27T11:16:04 Fixed the hotspot for cursors on Raspberry Pi
Sam Lantinga aea48357 2018-11-27T10:20:29 Fixed bug changing cursors on Raspberry Pi
Ozkan Sezer 3f0d520a 2018-11-26T19:55:01 SDL_touch.h (SDL_TouchDeviceType): remove comma at end of enumerator list.
Alex Szpakowski 37b1f989 2018-11-25T22:13:09 metal: use a staging texture in SDL_UpdateTexture, to make sure it doesn't stomp texture data being drawn in a previous frame on the GPU.
Sam Lantinga 7b306bf3 2018-11-23T21:29:42 Added atomics support for armv8-a (Raspberry Pi 3)
Sam Lantinga bd0ae0a5 2018-11-23T21:11:11 Do a second pass to find libraries without a single version digit after the .so This finds libsndio.so.6.1 on Raspberry Pi
Alex Szpakowski 872936a4 2018-11-21T23:46:37 metal: Fix an incorrect division.
Alex Szpakowski 4a58722b 2018-11-21T23:37:23 metal: SDL_RenderFillRects uses one draw call per 16k rectangles (within the given FillRects call), instead of one draw call per rectangle. Reduces CPU usage when drawing many rectangles.
Ozkan Sezer 14e389ea 2018-11-20T10:55:00 minor update to Makefile.os2, added a test/Makefile.os2.
Sam Lantinga 5c5ba0e3 2018-11-19T21:35:59 Fixed bug 4394 - Crash in SDL_PumpEvents() after SDL_DestroyWindow() Cameron Gutman After updating to SDL 2.0.9, I got a user report that my app was crashing when closing a SDL_WINDOW_FULLSCREEN window to return to my Qt-based UI. It looks like the dead SDL window is getting a spurious updateLayer call which is causing SDL to dereference a null SDL_WindowData pointer. For some reason, this only happens when using SDL_WINDOW_FULLSCREEN and not windowed or SDL_WINDOW_FULLSCREEN_DESKTOP. I was also unsuccessful in my attempt to get a simple reproducer for this crash. The Session.cpp code is available https://github.com/moonlight-stream/moonlight-qt/blob/688c4a90d994aa23e7b0af3ffcbb8707886db780/app/streaming/session.cpp but I slightly modified it (adding a SDL_PumpEvents() call at 1179 to immediately trigger the issue, otherwise it happened when Qt next pumped the event loop). The crashing line is: NSMutableArray *contexts = data->nscontexts;
Sam Lantinga ac15de18 2018-11-19T21:28:52 Fixed bug 4392 - SDL_cpuinfo.h breaks compilation with C bool type Luke Dashjr Bug 3993 was "fixed" by #undef'ing bool. But this breaks C99's stdbool.h bool too. For example, mpv's build fails with: ../audio/out/ao_sdl.c:35:5: error: unknown type name ?bool? It seems ill-advised to be #undef'ing *anything* here - what if the code including SDL_cpuinfo.h actually wants to use altivec?
Sam Lantinga b73703b9 2018-11-19T21:17:00 Fixed bug 4391 - hid_enumerate() sometimes causes game to freeze for a few seconds Daniel Gibson Even though my game (dhewm3) doesn't use SDL_INIT_JOYSTICK, SDL_PumpEvent() calls SDL_JoystickUpdate() which ends up calling hid_enumerate() every three seconds, and sometimes on my Win7 box hid_enumerate() takes about 5 seconds, which causes the whole game to freeze for that time.
Ozkan Sezer d3fa42b8 2018-11-18T19:28:20 os/2 bits for SDL_malloc.c -- from libffi
Ozkan Sezer 1a02403e 2018-11-18T11:50:20 libm: Watcom defines huge=__huge: undefine it to fix build using Watcom.
Ozkan Sezer ed8413c9 2018-11-18T11:50:02 Makefile.os2: build libm as a static lib and add it to linkage. in case it is needed some day.
Ryan C. Gordon 457e58c4 2018-11-17T16:24:52 opengles: Fixed compiler warnings.
Sam Lantinga 9719f89d 2018-11-17T12:12:29 Back out change initializing renderer blend mode incorrectly.
Ryan C. Gordon fde7592a 2018-11-17T14:39:42 direct3d11: Fixed missing rendering of solid primitives. Fixes Bugzilla #4388.
Ryan C. Gordon 782f1685 2018-11-17T14:37:51 Fixed a few compiler warnings.
Sam Lantinga 29e15ce6 2018-11-17T00:58:45 The default draw blendmode is SDL_BLENDMODE_NONE
Sylvain Beucler 1f6bd951 2018-11-15T18:22:30 Emscripten: make CloseAudio actually close audio cf. https://bugzilla.libsdl.org/show_bug.cgi?id=4176
Ozkan Sezer 43d47f6b 2018-11-15T07:20:02 fix permissions
Ryan C. Gordon 9262c0de 2018-11-14T22:38:58 software: fix blits with color mods that change during a command queue run.
Sam Lantinga 2e348c1f 2018-11-14T13:37:22 Fixed bug 3193 - Dualshock 3's motion sensors overwrite analog stick maxxus The Dualshock 3's motion sensors don't seem to be reported by the call to EVIOCGBIT but they still send EV_ABS events. Because they're not reported by EVIOCGBIT they're not assigned a proper axis ids and the default of 0 is used, which is the valid id for the left analog sticks left/right axis.
Sam Lantinga 1a4c0d4e 2018-11-12T19:23:49 Fixed bug 4377 - SDL_PIXELFORMAT enum is anonymous, which prevents its use in a templated function zen3d While trying to build Pixie lisp (https://github.com/pixie-lang/pixie), which uses SDL for multimedia output, the mandelbrot example won't build. The problem is that internally pixie uses a templated function to dump a value, and gcc chokes because SDL_PIXELFORMAT_RGA8888 is an anonymous enum. I solved the problem locally by changing from: enum { SDL_PIXELFORMAT_UNKNOWN, ... etc. ... SDL_PIXELFORMAT_YUYV = ... etc ... }; to: typedef enum { SDL_PIXELFORMAT_UNKNOWN, ... etc. ... SDL_PIXELFORMAT_YUYV = ... etc ... } SDL_PIXELFORMAT_ENUM; The net result of this change is that the enum containing SDL_PIXELFORMAT_* is no longer an anonymous enum and can now be used by a templated function. This local change fixes Pixie lisp for me. I did notice that you use the idiom typedef enum { ... etc ... } SDL_FOO; elsewhere in your code, so that change to SDL_PIXELFORMAT doesn't look like it would have a negative impact.
Sam Lantinga b815ad56 2018-11-12T16:42:49 Fixed bug 4366 - Compile throws a warning on RPI (Raspbian Stretch) midwan When trying to compile on a Raspberry Pi 3, running Raspbian Stretch (fully updated), a warning appears: /home/pi/projects/SDL/src/test/SDL_test_memory.c: In function ?SDL_TrackAllocation?: /home/pi/projects/SDL/src/test/SDL_test_memory.c:112:109: warning: format ?%llx? expects argument of type ?long long unsigned int?, but argument 5 has type ?unw_word_t {aka unsigned int}? [-Wformat=] snprintf(entry->stack_names[stack_index], sizeof(entry->stack_names[stack_index]), "%s+0x%llx", sym, offset);
Sam Lantinga 5e153194 2018-11-12T16:34:58 Fixed bug 4367 - compatibility version decreased between 2.0.8 and 2.0.9 Joshua Root The change resulting from Bug 4208 changed the compatibility_version of libSDL2 from 9.0.0 to 1.0.0. This is simply wrong. This means that programs linked against 2.0.9 are considered by the dynamic linker to be compatible with all previous versions of libSDL2. This is not the case since new public symbols have been added. The way compatibility_version and current_version are meant to work is: * current_version increases every time the library changes in any way. * compatibility_version is increased to match current_version whenever new public symbols are added. Thus both versions should only ever increase. The solution to the Xcode project and autotools not having matching versions should have been to increase the version(s) in the Xcode project. Reference: https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/VersionInformation.html
Alex Szpakowski c525ff35 2018-11-10T20:56:23 cocoa: fix building with the macOS 10.7 SDK (thanks Riccardo!) Fixes bug #4368
Alex Szpakowski 5029d50e 2018-11-10T16:15:48 Add SDL_TouchDeviceType enum and SDL_GetTouchDeviceType(SDL_TouchID id). Touch device types include SDL_TOUCH_DEVICE_DIRECT (a touch screen with window-relative coordinates for touches), SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE (a trackpad-style device with absolute device coordinates), and SDL_TOUCH_DEVICE_INDIRECT_RELATIVE (a trackpad-style device with screen cursor-relative coordinates). Phone screens are an example of a direct device type. Mac trackpads are the indirect-absolute touch device type. The Apple TV remote is an indirect-relative touch device type.
Sam Lantinga 2196e576 2018-11-07T07:52:39 Used confflags +=, so each option can be enabled individually, if desired
Sam Lantinga 44c5d803 2018-11-07T07:38:11 The Debian maintainers aren't using these rules, so enable dynamic loading of shared libraries by default for the Steam Linux Runtime
Sam Lantinga 9665a508 2018-11-06T16:57:07 Added Vulkan headers version 1.1.91 Downloaded from https://github.com/KhronosGroup/Vulkan-Headers
Sebastian Krzyszkowiak 48917e0e 2018-11-07T01:08:35 wayland: fix resizing and fullscreen toggling For starters, we need to correctly respond to 0,0 configure after unsetting fullscreen. Also, turns out that there should be no drawing calls at all in between eglSwapBuffers and wl_egl_window_resize, as otherwise EGL can already allocate a wrongly sized buffer for a next frame, so handle those together.
Ozkan Sezer ed694ec6 2018-11-06T23:45:50 close_code.h: #error if included without matching begin_code.h
Ozkan Sezer a60751b7 2018-11-06T20:50:24 fix bug #4362 - SDL_syswm.h with SDL_PROTOTYPES_ONLY broken in C++ mode
Ryan C. Gordon 1dbf7dc2 2018-11-04T21:11:07 os2: Do a distclean instead of removing files manually in buildbot script.
Ryan C. Gordon e45ed114 2018-11-04T20:47:17 os2: Added a script for the buildbot.
Sebastian Krzyszkowiak 5f980514 2018-11-04T21:08:40 wayland: ask xdg-decoration protocol extension to use server-side decorations if possible.
Alex Szpakowski 244b79e1 2018-11-04T14:31:56 metal: SDL_RenderReadPixels on macOS synchronizes the render target's texture data if it's managed, before reading from it.
Alex Szpakowski c9fed272 2018-11-04T12:31:02 metal: fix the SDL_RENDERER_PRESENTVSYNC flag not being set on the renderer info on macOS, when vsync is used.
Alex Szpakowski c2bba9e4 2018-11-04T12:24:05 metal: fix the size of the buffer used for constant data.
Ryan C. Gordon bc57ac27 2018-11-02T21:34:17 mir: Removed mir client support. Fixes Bugzilla #4288.
Sam Lantinga 4026f89d 2018-11-02T18:07:11 Fixed bug 4308 - Prebuilt SDL.dll files not compiled with ASLR support (DYNAMICBASE) Cameron Gutman The current SDL 2.0.8 and the prerelease SDL 2.0.9 are compiled without the DYNAMICBASE flag to indicate that ASLR may relocate the DLL at load-time. https://docs.microsoft.com/en-us/cpp/build/reference/dynamicbase-use-address-space-layout-randomization?view=vs-2017 When I build SDL.dll myself using the VS2010 project, the DLL has the DYNAMICBASE flag set (as is the default). Similarly, MinGW-w64 also enables ASLR by default on all binaries for a couple years now (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=836365)
Sam Lantinga cc39c7a0 2018-11-02T17:25:00 Fixed bug 4320 - Android remove reflection for HIDDeviceBLESteamController Sylvain Uneeded use of reflection to access connectGatt method in HIDDeviceBLESteamController.java The method is API 23 https://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#connectGatt(android.content.Context,%20boolean,%20android.bluetooth.BluetoothGattCallback,%20int)
Sam Lantinga 67a94893 2018-11-02T17:22:15 Fixed bug 4319 - Android remove reflection for PointerIcon Sylvain Since SDL2 min requirement is Android SDK 26, and PointerIcon is 24. We don't need reflection to access it.
Sam Lantinga 47fb450b 2018-11-02T17:18:03 Fixed bug 4315 - little Warning in Android_JNI_CaptureAudioBuffer Sylvain SDL_android.c src/core/android/SDL_android.c:1302:5: warning: variable 'br' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized] default: ^~~~~~~ src/core/android/SDL_android.c:1306:12: note: uninitialized use occurs here return br; ^~ src/core/android/SDL_android.c:1270:12: note: initialize the variable 'br' to silence this warning jint br; ^ Maybe we could add some basics warning flags, not to see all warnings, but so that new warnings are caught sooner. I would go for -Wall -Wextra, and some -Wno-warning for the allowed warnings.
Alex Szpakowski 457390fc 2018-11-01T20:24:21 metal: avoid an extra buffer allocation and GPU data copy in RunCommandQueue, it's not needed. Improves overall performance.
Alex Szpakowski 4e86dfd8 2018-11-01T19:49:01 metal: remove an obsolete section of a constant buffer.
Ozkan Sezer 0d79a8a1 2018-11-01T20:04:24 fix build using Watcom : ./src/render/SDL_render.c(2168): Error! E1054: Expression must be constant ./src/render/SDL_render.c(2168): Error! E1054: Expression must be constant ./src/render/SDL_render.c(2175): Error! E1054: Expression must be constant ./src/render/SDL_render.c(2175): Error! E1054: Expression must be constant ./src/render/SDL_render.c(2322): Error! E1054: Expression must be constant ./src/render/SDL_render.c(2322): Error! E1054: Expression must be constant ./src/render/SDL_render.c(2322): Error! E1054: Expression must be constant ./src/render/SDL_render.c(2322): Error! E1054: Expression must be constant ./src/render/SDL_render.c(2329): Error! E1054: Expression must be constant ./src/render/SDL_render.c(2329): Error! E1054: Expression must be constant ./src/render/SDL_render.c(2329): Error! E1054: Expression must be constant ./src/render/SDL_render.c(2329): Error! E1054: Expression must be constant ./src/render/software/SDL_render_sw.c(602): Error! E1054: Expression must be constant ./src/render/software/SDL_render_sw.c(602): Error! E1054: Expression must be constant ./src/render/software/SDL_render_sw.c(602): Error! E1054: Expression must be constant ./src/render/software/SDL_render_sw.c(602): Error! E1054: Expression must be constant