Fix error with missing ren_resize call

This commit is contained in:
Francesco Abbate 2021-04-23 07:09:50 -07:00
parent 18bcfa7e54
commit 57e6de978b
3 changed files with 11 additions and 9 deletions

View File

@ -109,11 +109,12 @@ top:
case SDL_WINDOWEVENT: case SDL_WINDOWEVENT:
if (e.window.event == SDL_WINDOWEVENT_RESIZED) { if (e.window.event == SDL_WINDOWEVENT_RESIZED) {
int w = e.window.data1, h = e.window.data2; ren_resize();
ren_resize(w, h);
lua_pushstring(L, "resized"); lua_pushstring(L, "resized");
lua_pushnumber(L, w); /* The size below can be wrong on Retina display by a multiplicative factor
lua_pushnumber(L, h); but the size reported below is not currently used. */
lua_pushnumber(L, e.window.data1);
lua_pushnumber(L, e.window.data2);
return 3; return 3;
} else if (e.window.event == SDL_WINDOWEVENT_EXPOSED) { } else if (e.window.event == SDL_WINDOWEVENT_EXPOSED) {
rencache_invalidate(); rencache_invalidate();
@ -318,6 +319,7 @@ static int f_set_window_size(lua_State *L) {
double y = luaL_checknumber(L, 4); double y = luaL_checknumber(L, 4);
SDL_SetWindowSize(window, w, h); SDL_SetWindowSize(window, w, h);
SDL_SetWindowPosition(window, x, y); SDL_SetWindowPosition(window, x, y);
ren_resize();
return 0; return 0;
} }

View File

@ -138,7 +138,7 @@ void ren_init(SDL_Window *win) {
} }
void ren_resize(int w, int h) { void ren_resize() {
int new_w, new_h; int new_w, new_h;
SDL_GL_GetDrawableSize(window, &new_w, &new_h); SDL_GL_GetDrawableSize(window, &new_w, &new_h);
/* Note that (w, h) may differ from (new_w, new_h) on retina displays. */ /* Note that (w, h) may differ from (new_w, new_h) on retina displays. */
@ -175,7 +175,7 @@ void ren_set_clip_rect(RenRect rect) {
void ren_get_size(int *x, int *y) { void ren_get_size(int *x, int *y) {
SDL_Surface *surf = get_window_surface(window); SDL_Surface *surf = get_window_surface();
*x = surf->w; *x = surf->w;
*y = surf->h; *y = surf->h;
} }
@ -334,7 +334,7 @@ void ren_draw_rect(RenRect rect, RenColor color) {
x2 = x2 > clip.right ? clip.right : x2; x2 = x2 > clip.right ? clip.right : x2;
y2 = y2 > clip.bottom ? clip.bottom : y2; y2 = y2 > clip.bottom ? clip.bottom : y2;
SDL_Surface *surf = get_window_surface(window); SDL_Surface *surf = get_window_surface();
RenColor *d = (RenColor*) surf->pixels; RenColor *d = (RenColor*) surf->pixels;
d += x1 + y1 * surf->w; d += x1 + y1 * surf->w;
int dr = surf->w - (x2 - x1); int dr = surf->w - (x2 - x1);
@ -364,7 +364,7 @@ void ren_draw_text_subpixel(RenFont *font, const char *text, int x_subpixel, int
{ {
const char *p = text; const char *p = text;
unsigned codepoint; unsigned codepoint;
SDL_Surface *surf = get_window_surface(window); SDL_Surface *surf = get_window_surface();
const FR_Color color_fr = { .r = color.r, .g = color.g, .b = color.b }; const FR_Color color_fr = { .r = color.r, .g = color.g, .b = color.b };
while (*p) { while (*p) {
FR_Color color_rep; FR_Color color_rep;

View File

@ -36,7 +36,7 @@ typedef struct CPReplaceTable CPReplaceTable;
void ren_init(SDL_Window *win); void ren_init(SDL_Window *win);
void ren_resize(int w, int h); void ren_resize();
void ren_update_rects(RenRect *rects, int count); void ren_update_rects(RenRect *rects, int count);
void ren_set_clip_rect(RenRect rect); void ren_set_clip_rect(RenRect rect);
void ren_get_size(int *x, int *y); void ren_get_size(int *x, int *y);