diff --git a/src/sdl_private.h b/src/sdl_private.h index f465bbf..1584af0 100644 --- a/src/sdl_private.h +++ b/src/sdl_private.h @@ -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__ */ diff --git a/src/sdl_video.c b/src/sdl_video.c index b697665..4bbab8d 100644 --- a/src/sdl_video.c +++ b/src/sdl_video.c @@ -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);