From 3e1c26bcc4b88c87a42da6b1e6f5c816466a1819 Mon Sep 17 00:00:00 2001 From: Vincent Torri Date: Fri, 9 Jan 2026 23:31:32 +0100 Subject: [PATCH 1/2] switch sdl2 to sdl3 --- src/Example.h | 37 +++++++++++++++++-------------------- src/LottieExtension.cpp | 4 ++-- src/LottieInteraction.cpp | 4 ++-- src/LottieTweening.cpp | 4 ++-- src/MultiCanvas.cpp | 11 ++++++----- src/meson.build | 4 ++-- 6 files changed, 31 insertions(+), 33 deletions(-) diff --git a/src/Example.h b/src/Example.h index a91ce86..531576b 100644 --- a/src/Example.h +++ b/src/Example.h @@ -27,9 +27,8 @@ #include #include #include -#include -#include -#include +#include +#include #ifdef _WIN32 #include #ifndef PATH_MAX @@ -251,35 +250,33 @@ struct Window //SDL Event handling while (SDL_PollEvent(&event)) { switch (event.type) { - case SDL_QUIT: { + case SDL_EVENT_QUIT: { running = false; break; } - case SDL_KEYUP: { - if (event.key.keysym.sym == SDLK_ESCAPE) { + case SDL_EVENT_KEY_UP: { + if (event.key.key == SDLK_ESCAPE) { running = false; } break; } - case SDL_MOUSEBUTTONDOWN: { + case SDL_EVENT_MOUSE_BUTTON_DOWN: { needDraw |= example->clickdown(canvas, event.button.x, event.button.y); break; } - case SDL_MOUSEBUTTONUP: { + case SDL_EVENT_MOUSE_BUTTON_UP: { needDraw |= example->clickup(canvas, event.button.x, event.button.y); break; } - case SDL_MOUSEMOTION: { + case SDL_EVENT_MOUSE_MOTION: { needDraw |= example->motion(canvas, event.button.x, event.button.y); break; } - case SDL_WINDOWEVENT: { - if (event.window.event == SDL_WINDOWEVENT_RESIZED) { - width = event.window.data1; - height = event.window.data2; - needResize = true; - needDraw = true; - } + case SDL_EVENT_WINDOW_RESIZED: { + width = event.window.data1; + height = event.window.data2; + needResize = true; + needDraw = true; } } } @@ -322,7 +319,7 @@ struct SwWindow : Window { if (!initialized) return; - window = SDL_CreateWindow("ThorVG Example (Software)", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, SDL_WINDOW_HIDDEN | SDL_WINDOW_RESIZABLE); + window = SDL_CreateWindow("ThorVG Example (Software)", width, height, SDL_WINDOW_HIDDEN | SDL_WINDOW_RESIZABLE); //Create a Canvas. Use Smart Rendering by default. canvas = tvg::SwCanvas::gen(); @@ -371,7 +368,7 @@ struct GlWindow : Window SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3); #endif - window = SDL_CreateWindow("ThorVG Example (OpenGL/ES)", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN | SDL_WINDOW_RESIZABLE); + window = SDL_CreateWindow("ThorVG Example (OpenGL/ES)", width, height, SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN | SDL_WINDOW_RESIZABLE); context = SDL_GL_CreateContext(window); //Create a Canvas @@ -390,7 +387,7 @@ struct GlWindow : Window delete(canvas); canvas = nullptr; - SDL_GL_DeleteContext(context); + SDL_GL_DestroyContext(context); } void resize() override @@ -423,7 +420,7 @@ struct WgWindow : Window { if (!initialized) return; - window = SDL_CreateWindow("ThorVG Example (WebGPU)", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, SDL_WINDOW_HIDDEN); + window = SDL_CreateWindow("ThorVG Example (WebGPU)", width, height, SDL_WINDOW_HIDDEN); //Here we create our WebGPU surface from the window! SDL_SysWMinfo windowWMInfo; diff --git a/src/LottieExtension.cpp b/src/LottieExtension.cpp index 62997a7..ac1b878 100644 --- a/src/LottieExtension.cpp +++ b/src/LottieExtension.cpp @@ -17,7 +17,7 @@ * SOFTWARE. */ -#include +#include #include "Example.h" /************************************************************************/ @@ -318,4 +318,4 @@ struct UserExample : tvgexam::Example int main(int argc, char **argv) { return tvgexam::main(new UserExample, argc, argv, false, 1024, 1024, 0 /* turn off for expressions */); -} \ No newline at end of file +} diff --git a/src/LottieInteraction.cpp b/src/LottieInteraction.cpp index 553817d..0b6ef4e 100644 --- a/src/LottieInteraction.cpp +++ b/src/LottieInteraction.cpp @@ -20,7 +20,7 @@ * SOFTWARE. */ -#include +#include #include #include "Example.h" @@ -174,4 +174,4 @@ struct UserExample : tvgexam::Example int main(int argc, char **argv) { return tvgexam::main(new UserExample, argc, argv, true, 1024, 1024, 0); -} \ No newline at end of file +} diff --git a/src/LottieTweening.cpp b/src/LottieTweening.cpp index f8ad630..9ccfbcf 100644 --- a/src/LottieTweening.cpp +++ b/src/LottieTweening.cpp @@ -20,7 +20,7 @@ * SOFTWARE. */ -#include +#include #include "Example.h" /************************************************************************/ @@ -197,4 +197,4 @@ struct UserExample : tvgexam::Example int main(int argc, char **argv) { return tvgexam::main(new UserExample, argc, argv, false, 1024, 1024); -} \ No newline at end of file +} diff --git a/src/MultiCanvas.cpp b/src/MultiCanvas.cpp index 61e9142..10af587 100644 --- a/src/MultiCanvas.cpp +++ b/src/MultiCanvas.cpp @@ -66,12 +66,13 @@ void mainloop() //SDL Event handling while (SDL_PollEvent(&event)) { switch (event.type) { - case SDL_QUIT: { + case SDL_EVENT_QUIT: { running = false; break; } - case SDL_KEYUP: { - if (event.key.keysym.sym == SDLK_ESCAPE) { + case SDL_EVENT_KEY_UP: { + + if (event.key.key == SDLK_ESCAPE) { running = false; } break; @@ -88,7 +89,7 @@ void mainloop() void runSw() { - auto window = SDL_CreateWindow("ThorVG Example (Software)", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, SDL_WINDOW_HIDDEN); + auto window = SDL_CreateWindow("ThorVG Example (Software)", WIDTH, HEIGHT, SDL_WINDOW_HIDDEN); auto surface = SDL_GetWindowSurface(window); for (int counter = 0; counter < NUM_PER_LINE * NUM_PER_LINE; ++counter) { @@ -416,4 +417,4 @@ int main(int argc, char **argv) } return 0; -} \ No newline at end of file +} diff --git a/src/meson.build b/src/meson.build index 6968f90..d59cddc 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,7 +1,7 @@ cc = meson.get_compiler('cpp') thorvg_dep = dependency('thorvg-1', required: true) -examples_dep = [thorvg_dep, dependency('sdl2', required: true)] -compiler_flags = ['-DSDL_MAIN_HANDLED'] +examples_dep = [thorvg_dep, dependency('sdl3', required: true)] +compiler_flags = [] # GL or GLES gl_dep = dependency('gl', required: false) From 8bb78432942abd4934c7685a5624cf6549e35426 Mon Sep 17 00:00:00 2001 From: Vincent Torri Date: Fri, 9 Jan 2026 23:39:19 +0100 Subject: [PATCH 2/2] update CI files --- .github/workflows/build.yml | 2 +- .github/workflows/build_test.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b0e730d..70ffd2c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: - name: Install Packages run: | sudo apt-get update - sudo apt-get install meson ninja-build libsdl2-dev + sudo apt-get install meson ninja-build libsdl3-dev - name: Install ThorVG run: | diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index 378c51c..1570d38 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -20,7 +20,7 @@ jobs: - name: Install Packages run: | sudo apt-get update - sudo apt-get install meson ninja-build libsdl2-dev + sudo apt-get install meson ninja-build libsdl3-dev - name: Install ThorVG run: |