emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Fix rendering issues on window managers without _NET_WM_STATE


From: Tom Gillespie
Subject: [PATCH] Fix rendering issues on window managers without _NET_WM_STATE
Date: Fri, 14 May 2021 18:55:42 -0700

Hi,
    This patch fixes a bug that occurs when running Emacs in a window
manager that does not set _NET_WM_STATE. The patch is simplest fix
that restores expected behavior for window managers that do not set
_NET_WM_STATE, but I have no idea whether there are other issues that
may be occurring.

I'm guessing that there are also likely issues with other logic in the
MapNotify case that uses not_hidden for window managers that does not
set _NET_WM_STATE.

Thus, the more complex solution, which I am not knowledgeable enough
to implement correctly, is to fix x_get_current_wm_state so that it
works on window managers that do not set _NET_WM_STATE.

I am unfamiliar with this section of the code, so my explanation may
be off and a sanity check would be appreciated. Best,
Tom


A description of the bug for the record.

The bug manifests as frames rendering as solid background after
changing desktops on window managers that do not set _NET_WM_STATE.

When changing desktops and returning to a desktop with Emacs frames,
any frame that is not focused will render the whole frame as only the
background color for the current theme.

I have run a git bisect and found that the first bad commit is
483c5e953c12a95382bef4a3b6769a680c32fe86 Fix two GTK3 event handling
issues.

I think that the bug is occurring because 483c5e953c1 changed calls to
SET_FRAME_VISIBLE and friends from being unconditional to being
conditional on not_hidden, which returns incorrect information when
_NET_WM_STATE is not set (I think).

I encountered the bug on fluxbox but the behavior should happen for
any window manager that does not set _NET_WM_STATE.

It should be possible to reproduce the bug using the following steps.
Run a window manager that does not set _NET_WM_STATE, e.g. fluxbox.
In a terminal run the following and when the newly built Emacs
launches alt-tab to the terminal window, and then leave and return to
the desktop with the Emacs frame.
#+begin_src bash
pushd ~/git/emacs
git checkout 483c5e953c12a95382bef4a3b6769a680c32fe86
git clean -dfx && ./autogen.sh && ./configure && make && \
src/emacs -q
#+end_src

Attachment: 0001-Fix-rendering-issues-on-window-managers-without-_NET.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]