emacs-diffs
[Top][All Lists]
Advanced

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

master c7e4c1a5fa 2/2: Improve x_get_atom_name for some predefined atoms


From: Po Lu
Subject: master c7e4c1a5fa 2/2: Improve x_get_atom_name for some predefined atoms
Date: Wed, 25 May 2022 20:13:39 -0400 (EDT)

branch: master
commit c7e4c1a5fa3ecbcb29cba6f01016808f1a524eaf
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Improve x_get_atom_name for some predefined atoms
    
    * src/xterm.c (x_get_atom_name): Handle XSETTINGS and cm atoms.
---
 src/xterm.c | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/xterm.c b/src/xterm.c
index 1997cc77dc..1d91055a4a 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -23674,19 +23674,21 @@ x_intern_cached_atom (struct x_display_info *dpyinfo,
   return XInternAtom (dpyinfo->display, name, False);
 }
 
-/* Whether or not a request to the X server happened is placed in
-   NEED_SYNC.  */
+/* Get the name of ATOM, but try not to make a request to the X
+   server.  Whether or not a request to the X server happened is
+   placed in NEED_SYNC.  */
 char *
 x_get_atom_name (struct x_display_info *dpyinfo, Atom atom,
                 bool *need_sync)
 {
-  char *dpyinfo_pointer, *name, *value;
+  char *dpyinfo_pointer, *name, *value, *buffer;
   int i;
   Atom ref_atom;
 
   dpyinfo_pointer = (char *) dpyinfo;
   value = NULL;
   *need_sync = false;
+  buffer = alloca (45 + INT_STRLEN_BOUND (int));
 
   switch (atom)
     {
@@ -23709,6 +23711,20 @@ x_get_atom_name (struct x_display_info *dpyinfo, Atom 
atom,
       return xstrdup ("WINDOW");
 
     default:
+      if (atom == dpyinfo->Xatom_xsettings_sel)
+       {
+         sprintf (buffer, "_XSETTINGS_S%d",
+                  XScreenNumberOfScreen (dpyinfo->screen));
+         return xstrdup (buffer);
+       }
+
+      if (atom == dpyinfo->Xatom_NET_WM_CM_Sn)
+       {
+         sprintf (buffer, "_NET_WM_CM_S%d",
+                  XScreenNumberOfScreen (dpyinfo->screen));
+         return xstrdup (buffer);
+       }
+
       for (i = 0; i < ARRAYELTS (x_atom_refs); ++i)
        {
          ref_atom = *(Atom *) (dpyinfo_pointer



reply via email to

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