Refactor: Remove sdl_videodev and its accessor macros

This commit is contained in:
kichikuou
2025-01-09 08:26:53 +09:00
parent 780d30c01f
commit e9d8a9d1a6
2 changed files with 25 additions and 41 deletions
+12 -36
View File
@@ -30,27 +30,18 @@
#include "portab.h"
#include "ags.h"
struct sdl_private_data {
SDL_Window *window;
SDL_Renderer *renderer;
SDL_Texture *texture;
SDL_Surface *dsp; /* toplevel surface */
SDL_Surface *dib; /* offscreen surface */
SDL_Color col[256]; /* color palette */
agsurface_t *cimg;
int view_w;
int view_h;
boolean dirty;
boolean fs_on;
boolean (*custom_event_handler)(const SDL_Event *);
};
extern SDL_Window *sdl_window;
extern SDL_Renderer *sdl_renderer;
extern SDL_Texture *sdl_texture;
extern SDL_Surface *sdl_display; // toplevel surface
extern SDL_Surface *sdl_dib; // offscreen surface
extern SDL_Color sdl_col[256]; // color palette
extern agsurface_t *sdl_dibinfo;
extern int view_w;
extern int view_h;
extern bool sdl_dirty;
extern bool sdl_fs_on;
extern boolean (*sdl_custom_event_handler)(const SDL_Event *);
void sdl_event_init(void);
void sdl_cursor_init(void);
@@ -59,19 +50,4 @@ boolean sdl_joy_open(int index);
SDL_Surface *sdl_dib_to_surface_with_alpha(int x, int y, int w, int h);
SDL_Surface *sdl_dib_to_surface_colorkey(int x, int y, int w, int h, int col);
extern struct sdl_private_data *sdl_videodev;
#define sdl_window (sdl_videodev->window)
#define sdl_renderer (sdl_videodev->renderer)
#define sdl_texture (sdl_videodev->texture)
#define sdl_display (sdl_videodev->dsp)
#define sdl_dib (sdl_videodev->dib)
#define sdl_col (sdl_videodev->col)
#define sdl_dibinfo (sdl_videodev->cimg)
#define view_w (sdl_videodev->view_w)
#define view_h (sdl_videodev->view_h)
#define sdl_dirty (sdl_videodev->dirty)
#define sdl_fs_on (sdl_videodev->fs_on)
#define sdl_custom_event_handler (sdl_videodev->custom_event_handler)
#endif /* __SDL_PRIVATE_H__ */
+13 -5
View File
@@ -36,10 +36,22 @@
#include "xsystem35.h"
#include "image.h"
SDL_Window *sdl_window;
SDL_Renderer *sdl_renderer;
SDL_Texture *sdl_texture;
SDL_Surface *sdl_display; // toplevel surface
SDL_Surface *sdl_dib; // offscreen surface
SDL_Color sdl_col[256]; // color palette
agsurface_t *sdl_dibinfo;
int view_w;
int view_h;
bool sdl_dirty;
bool sdl_fs_on;
boolean (*sdl_custom_event_handler)(const SDL_Event *);
static void window_init(const char *render_driver);
static void makeDIB(int width, int height, int depth);
struct sdl_private_data *sdl_videodev;
static int joy_device_index = -1;
static SDL_Joystick *js;
@@ -73,8 +85,6 @@ static boolean joy_open(void) {
/* SDL の初期化 */
int sdl_Initialize(const char *render_driver) {
sdl_videodev = calloc(1, sizeof(struct sdl_private_data));
window_init(render_driver);
/* offscreen Pixmap */
@@ -95,8 +105,6 @@ int sdl_Initialize(const char *render_driver) {
}
void sdl_Remove(void) {
if (sdl_videodev == NULL) return;
if (sdl_display) {
SDL_FreeSurface(sdl_dib);
SDL_DestroyRenderer(sdl_renderer);