commit 46077a3149bde09d1395f5c23afd1b6682907551
parent 7256554580257d7d8c168f15933023af41c9aa73
Author: William Casarin <jb55@jb55.com>
Date:   Fri,  3 Aug 2018 13:52:45 -0700
keys and such
Diffstat:
| M | main.c |  |  | 42 | ++++++++++++++++++++++++++++++++++++++---- | 
1 file changed, 38 insertions(+), 4 deletions(-)
diff --git a/main.c b/main.c
@@ -1,15 +1,36 @@
 
 #include <SDL2/SDL.h>
 #include <GL/gl.h>
+#include <assert.h>
 
 #include "defs.h"
 
 struct ln {
+	int quitting;
 };
 
-static void process_events()
-{
-	//const u8 *keystates = SDL_GetKeyboardState(NULL);
+void process_events(struct ln *ln, const u8 *keys) {
+	SDL_Event event;
+
+	while (SDL_PollEvent(&event)) {
+		switch (event.type) {
+		case SDL_KEYDOWN:
+		case SDL_KEYUP:
+			if (keys[SDL_SCANCODE_Q] || keys[SDL_SCANCODE_ESCAPE])
+				ln->quitting = 1;
+			break;
+		case SDL_WINDOWEVENT:
+			switch (event.window.event) {
+			case SDL_WINDOWEVENT_RESIZED:
+				//handle_resize(camera, event.window.data1, event.window.data2);
+				break;
+			}
+			break;
+		case SDL_QUIT:
+			SDL_Quit();
+			exit(0);
+		}
+	}
 }
 
 static void update(struct ln *ln)
@@ -30,6 +51,10 @@ int main(int argc, char *argv[])
 	int width = 640;
 	int height = 480;
 	struct ln ln;
+	ln.quitting = 0;
+
+	// nanovg needs this
+	SDL_GL_SetAttribute( SDL_GL_STENCIL_SIZE, 1 );
 
 	SDL_Window *window =
 		SDL_CreateWindow("Lightning Network Visualizer", 0, 0, width,
@@ -39,9 +64,16 @@ int main(int argc, char *argv[])
 	SDL_GL_CreateContext(window);
 
 	u32 last = SDL_GetTicks();
+	int nkeys;
+
+	const u8 *keys = SDL_GetKeyboardState(&nkeys);
+	assert(nkeys > 0);
 
 	while (1) {
-		process_events();
+		process_events(&ln, keys);
+		if (ln.quitting)
+			break;
+
 		u32 ticks = SDL_GetTicks();
 		update(&ln);
 
@@ -53,5 +85,7 @@ int main(int argc, char *argv[])
 		SDL_GL_SwapWindow(window);
 	}
 
+	SDL_Quit();
+
 	return 0;
 }