mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-27 10:54:40 +00:00
Try to restore the initial "daemon" frame when a display goes down
* src/xterm.c (x_try_restore_frame): New function. (x_connection_closed): Call it if selected_frame is nil.
This commit is contained in:
parent
2a05479c22
commit
ade1238bce
21
src/xterm.c
21
src/xterm.c
@ -23312,6 +23312,22 @@ x_trace_wire (Display *dpy)
|
||||
|
||||
static char *error_msg;
|
||||
|
||||
/* Try to find a frame in Vframe_list, and make it the selected frame.
|
||||
`delete_frame' sometimes misses the initial frame for an unknown
|
||||
reason when Emacs is running as a background daemon. */
|
||||
|
||||
static void
|
||||
x_try_restore_frame (void)
|
||||
{
|
||||
Lisp_Object tail, frame;
|
||||
|
||||
FOR_EACH_FRAME (tail, frame)
|
||||
{
|
||||
if (!NILP (do_switch_frame (frame, 1, Qnil)))
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* Handle the loss of connection to display DPY. ERROR_MESSAGE is
|
||||
the text of an error message that lead to the connection loss. */
|
||||
|
||||
@ -23529,6 +23545,11 @@ For details, see etc/PROBLEMS.\n",
|
||||
Fdelete_terminal (tmp, Qnoelisp);
|
||||
}
|
||||
|
||||
/* The initial "daemon" frame is sometimes not selected by
|
||||
`delete_frame' when Emacs is a background daemon. */
|
||||
if (NILP (selected_frame))
|
||||
x_try_restore_frame ();
|
||||
|
||||
unblock_input ();
|
||||
|
||||
/* Sometimes another terminal is still alive, but deleting this
|
||||
|
Loading…
Reference in New Issue
Block a user