diff options
author | Dominique Martinet <asmadeus@codewreck.org> | 2018-06-08 21:59:18 +0900 |
---|---|---|
committer | Dominique Martinet <asmadeus@codewreck.org> | 2018-07-07 21:02:28 +0900 |
commit | b78c29a83f7e0c637da94b259644cf08376b22ca (patch) | |
tree | ef55a4d90cd33a4ad59130f61d93169c3b852b5b /swaylock | |
parent | Merge pull request #2216 from RedSoxFan/fix-2213 (diff) | |
download | sway-b78c29a83f7e0c637da94b259644cf08376b22ca.tar.gz sway-b78c29a83f7e0c637da94b259644cf08376b22ca.tar.zst sway-b78c29a83f7e0c637da94b259644cf08376b22ca.zip |
swaylock: fix the displaying of "verified"
Displaying verified after damaging state needs more than one roundtrip,
so keep looping until surfaces are not dirty anymore
Diffstat (limited to 'swaylock')
-rw-r--r-- | swaylock/password.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/swaylock/password.c b/swaylock/password.c index bb32286e..d844ec98 100644 --- a/swaylock/password.c +++ b/swaylock/password.c | |||
@@ -97,7 +97,20 @@ void swaylock_handle_key(struct swaylock_state *state, | |||
97 | case XKB_KEY_Return: | 97 | case XKB_KEY_Return: |
98 | state->auth_state = AUTH_STATE_VALIDATING; | 98 | state->auth_state = AUTH_STATE_VALIDATING; |
99 | damage_state(state); | 99 | damage_state(state); |
100 | wl_display_roundtrip(state->display); | 100 | while (wl_display_dispatch(state->display) != -1 && state->run_display) { |
101 | bool ok = 1; | ||
102 | struct swaylock_surface *surface; | ||
103 | wl_list_for_each(surface, &state->surfaces, link) { | ||
104 | if (surface->dirty) { | ||
105 | ok = 0; | ||
106 | } | ||
107 | } | ||
108 | if (ok) { | ||
109 | break; | ||
110 | } | ||
111 | } | ||
112 | wl_display_flush(state->display); | ||
113 | |||
101 | if (attempt_password(&state->password)) { | 114 | if (attempt_password(&state->password)) { |
102 | state->run_display = false; | 115 | state->run_display = false; |
103 | break; | 116 | break; |