aboutsummaryrefslogtreecommitdiff
path: root/cube/cube.c
diff options
context:
space:
mode:
authorPetr Kraus <petr_kraus@email.cz>2019-01-23 18:45:04 +0100
committerTony Barbour <tony@lunarg.com>2019-02-14 12:02:54 -0700
commitd88e4e55e094b1205071b37b12dc3bfe6412e507 (patch)
tree101fc49fceca19616b07512305844feba9dd3772 /cube/cube.c
parent87076bda7daf9def8eb7d14df51456b052560065 (diff)
downloadusermoji-d88e4e55e094b1205071b37b12dc3bfe6412e507.tar.xz
vkcube: Implement key events in Windows
Diffstat (limited to 'cube/cube.c')
-rw-r--r--cube/cube.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/cube/cube.c b/cube/cube.c
index 09723c8e..b702b281 100644
--- a/cube/cube.c
+++ b/cube/cube.c
@@ -2397,7 +2397,7 @@ static void demo_run(struct demo *demo) {
demo_draw(demo);
demo->curFrame++;
- if (demo->frameCount != INT_MAX && demo->curFrame == demo->frameCount) {
+ if (demo->frameCount != INT32_MAX && demo->curFrame == demo->frameCount) {
PostQuitMessage(validation_error);
}
}
@@ -2431,6 +2431,22 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
demo_resize(&demo);
}
break;
+ case WM_KEYDOWN:
+ switch (wParam) {
+ case VK_ESCAPE:
+ PostQuitMessage(validation_error);
+ break;
+ case VK_LEFT:
+ demo.spin_angle -= demo.spin_increment;
+ break;
+ case VK_RIGHT:
+ demo.spin_angle += demo.spin_increment;
+ break;
+ case VK_SPACE:
+ demo.pause = !demo.pause;
+ break;
+ }
+ return 0;
default:
break;
}
@@ -3808,6 +3824,15 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine,
// main message loop
while (!done) {
+ if (demo.pause) {
+ const BOOL succ = WaitMessage();
+
+ if (!succ) {
+ struct demo *tmp = &demo;
+ struct demo *demo = tmp;
+ ERR_EXIT("WaitMessage() failed on paused demo", "event loop error");
+ }
+ }
PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
if (msg.message == WM_QUIT) // check for a quit message
{