mirror of
https://gitlab.freedesktop.org/plymouth/plymouth.git
synced 2026-05-08 15:58:20 +02:00
keyboard: track activeness
Right now, ply-seat has to handle tracking keyboard activeness on its own. This commit moves activeness tracking to ply-keyboard directly.
This commit is contained in:
parent
c6a582d05d
commit
ea91f9baee
2 changed files with 22 additions and 3 deletions
|
|
@ -93,6 +93,8 @@ struct _ply_keyboard
|
|||
ply_list_t *backspace_handler_list;
|
||||
ply_list_t *escape_handler_list;
|
||||
ply_list_t *enter_handler_list;
|
||||
|
||||
uint32_t is_active : 1;
|
||||
};
|
||||
|
||||
static bool ply_keyboard_watch_for_terminal_input (ply_keyboard_t *keyboard);
|
||||
|
|
@ -323,6 +325,12 @@ ply_keyboard_stop_watching_for_renderer_input (ply_keyboard_t *keyboard)
|
|||
keyboard->provider.if_renderer->input_source);
|
||||
}
|
||||
|
||||
bool
|
||||
ply_keyboard_is_active (ply_keyboard_t *keyboard)
|
||||
{
|
||||
return keyboard->is_active;
|
||||
}
|
||||
|
||||
static void
|
||||
on_terminal_data (ply_keyboard_t *keyboard)
|
||||
{
|
||||
|
|
@ -369,15 +377,20 @@ ply_keyboard_watch_for_input (ply_keyboard_t *keyboard)
|
|||
{
|
||||
assert (keyboard != NULL);
|
||||
|
||||
if (keyboard->is_active)
|
||||
return true;
|
||||
|
||||
switch (keyboard->provider_type) {
|
||||
case PLY_KEYBOARD_PROVIDER_TYPE_RENDERER:
|
||||
return ply_keyboard_watch_for_renderer_input (keyboard);
|
||||
keyboard->is_active = ply_keyboard_watch_for_renderer_input (keyboard);
|
||||
break;
|
||||
|
||||
case PLY_KEYBOARD_PROVIDER_TYPE_TERMINAL:
|
||||
return ply_keyboard_watch_for_terminal_input (keyboard);
|
||||
keyboard->is_active = ply_keyboard_watch_for_terminal_input (keyboard);
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
return keyboard->is_active;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -385,6 +398,9 @@ ply_keyboard_stop_watching_for_input (ply_keyboard_t *keyboard)
|
|||
{
|
||||
assert (keyboard != NULL);
|
||||
|
||||
if (!keyboard->is_active)
|
||||
return;
|
||||
|
||||
switch (keyboard->provider_type) {
|
||||
case PLY_KEYBOARD_PROVIDER_TYPE_RENDERER:
|
||||
ply_keyboard_stop_watching_for_renderer_input (keyboard);
|
||||
|
|
@ -394,6 +410,8 @@ ply_keyboard_stop_watching_for_input (ply_keyboard_t *keyboard)
|
|||
ply_keyboard_stop_watching_for_terminal_input (keyboard);
|
||||
break;
|
||||
}
|
||||
|
||||
keyboard->is_active = false;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ void ply_keyboard_remove_enter_handler (ply_keyboard_t *keyboard,
|
|||
|
||||
bool ply_keyboard_watch_for_input (ply_keyboard_t *keyboard);
|
||||
void ply_keyboard_stop_watching_for_input (ply_keyboard_t *keyboard);
|
||||
bool ply_keyboard_is_active (ply_keyboard_t *keyboard);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue