#include <SDL2/SDL.h>
#include "app.h"
-static bool init();
+static bool init(int argc, char **argv);
static void process_event(SDL_Event *ev);
static void proc_modkeys();
SDL_Quit();
return 1;
}
+ fprintf(stderr, "failed to get an sRGB framebuffer.\n");
}
+ int val;
+ SDL_GL_GetAttribute(SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, &val);
+ printf("SDL says we %s an sRGB framebuffer\n", val ? "got" : "didn't get");
if(!(ctx = SDL_GL_CreateContext(win))) {
fprintf(stderr, "failed to create OpenGL context\n");
SDL_GL_GetDrawableSize(win, &win_width, &win_height);
win_aspect = (float)win_width / (float)win_height;
- if(!init()) {
+ if(!init(argc, argv)) {
SDL_Quit();
return 1;
}
void app_grab_mouse(bool grab)
{
- /*SDL_SetWindowGrab(win, grab ? SDL_TRUE : SDL_FALSE);
- SDL_ShowCursor(grab ? 1 : 0);
- */
+ if(grab) {
+ SDL_WarpMouseInWindow(win, win_width / 2, win_height / 2);
+ }
+ //SDL_SetWindowGrab(win, grab ? SDL_TRUE : SDL_FALSE);
+ //SDL_ShowCursor(grab ? 1 : 0);
SDL_SetRelativeMouseMode(grab ? SDL_TRUE : SDL_FALSE);
mouse_grabbed = grab;
}
}
-static bool init()
+static bool init(int argc, char **argv)
{
glewInit();
- if(!app_init()) {
+ if(!app_init(argc, argv)) {
return false;
}
case SDL_MOUSEMOTION:
if(mouse_grabbed) {
- app_mouse_delta(ev->motion.xrel, ev->motion.yrel);
+ // XXX xrel/yrel seems faster by default
+ app_mouse_delta(ev->motion.xrel * 0.75, ev->motion.yrel * 0.75);
} else {
app_mouse_motion(ev->motion.x * scale_factor, ev->motion.y * scale_factor);
}