fix: error mark kill status

This commit is contained in:
DreamMaoMao 2025-02-08 20:18:00 +08:00
parent 0ad233b769
commit 2c2c5baa3e

15
main.c
View file

@ -761,6 +761,7 @@ bool client_animation_next_tick(Client *c) {
wlr_scene_node_set_enabled(&c->scene->node, false); wlr_scene_node_set_enabled(&c->scene->node, false);
client_set_suspended(c, true); client_set_suspended(c, true);
c->animation.tagouted = true; c->animation.tagouted = true;
c->animation.current = c->geom;
} }
return false; return false;
} else { } else {
@ -1753,7 +1754,7 @@ void client_commit(Client *c) {
wlr_output_schedule_frame(c->mon->wlr_output); wlr_output_schedule_frame(c->mon->wlr_output);
} }
void void
commitnotify(struct wl_listener *listener, void *data) { commitnotify(struct wl_listener *listener, void *data) {
Client *c = wl_container_of(listener, c, commit); Client *c = wl_container_of(listener, c, commit);
@ -2883,7 +2884,7 @@ keypressmod(struct wl_listener *listener, void *data) {
} }
void pending_kill_client(Client *c) { void pending_kill_client(Client *c) {
c->iskilling = 1; // c->iskilling = 1; //不可以提前标记已经杀掉,因为有些客户端可能拒绝
client_send_close(c); client_send_close(c);
} }
@ -3095,7 +3096,7 @@ minimizenotify(struct wl_listener *listener, void *data) {
// wlr_xdg_surface_schedule_configure(c->surface.xdg); // wlr_xdg_surface_schedule_configure(c->surface.xdg);
// togglefakefullscreen(&(Arg){0}); // togglefakefullscreen(&(Arg){0});
Client *c = wl_container_of(listener, c, minimize); Client *c = wl_container_of(listener, c, minimize);
if(!c || c->iskilling) if(!c || c->iskilling)
return; return;
@ -3774,7 +3775,7 @@ void resize(Client *c, struct wlr_box geo, int interact) {
} else if (c->is_open_animation) { } else if (c->is_open_animation) {
set_open_animaiton(c, c->geom); set_open_animaiton(c, c->geom);
} else { } else {
c->animainit_geom = oldgeom; c->animainit_geom = c->animation.current;
} }
if (c->isnoborder || c->iskilling) { if (c->isnoborder || c->iskilling) {
@ -4834,6 +4835,8 @@ void unmapnotify(struct wl_listener *listener, void *data) {
/* Called when the surface is unmapped, and should no longer be shown. */ /* Called when the surface is unmapped, and should no longer be shown. */
Client *c = wl_container_of(listener, c, unmap); Client *c = wl_container_of(listener, c, unmap);
c->iskilling = 1;
if (c == grabc) { if (c == grabc) {
cursor_mode = CurNormal; cursor_mode = CurNormal;
grabc = NULL; grabc = NULL;
@ -5390,7 +5393,7 @@ void activatex11(struct wl_listener *listener, void *data) {
void // 0.7 void // 0.7
configurex11(struct wl_listener *listener, void *data) { configurex11(struct wl_listener *listener, void *data) {
Client *c = wl_container_of(listener, c, configure); Client *c = wl_container_of(listener, c, configure);
if(!c || c->iskilling) if(!c || c->iskilling)
return; return;
@ -5521,4 +5524,4 @@ int main(int argc, char *argv[]) {
usage: usage:
die("Usage: %s [-v] [-d] [-s startup command]", argv[0]); die("Usage: %s [-v] [-d] [-s startup command]", argv[0]);
} }