diff options
| author | Craig Jennings <c@cjennings.net> | 2026-08-25 05:28:25 -0600 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-08-25 05:28:25 -0600 |
| commit | 638310601a39e7f9ade59ea85794a21167905f31 (patch) | |
| tree | 59ebb07880634aaf2084cf4917b09aadc1cd7068 /modules/video-audio-recording-capture.el | |
| parent | ac1d034d09dd37305e84d08438fef268ed8173bc (diff) | |
| download | dotemacs-638310601a39e7f9ade59ea85794a21167905f31.tar.gz dotemacs-638310601a39e7f9ade59ea85794a21167905f31.zip | |
fix(startup): keep *Warnings* alive so 31.1's first frame is Wayland
Emacs 31.1's warnings.el defers daemon-startup warnings into a one-shot after-make-frame-functions closure that holds the *Warnings* buffer object and displays it on the first client frame. The startup sweep in cj/dashboard-only killed that buffer first. On the first emacsclient -c of every session, display-buffer then signaled inside make-frame and server.el answered -window-system-unsupported. emacsclient silently retried on $DISPLAY, and the frame opened on XWayland behind the pgtk "unsupported under X" dialog. Only that first frame was affected, which made it look like a display problem rather than a config one.
I added *Warnings* to cj/undead-buffer-list so the sweep buries it instead, the same choice desktop.el makes in desktop-clear-preserve-buffers. Two things follow. C-x k on *Warnings* now buries it. A startup that produced warnings shows them on the first frame, because the deferred closure finally has a live buffer. As a backstop, cj/warning--display-buffer-if-live wraps warning--display-buffer so a dead buffer (or a name that resolves to none) is skipped rather than passed on. That function only exists from Emacs 31, and advising the undefined symbol on 30.2 is harmless.
The new tests pin *Warnings* to the undead list and check the sweep leaves it live. The guard tests cover live and dead buffers plus names that do and don't resolve, and run the real 31.x function on a dead buffer.
Diffstat (limited to 'modules/video-audio-recording-capture.el')
0 files changed, 0 insertions, 0 deletions
