fixed hidpi on mac
[vrfileman] / src / main.cc
index 69b7efa..82454fd 100644 (file)
@@ -10,6 +10,8 @@ static SDL_GLContext ctx;
 static bool redraw_pending = true;
 static bool quit;
 
+static int scale_factor = 1;
+
 static SDL_Window *create_window(int width, int height)
 {
        SDL_Window *win;
@@ -36,7 +38,7 @@ int main(int argc, char **argv)
        if(!(win = create_window(def_opt.width, def_opt.height))) {
                // try again without the SRGB capability
                SDL_GL_SetAttribute(SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, 0);
-               if(!(win = create_window(win_width, win_height))) {
+               if(!(win = create_window(def_opt.width, def_opt.height))) {
                        fprintf(stderr, "failed to create window\n");
                        return 1;
                }
@@ -131,18 +133,18 @@ static void process_event(SDL_Event *ev)
        case SDL_MOUSEBUTTONDOWN:
        case SDL_MOUSEBUTTONUP:
                app_mouse_button(ev->button.button - SDL_BUTTON_LEFT, ev->button.state == SDL_PRESSED,
-                               ev->button.x, ev->button.y);
+                               ev->button.x * scale_factor, ev->button.y * scale_factor);
                break;
 
        case SDL_MOUSEMOTION:
-               app_mouse_motion(ev->motion.x, ev->motion.y);
+               app_mouse_motion(ev->motion.x * scale_factor, ev->motion.y * scale_factor);
                break;
 
        case SDL_WINDOWEVENT:
                if(ev->window.event == SDL_WINDOWEVENT_RESIZED) {
-                       win_width = ev->window.data1;
-                       win_height = ev->window.data2;
+                       SDL_GL_GetDrawableSize(win, &win_width, &win_height);
                        win_aspect = (float)win_width / (float)win_height;
+                       scale_factor = win_width / ev->window.data1;
                        app_reshape(win_width, win_height);
                }
                break;