ui: add sleep/awake logic to UI
We need to forward all sleep/awake states to the lower subsystems to avoid overdoing stuff like rendering an user-input. That is, while being asleep we shouldn't render and/or do any other user-interaction. This patch simply adds this logic to the UI subsystem, which, however, does not to anything useful, yet. Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
parent
d372390734
commit
dbb589c55b
@ -86,6 +86,7 @@ static int vt_event(struct uterm_vt *vt, unsigned int action, void *data)
|
||||
|
||||
if (action == UTERM_VT_ACTIVATE) {
|
||||
seat->awake = true;
|
||||
kmscon_ui_wake_up(seat->ui);
|
||||
uterm_input_wake_up(seat->input);
|
||||
|
||||
kmscon_dlist_for_each(iter, &seat->videos) {
|
||||
@ -99,6 +100,7 @@ static int vt_event(struct uterm_vt *vt, unsigned int action, void *data)
|
||||
}
|
||||
|
||||
uterm_input_sleep(seat->input);
|
||||
kmscon_ui_sleep(seat->ui);
|
||||
seat->awake = false;
|
||||
}
|
||||
|
||||
|
26
src/ui.c
26
src/ui.c
@ -51,6 +51,7 @@ struct kmscon_ui {
|
||||
struct uterm_input *input;
|
||||
struct kmscon_dlist video_list;
|
||||
struct kmscon_terminal *term;
|
||||
bool awake;
|
||||
};
|
||||
|
||||
static void video_activate(struct ui_video *vid, struct uterm_display *disp)
|
||||
@ -167,6 +168,10 @@ static void input_event(struct uterm_input *input,
|
||||
struct uterm_input_event *ev,
|
||||
void *data)
|
||||
{
|
||||
struct kmscon_ui *ui = data;
|
||||
|
||||
if (!ui->awake)
|
||||
return;
|
||||
}
|
||||
|
||||
static void terminal_event(struct kmscon_terminal *term,
|
||||
@ -259,3 +264,24 @@ void kmscon_ui_remove_video(struct kmscon_ui *ui, struct uterm_video *video)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void kmscon_ui_wake_up(struct kmscon_ui *ui)
|
||||
{
|
||||
if (!ui || ui->awake)
|
||||
return;
|
||||
|
||||
ui->awake = true;
|
||||
}
|
||||
|
||||
void kmscon_ui_sleep(struct kmscon_ui *ui)
|
||||
{
|
||||
if (!ui || !ui->awake)
|
||||
return;
|
||||
|
||||
ui->awake = false;
|
||||
}
|
||||
|
||||
bool kmscon_ui_is_awake(struct kmscon_ui *ui)
|
||||
{
|
||||
return ui && ui->awake;
|
||||
}
|
||||
|
4
src/ui.h
4
src/ui.h
@ -46,4 +46,8 @@ void kmscon_ui_free(struct kmscon_ui *ui);
|
||||
void kmscon_ui_add_video(struct kmscon_ui *ui, struct uterm_video *video);
|
||||
void kmscon_ui_remove_video(struct kmscon_ui *ui, struct uterm_video *video);
|
||||
|
||||
void kmscon_ui_wake_up(struct kmscon_ui *ui);
|
||||
void kmscon_ui_sleep(struct kmscon_ui *ui);
|
||||
bool kmscon_ui_is_awake(struct kmscon_ui *ui);
|
||||
|
||||
#endif /* KMSCON_UI_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user