mirror of
https://github.com/pevans/erc-c.git
synced 2025-08-15 18:27:37 +00:00
Allow us to signal that we should exit
This commit is contained in:
@@ -44,6 +44,11 @@ typedef struct {
|
|||||||
*/
|
*/
|
||||||
bool dirty;
|
bool dirty;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Should we exit (the next chance we get)?
|
||||||
|
*/
|
||||||
|
bool should_exit;
|
||||||
|
|
||||||
} vm_screen;
|
} vm_screen;
|
||||||
|
|
||||||
extern bool vm_screen_active(vm_screen *);
|
extern bool vm_screen_active(vm_screen *);
|
||||||
|
@@ -49,6 +49,7 @@ vm_event_keyboard(vm_event *ev)
|
|||||||
ev->screen->key_pressed = false;
|
ev->screen->key_pressed = false;
|
||||||
|
|
||||||
if (ch == SDLK_ESCAPE) {
|
if (ch == SDLK_ESCAPE) {
|
||||||
|
ev->screen->should_exit = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@@ -64,6 +64,7 @@ vm_screen_create()
|
|||||||
screen->last_key = '\0';
|
screen->last_key = '\0';
|
||||||
screen->key_pressed = false;
|
screen->key_pressed = false;
|
||||||
screen->dirty = false;
|
screen->dirty = false;
|
||||||
|
screen->should_exit = false;
|
||||||
|
|
||||||
screen->window = NULL;
|
screen->window = NULL;
|
||||||
screen->render = NULL;
|
screen->render = NULL;
|
||||||
@@ -170,6 +171,13 @@ bool
|
|||||||
vm_screen_active(vm_screen *scr)
|
vm_screen_active(vm_screen *scr)
|
||||||
{
|
{
|
||||||
vm_event_poll(scr);
|
vm_event_poll(scr);
|
||||||
|
|
||||||
|
// If something happened in the event loop that caused the user to
|
||||||
|
// signal an exit, then returning false here will do the trick
|
||||||
|
if (scr->should_exit) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user