From 2948c5a747841e12f642769e1bc2e53dee3e945a Mon Sep 17 00:00:00 2001 From: marshfolx Date: Thu, 11 Dec 2025 14:10:10 +0800 Subject: [PATCH 1/4] Add conditional definition for u8g_sdl_multiple use U8G2_U8G_SDL_MULTIPLE to adjust window size and pixel size. --- sys/sdl/common/u8x8_d_sdl_128x64.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sys/sdl/common/u8x8_d_sdl_128x64.c b/sys/sdl/common/u8x8_d_sdl_128x64.c index 93f33ff6..0af4e8fa 100644 --- a/sys/sdl/common/u8x8_d_sdl_128x64.c +++ b/sys/sdl/common/u8x8_d_sdl_128x64.c @@ -19,7 +19,16 @@ SDL_Window *u8g_sdl_window; SDL_Surface *u8g_sdl_screen; #endif +#ifdef U8G2_U8G_SDL_MULTIPLE + +int u8g_sdl_multiple = U8G2_U8G_SDL_MULTIPLE; + +#else + int u8g_sdl_multiple = 3; + +#endif + uint32_t u8g_sdl_color[256]; int u8g_sdl_height, u8g_sdl_width; From 3cac0da0c9d8ac3d69749befa69e847cb788c368 Mon Sep 17 00:00:00 2001 From: Bas Stottelaar Date: Sun, 15 Feb 2026 11:47:16 +0100 Subject: [PATCH 2/4] fix: cast rad to u8g2_int_t in u8g2_draw_arc --- csrc/u8g2_arc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csrc/u8g2_arc.c b/csrc/u8g2_arc.c index 5bd18c18..9264e63a 100644 --- a/csrc/u8g2_arc.c +++ b/csrc/u8g2_arc.c @@ -75,7 +75,7 @@ static void u8g2_draw_arc(u8g2_t *u8g2, u8g2_uint_t x0, u8g2_uint_t y0, u8g2_uin d = d - 2 * x - 1; x = x + 1; } - else if (d < 2 * (rad - y)) + else if (d < 2 * ((u8g2_int_t)rad - y)) { d = d + 2 * y - 1; y = y - 1; From acd6667d4593ca8a5b10fba1669f27b4a35871b7 Mon Sep 17 00:00:00 2001 From: Bas Stottelaar Date: Sun, 15 Feb 2026 13:42:03 +0100 Subject: [PATCH 3/4] fix: use memcpy to prevent memory alignment error --- sys/sdl/common/u8x8_d_sdl_128x64.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sys/sdl/common/u8x8_d_sdl_128x64.c b/sys/sdl/common/u8x8_d_sdl_128x64.c index 0af4e8fa..18b854cd 100644 --- a/sys/sdl/common/u8x8_d_sdl_128x64.c +++ b/sys/sdl/common/u8x8_d_sdl_128x64.c @@ -8,6 +8,7 @@ #endif #include #include +#include //#define HEIGHT (64) //#define WIDTH 128 @@ -36,7 +37,7 @@ int u8g_sdl_height, u8g_sdl_width; static void u8g_sdl_set_pixel(int x, int y, int idx) { - uint32_t *ptr; + uint8_t *ptr; uint32_t offset; int i, j; @@ -59,8 +60,8 @@ static void u8g_sdl_set_pixel(int x, int y, int idx) assert( offset < (Uint32)(u8g_sdl_width * u8g_sdl_multiple * u8g_sdl_height * u8g_sdl_multiple * u8g_sdl_screen->format->BytesPerPixel) ); - ptr = (uint32_t *)(((uint8_t *)(u8g_sdl_screen->pixels)) + offset); - *ptr = u8g_sdl_color[idx]; + ptr = ((uint8_t *)(u8g_sdl_screen->pixels)) + offset; + memcpy(ptr, &u8g_sdl_color[idx], sizeof(u8g_sdl_color[idx])); #endif } } From 830dcdf0c3d0fda137b8acae7d583d8e1b637740 Mon Sep 17 00:00:00 2001 From: Bas Stottelaar Date: Sun, 15 Feb 2026 13:48:07 +0100 Subject: [PATCH 4/4] fix: silence unused variable warning in assert(..) When assert(..) is a no-op, compilers may warn about the variable being unused. Explicitly marking it to silence the warning. --- csrc/u8g2_ll_hvline.c | 1 + 1 file changed, 1 insertion(+) diff --git a/csrc/u8g2_ll_hvline.c b/csrc/u8g2_ll_hvline.c index 59ab4d17..72d7c0c8 100644 --- a/csrc/u8g2_ll_hvline.c +++ b/csrc/u8g2_ll_hvline.c @@ -77,6 +77,7 @@ void u8g2_ll_hvline_vertical_top_lsb(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, uint8_t or_mask, xor_mask; #ifdef __unix uint8_t *max_ptr = u8g2->tile_buf_ptr + u8g2_GetU8x8(u8g2)->display_info->tile_width*u8g2->tile_buf_height*8; + (void)max_ptr; /* silence unused variable warning if asserts are disabled */ #endif //assert(x >= u8g2->buf_x0);