Loading include/ui/sdl2.h +6 −0 Original line number Diff line number Diff line Loading @@ -13,11 +13,17 @@ struct sdl2_console { int hidden; }; void sdl2_window_create(struct sdl2_console *scon); void sdl2_window_destroy(struct sdl2_console *scon); void sdl2_window_resize(struct sdl2_console *scon); void sdl2_reset_keys(struct sdl2_console *scon); void sdl2_process_key(struct sdl2_console *scon, SDL_KeyboardEvent *ev); void sdl2_2d_update(DisplayChangeListener *dcl, int x, int y, int w, int h); void sdl2_2d_switch(DisplayChangeListener *dcl, DisplaySurface *new_surface); #endif /* SDL2_H */ ui/sdl2-2d.c +42 −0 Original line number Diff line number Diff line Loading @@ -59,3 +59,45 @@ void sdl2_2d_update(DisplayChangeListener *dcl, SDL_RenderCopy(scon->real_renderer, scon->texture, &rect, &rect); SDL_RenderPresent(scon->real_renderer); } void sdl2_2d_switch(DisplayChangeListener *dcl, DisplaySurface *new_surface) { struct sdl2_console *scon = container_of(dcl, struct sdl2_console, dcl); DisplaySurface *old_surface = scon->surface; int format = 0; scon->surface = new_surface; if (scon->texture) { SDL_DestroyTexture(scon->texture); scon->texture = NULL; } if (!new_surface) { sdl2_window_destroy(scon); return; } if (!scon->real_window) { sdl2_window_create(scon); } else if (old_surface && ((surface_width(old_surface) != surface_width(new_surface)) || (surface_height(old_surface) != surface_height(new_surface)))) { sdl2_window_resize(scon); } SDL_RenderSetLogicalSize(scon->real_renderer, surface_width(new_surface), surface_height(new_surface)); if (surface_bits_per_pixel(scon->surface) == 16) { format = SDL_PIXELFORMAT_RGB565; } else if (surface_bits_per_pixel(scon->surface) == 32) { format = SDL_PIXELFORMAT_ARGB8888; } scon->texture = SDL_CreateTexture(scon->real_renderer, format, SDL_TEXTUREACCESS_STREAMING, surface_width(new_surface), surface_height(new_surface)); } ui/sdl2.c +4 −46 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ static struct sdl2_console *get_scon_from_window(uint32_t window_id) return NULL; } static void sdl2_window_create(struct sdl2_console *scon) void sdl2_window_create(struct sdl2_console *scon) { int flags = 0; Loading @@ -95,7 +95,7 @@ static void sdl2_window_create(struct sdl2_console *scon) sdl_update_caption(scon); } static void sdl2_window_destroy(struct sdl2_console *scon) void sdl2_window_destroy(struct sdl2_console *scon) { if (!scon->real_window) { return; Loading @@ -107,7 +107,7 @@ static void sdl2_window_destroy(struct sdl2_console *scon) scon->real_window = NULL; } static void sdl2_window_resize(struct sdl2_console *scon) void sdl2_window_resize(struct sdl2_console *scon) { if (!scon->real_window) { return; Loading @@ -118,48 +118,6 @@ static void sdl2_window_resize(struct sdl2_console *scon) surface_height(scon->surface)); } static void sdl_switch(DisplayChangeListener *dcl, DisplaySurface *new_surface) { struct sdl2_console *scon = container_of(dcl, struct sdl2_console, dcl); DisplaySurface *old_surface = scon->surface; int format = 0; scon->surface = new_surface; if (scon->texture) { SDL_DestroyTexture(scon->texture); scon->texture = NULL; } if (!new_surface) { sdl2_window_destroy(scon); return; } if (!scon->real_window) { sdl2_window_create(scon); } else if (old_surface && ((surface_width(old_surface) != surface_width(new_surface)) || (surface_height(old_surface) != surface_height(new_surface)))) { sdl2_window_resize(scon); } SDL_RenderSetLogicalSize(scon->real_renderer, surface_width(new_surface), surface_height(new_surface)); if (surface_bits_per_pixel(scon->surface) == 16) { format = SDL_PIXELFORMAT_RGB565; } else if (surface_bits_per_pixel(scon->surface) == 32) { format = SDL_PIXELFORMAT_ARGB8888; } scon->texture = SDL_CreateTexture(scon->real_renderer, format, SDL_TEXTUREACCESS_STREAMING, surface_width(new_surface), surface_height(new_surface)); } static void sdl_update_caption(struct sdl2_console *scon) { char win_title[1024]; Loading Loading @@ -710,7 +668,7 @@ static void sdl_cleanup(void) static const DisplayChangeListenerOps dcl_2d_ops = { .dpy_name = "sdl2-2d", .dpy_gfx_update = sdl2_2d_update, .dpy_gfx_switch = sdl_switch, .dpy_gfx_switch = sdl2_2d_switch, .dpy_refresh = sdl_refresh, .dpy_mouse_set = sdl_mouse_warp, .dpy_cursor_define = sdl_mouse_define, Loading Loading
include/ui/sdl2.h +6 −0 Original line number Diff line number Diff line Loading @@ -13,11 +13,17 @@ struct sdl2_console { int hidden; }; void sdl2_window_create(struct sdl2_console *scon); void sdl2_window_destroy(struct sdl2_console *scon); void sdl2_window_resize(struct sdl2_console *scon); void sdl2_reset_keys(struct sdl2_console *scon); void sdl2_process_key(struct sdl2_console *scon, SDL_KeyboardEvent *ev); void sdl2_2d_update(DisplayChangeListener *dcl, int x, int y, int w, int h); void sdl2_2d_switch(DisplayChangeListener *dcl, DisplaySurface *new_surface); #endif /* SDL2_H */
ui/sdl2-2d.c +42 −0 Original line number Diff line number Diff line Loading @@ -59,3 +59,45 @@ void sdl2_2d_update(DisplayChangeListener *dcl, SDL_RenderCopy(scon->real_renderer, scon->texture, &rect, &rect); SDL_RenderPresent(scon->real_renderer); } void sdl2_2d_switch(DisplayChangeListener *dcl, DisplaySurface *new_surface) { struct sdl2_console *scon = container_of(dcl, struct sdl2_console, dcl); DisplaySurface *old_surface = scon->surface; int format = 0; scon->surface = new_surface; if (scon->texture) { SDL_DestroyTexture(scon->texture); scon->texture = NULL; } if (!new_surface) { sdl2_window_destroy(scon); return; } if (!scon->real_window) { sdl2_window_create(scon); } else if (old_surface && ((surface_width(old_surface) != surface_width(new_surface)) || (surface_height(old_surface) != surface_height(new_surface)))) { sdl2_window_resize(scon); } SDL_RenderSetLogicalSize(scon->real_renderer, surface_width(new_surface), surface_height(new_surface)); if (surface_bits_per_pixel(scon->surface) == 16) { format = SDL_PIXELFORMAT_RGB565; } else if (surface_bits_per_pixel(scon->surface) == 32) { format = SDL_PIXELFORMAT_ARGB8888; } scon->texture = SDL_CreateTexture(scon->real_renderer, format, SDL_TEXTUREACCESS_STREAMING, surface_width(new_surface), surface_height(new_surface)); }
ui/sdl2.c +4 −46 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ static struct sdl2_console *get_scon_from_window(uint32_t window_id) return NULL; } static void sdl2_window_create(struct sdl2_console *scon) void sdl2_window_create(struct sdl2_console *scon) { int flags = 0; Loading @@ -95,7 +95,7 @@ static void sdl2_window_create(struct sdl2_console *scon) sdl_update_caption(scon); } static void sdl2_window_destroy(struct sdl2_console *scon) void sdl2_window_destroy(struct sdl2_console *scon) { if (!scon->real_window) { return; Loading @@ -107,7 +107,7 @@ static void sdl2_window_destroy(struct sdl2_console *scon) scon->real_window = NULL; } static void sdl2_window_resize(struct sdl2_console *scon) void sdl2_window_resize(struct sdl2_console *scon) { if (!scon->real_window) { return; Loading @@ -118,48 +118,6 @@ static void sdl2_window_resize(struct sdl2_console *scon) surface_height(scon->surface)); } static void sdl_switch(DisplayChangeListener *dcl, DisplaySurface *new_surface) { struct sdl2_console *scon = container_of(dcl, struct sdl2_console, dcl); DisplaySurface *old_surface = scon->surface; int format = 0; scon->surface = new_surface; if (scon->texture) { SDL_DestroyTexture(scon->texture); scon->texture = NULL; } if (!new_surface) { sdl2_window_destroy(scon); return; } if (!scon->real_window) { sdl2_window_create(scon); } else if (old_surface && ((surface_width(old_surface) != surface_width(new_surface)) || (surface_height(old_surface) != surface_height(new_surface)))) { sdl2_window_resize(scon); } SDL_RenderSetLogicalSize(scon->real_renderer, surface_width(new_surface), surface_height(new_surface)); if (surface_bits_per_pixel(scon->surface) == 16) { format = SDL_PIXELFORMAT_RGB565; } else if (surface_bits_per_pixel(scon->surface) == 32) { format = SDL_PIXELFORMAT_ARGB8888; } scon->texture = SDL_CreateTexture(scon->real_renderer, format, SDL_TEXTUREACCESS_STREAMING, surface_width(new_surface), surface_height(new_surface)); } static void sdl_update_caption(struct sdl2_console *scon) { char win_title[1024]; Loading Loading @@ -710,7 +668,7 @@ static void sdl_cleanup(void) static const DisplayChangeListenerOps dcl_2d_ops = { .dpy_name = "sdl2-2d", .dpy_gfx_update = sdl2_2d_update, .dpy_gfx_switch = sdl_switch, .dpy_gfx_switch = sdl2_2d_switch, .dpy_refresh = sdl_refresh, .dpy_mouse_set = sdl_mouse_warp, .dpy_cursor_define = sdl_mouse_define, Loading