cant consistently tell if we should use WM_DESTROY after the first time they try close a window.. so just kill when "not responding" is showing
This commit is contained in:
parent
d5c824cfd4
commit
f9f32d9fba
3 changed files with 6 additions and 11 deletions
|
@ -3212,10 +3212,8 @@ static void client_ping_event(ObClient *self, gboolean dead)
|
|||
client_update_title(self);
|
||||
|
||||
if (!dead) {
|
||||
/* the window has started responding again, so don't kill it the first
|
||||
time they click on close, even if it stops responding again in the
|
||||
future */
|
||||
self->close_tried_destroy = FALSE;
|
||||
/* try kill it nicely the first time again, if it started responding
|
||||
at some point */
|
||||
self->close_tried_term = FALSE;
|
||||
}
|
||||
}
|
||||
|
@ -3230,14 +3228,12 @@ void client_close(ObClient *self)
|
|||
/* don't use client_kill(), we should only kill based on PID in
|
||||
response to a lack of PING replies */
|
||||
XKillClient(ob_display, self->window);
|
||||
else if (self->not_responding && self->close_tried_destroy)
|
||||
else if (self->not_responding)
|
||||
client_kill(self);
|
||||
else {
|
||||
PROP_MSG_TO(self->window, self->window, wm_protocols,
|
||||
prop_atoms.wm_delete_window, event_curtime, 0, 0, 0,
|
||||
NoEventMask);
|
||||
self->close_tried_destroy = TRUE;
|
||||
self->close_tried_term = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -231,8 +231,6 @@ struct _ObClient
|
|||
/*! Indicates if the client is trying to close but has stopped responding
|
||||
to pings */
|
||||
gboolean not_responding;
|
||||
/*! We tried to close the window with a DESTROY message */
|
||||
gboolean close_tried_destroy;
|
||||
/*! We tried to close the window with a SIGTERM */
|
||||
gboolean close_tried_term;
|
||||
|
||||
|
|
|
@ -87,7 +87,8 @@ void ping_got_pong(Time timestamp)
|
|||
for (it = ping_targets; it != NULL; it = g_slist_next(it)) {
|
||||
t = it->data;
|
||||
if (t->sent == timestamp) {
|
||||
/*ob_debug("Got PONG with timestamp %lu\n", timestamp);*/
|
||||
ob_debug("Got PONG with timestamp %lu for %s\n", timestamp,
|
||||
t->client->title);
|
||||
if (t->waiting > PING_TIMEOUT_WARN) {
|
||||
/* we had notified that they weren't responding, so now we
|
||||
need to notify that they are again */
|
||||
|
@ -106,7 +107,7 @@ void ping_got_pong(Time timestamp)
|
|||
static void ping_send(ObPingTarget *t)
|
||||
{
|
||||
t->sent = event_get_server_time();
|
||||
/*ob_debug("PINGing client 0x%x at %lu\n", t->client->window, t->sent);*/
|
||||
ob_debug("PINGing client %s at %lu\n", t->client->title, t->sent);
|
||||
PROP_MSG_TO(t->client->window, t->client->window, wm_protocols,
|
||||
prop_atoms.net_wm_ping, t->sent, t->client->window, 0, 0,
|
||||
NoEventMask);
|
||||
|
|
Loading…
Reference in a new issue