emacs-diffs
[Top][All Lists]
Advanced

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

master 458d8db7e8: Add more atoms that don't need a roundtrip to intern


From: Po Lu
Subject: master 458d8db7e8: Add more atoms that don't need a roundtrip to intern
Date: Tue, 24 May 2022 21:39:14 -0400 (EDT)

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

    Add more atoms that don't need a roundtrip to intern
    
    * src/xterm.c (x_intern_cached_atom): Handle dpyinfo atoms that
    depend on the screen number and common selection atoms.
---
 src/xterm.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/src/xterm.c b/src/xterm.c
index 3fe8107881..5c8221201b 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -23608,6 +23608,35 @@ x_intern_cached_atom (struct x_display_info *dpyinfo,
   char *ptr;
   Atom *atom;
 
+  /* Special atoms that depend on the screen number.  */
+  char xsettings_atom_name[sizeof "_XSETTINGS_S%d" - 2
+                          + INT_STRLEN_BOUND (int)];
+  char cm_atom_name[sizeof "_NET_WM_CM_S%d" - 2
+                   + INT_STRLEN_BOUND (int)];
+
+  sprintf (xsettings_atom_name, "_XSETTINGS_S%d",
+          XScreenNumberOfScreen (dpyinfo->screen));
+  sprintf (cm_atom_name, "_NET_WM_CM_S%d",
+          XScreenNumberOfScreen (dpyinfo->screen));
+
+  if (!strcmp (name, xsettings_atom_name))
+    return dpyinfo->Xatom_xsettings_sel;
+
+  if (!strcmp (name, cm_atom_name))
+    return dpyinfo->Xatom_NET_WM_CM_Sn;
+
+  /* Now do some common predefined atoms.  */
+  if (!strcmp (name, "PRIMARY"))
+    return XA_PRIMARY;
+  if (!strcmp (name, "SECONDARY"))
+    return XA_SECONDARY;
+  if (!strcmp (name, "STRING"))
+    return XA_STRING;
+  if (!strcmp (name, "INTEGER"))
+    return XA_INTEGER;
+  if (!strcmp (name, "ATOM"))
+    return XA_ATOM;
+
   for (i = 0; i < ARRAYELTS (x_atom_refs); ++i)
     {
       ptr = (char *) dpyinfo;



reply via email to

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