input: dry out the queue before leave.

This commit is contained in:
sorgelig
2019-10-05 19:00:47 +08:00
parent 975864607a
commit 5014c4adfc

View File

@@ -2660,13 +2660,17 @@ int input_test(int getchar)
int timeout = 0;
if (is_menu_core() && video_fb_state()) timeout = 25;
int return_value = poll(pool, NUMDEV + 3, timeout);
if (return_value < 0)
{
printf("ERR: poll\n");
}
else if (return_value > 0)
while (1)
{
int return_value = poll(pool, NUMDEV + 3, timeout);
if (!return_value) break;
if (return_value < 0)
{
printf("ERR: poll\n");
break;
}
if ((pool[NUMDEV].revents & POLLIN) && check_devs())
{
printf("Close all devices.\n");
@@ -2679,7 +2683,7 @@ int input_test(int getchar)
return 0;
}
for (int i = 0; i<NUMDEV; i++)
for (int i = 0; i < NUMDEV; i++)
{
if ((pool[i].fd >= 0) && (pool[i].revents & POLLIN))
{
@@ -2697,6 +2701,8 @@ int input_test(int getchar)
}
else if (ev.type)
{
if (ev.type == EV_KEY && ev.value > 1) continue;
int dev = i;
if (input[dev].bind >= 0) dev = input[dev].bind;
@@ -3043,7 +3049,7 @@ int input_test(int getchar)
if (cur_leds != leds_state)
{
cur_leds = leds_state;
for (int i = 0; i<NUMDEV; i++)
for (int i = 0; i < NUMDEV; i++)
{
if (input[i].led)
{