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 | c523a14ae1f82958d42b20e90363f41c7a5f227a (diff) | |
| download | sway-b78c29a83f7e0c637da94b259644cf08376b22ca.tar.xz | |
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,  	case XKB_KEY_Return:  		state->auth_state = AUTH_STATE_VALIDATING;  		damage_state(state); -		wl_display_roundtrip(state->display); +		while (wl_display_dispatch(state->display) != -1 && state->run_display) { +			bool ok = 1; +			struct swaylock_surface *surface; +			wl_list_for_each(surface, &state->surfaces, link) { +				if (surface->dirty) { +					ok = 0; +				} +			} +			if (ok) { +				break; +			} +		} +		wl_display_flush(state->display); +  		if (attempt_password(&state->password)) {  			state->run_display = false;  			break;  | 
