We don't need to flush the terminal input buffer on key events from
the renderers, because the terminal does that itself.
Also, we should disable the terminal input when a /dev/input
device is added instead of relying on it happening the next flush
period.
Finally, we should make sure the terminal gets reenabled on close,
just so we clean up after ourselves.
ply_renderer_backend_t *backend = input_source->backend;
int terminal_fd;
- if (using_input_device (input_source)) {
- ply_terminal_flush_input (backend->terminal);
+ if (using_input_device (input_source))
return;
- }
terminal_fd = ply_terminal_get_fd (backend->terminal);
(ply_input_device_input_handler_t) on_input_device_key,
(ply_input_device_leds_changed_handler_t) on_input_leds_changed,
&backend->input_source);
+
+ ply_terminal_set_disabled_input (backend->terminal);
}
static void
(ply_input_device_leds_changed_handler_t) on_input_leds_changed,
&backend->input_source);
}
+ ply_terminal_set_unbuffered_input (backend->terminal);
}
if (input_source->terminal_input_watch != NULL) {
ply_renderer_backend_t *backend = input_source->backend;
int terminal_fd;
- if (using_input_device (input_source)) {
- ply_terminal_flush_input (backend->terminal);
+ if (using_input_device (input_source))
return;
- }
terminal_fd = ply_terminal_get_fd (backend->terminal);
(ply_input_device_input_handler_t) on_input_device_key,
(ply_input_device_leds_changed_handler_t) on_input_leds_changed,
&backend->input_source);
+
+ ply_terminal_set_disabled_input (backend->terminal);
}
static void
(ply_input_device_leds_changed_handler_t) on_input_leds_changed,
&backend->input_source);
}
+ ply_terminal_set_unbuffered_input (backend->terminal);
}
if (input_source->terminal_input_watch != NULL) {