Do not block in Get_input() when Quit_is_required is set
This commit is contained in:
parent
48b9213da3
commit
f8bfad2f34
23
src/input.c
23
src/input.c
@ -1212,13 +1212,17 @@ int Get_input(int sleep_time)
|
|||||||
// This is done in this function because it's called after reading
|
// This is done in this function because it's called after reading
|
||||||
// some user input.
|
// some user input.
|
||||||
Flush_update();
|
Flush_update();
|
||||||
|
|
||||||
|
if (Quit_is_required)
|
||||||
|
return 1;
|
||||||
|
|
||||||
Key_ANSI = 0;
|
Key_ANSI = 0;
|
||||||
Key_UNICODE = 0;
|
Key_UNICODE = 0;
|
||||||
Key = 0;
|
Key = 0;
|
||||||
#if defined(USE_SDL2)
|
#if defined(USE_SDL2)
|
||||||
memset(Key_Text, 0, sizeof(Key_Text));
|
memset(Key_Text, 0, sizeof(Key_Text));
|
||||||
#endif
|
#endif
|
||||||
Mouse_moved=0;
|
Mouse_moved = 0;
|
||||||
Input_new_mouse_X = Mouse_X;
|
Input_new_mouse_X = Mouse_X;
|
||||||
Input_new_mouse_Y = Mouse_Y;
|
Input_new_mouse_Y = Mouse_Y;
|
||||||
Input_new_mouse_K = Mouse_K;
|
Input_new_mouse_K = Mouse_K;
|
||||||
@ -1601,10 +1605,14 @@ int Get_input(int sleep_time)
|
|||||||
// some user input.
|
// some user input.
|
||||||
Flush_update();
|
Flush_update();
|
||||||
|
|
||||||
while (!user_feedback_required && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
|
if (Quit_is_required)
|
||||||
TranslateMessage(&msg);
|
return 1;
|
||||||
DispatchMessage(&msg);
|
|
||||||
}
|
while (!user_feedback_required && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
|
||||||
|
{
|
||||||
|
TranslateMessage(&msg);
|
||||||
|
DispatchMessage(&msg);
|
||||||
|
}
|
||||||
|
|
||||||
// If the cursor was moved since last update,
|
// If the cursor was moved since last update,
|
||||||
// it was erased, so we need to redraw it (with the preview brush)
|
// it was erased, so we need to redraw it (with the preview brush)
|
||||||
@ -1617,10 +1625,11 @@ int Get_input(int sleep_time)
|
|||||||
if (user_feedback_required)
|
if (user_feedback_required)
|
||||||
{
|
{
|
||||||
// Process the WM_CHAR event that follow WM_KEYDOWN
|
// Process the WM_CHAR event that follow WM_KEYDOWN
|
||||||
if(PeekMessage(&msg, NULL, WM_CHAR, WM_CHAR, PM_REMOVE)) {
|
if(PeekMessage(&msg, NULL, WM_CHAR, WM_CHAR, PM_REMOVE))
|
||||||
|
{
|
||||||
TranslateMessage(&msg);
|
TranslateMessage(&msg);
|
||||||
DispatchMessage(&msg);
|
DispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (sleep_time == 0)
|
if (sleep_time == 0)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user