[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 6f3925eace: Add more error checking to some X functions
From: |
Po Lu |
Subject: |
master 6f3925eace: Add more error checking to some X functions |
Date: |
Tue, 24 May 2022 09:21:04 -0400 (EDT) |
branch: master
commit 6f3925eace76a39850c0c108a9e1fd0c010e803d
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Add more error checking to some X functions
* src/xfns.c (Fx_change_window_property, Fx_delete_window_property)
(Fx_window_property, Fx_window_property_attributes): Check for
errors in case the window is invalid. Also use better function
for interning prop names.
* src/xterm.c (struct x_atom_ref): New structure.
(x_atom_refs): New list. Extract from x_term_init.
(x_intern_cached_atom): New function. Use it in several places
to avoid interning common atoms.
(x_term_init): Adjust accordingly.
* src/xterm.h: Update prototypes.
---
src/xfns.c | 27 +++---
src/xterm.c | 285 +++++++++++++++++++++++++++++++++---------------------------
src/xterm.h | 1 +
3 files changed, 177 insertions(+), 136 deletions(-)
diff --git a/src/xfns.c b/src/xfns.c
index e1f8947d55..912af0fa5a 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -7396,16 +7396,17 @@ If WINDOW-ID is non-nil, change the property of that
window instead
error ("Failed to intern type or property atom");
#endif
+ x_catch_errors (FRAME_X_DISPLAY (f));
XChangeProperty (FRAME_X_DISPLAY (f), target_window,
prop_atom, target_type, element_format, PropModeReplace,
data, nelements);
if (CONSP (value)) xfree (data);
+ x_check_errors (FRAME_X_DISPLAY (f),
+ "Couldn't change window property: %s");
+ x_uncatch_errors_after_check ();
- /* Make sure the property is set when we return. */
- XFlush (FRAME_X_DISPLAY (f));
unblock_input ();
-
return value;
}
@@ -7437,13 +7438,16 @@ Value is PROP. */)
}
block_input ();
- prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (prop), False);
+ prop_atom = x_intern_cached_atom (FRAME_DISPLAY_INFO (f),
+ SSDATA (prop));
+
+ x_catch_errors (FRAME_X_DISPLAY (f));
XDeleteProperty (FRAME_X_DISPLAY (f), target_window, prop_atom);
+ x_check_errors (FRAME_X_DISPLAY (f),
+ "Couldn't delete window property: %s");
+ x_uncatch_errors_after_check ();
- /* Make sure the property is removed when we return. */
- XFlush (FRAME_X_DISPLAY (f));
unblock_input ();
-
return prop;
}
@@ -7570,10 +7574,12 @@ if PROP has no value of TYPE (always a string in the MS
Windows case). */)
if (strcmp ("AnyPropertyType", SSDATA (type)) == 0)
target_type = AnyPropertyType;
else
- target_type = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (type), False);
+ target_type = x_intern_cached_atom (FRAME_DISPLAY_INFO (f),
+ SSDATA (type));
}
- prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (prop), False);
+ prop_atom = x_intern_cached_atom (FRAME_DISPLAY_INFO (f),
+ SSDATA (prop));
prop_value = x_window_property_intern (f,
target_window,
prop_atom,
@@ -7644,7 +7650,8 @@ Otherwise, the return value is a vector with the
following fields:
block_input ();
x_catch_errors (FRAME_X_DISPLAY (f));
- prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (prop), False);
+ prop_atom = x_intern_cached_atom (FRAME_DISPLAY_INFO (f),
+ SSDATA (prop));
rc = XGetWindowProperty (FRAME_X_DISPLAY (f), target_window,
prop_atom, 0, 0, False, AnyPropertyType,
&actual_type, &actual_format, &actual_size,
diff --git a/src/xterm.c b/src/xterm.c
index fe1b317dcf..261fa807d0 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -784,6 +784,137 @@ static int current_finish;
static struct input_event *current_hold_quit;
#endif
+struct x_atom_ref
+{
+ /* Atom name. */
+ const char *name;
+
+ /* Offset of atom in the display info structure. */
+ int offset;
+};
+
+/* List of all atoms that should be interned when connecting to a
+ display. */
+static const struct x_atom_ref x_atom_refs[] =
+ {
+#define ATOM_REFS_INIT(string, member) \
+ { string, offsetof (struct x_display_info, member) },
+ ATOM_REFS_INIT ("WM_PROTOCOLS", Xatom_wm_protocols)
+ ATOM_REFS_INIT ("WM_TAKE_FOCUS", Xatom_wm_take_focus)
+ ATOM_REFS_INIT ("WM_SAVE_YOURSELF", Xatom_wm_save_yourself)
+ ATOM_REFS_INIT ("WM_DELETE_WINDOW", Xatom_wm_delete_window)
+ ATOM_REFS_INIT ("WM_CHANGE_STATE", Xatom_wm_change_state)
+ ATOM_REFS_INIT ("WM_STATE", Xatom_wm_state)
+ ATOM_REFS_INIT ("WM_CONFIGURE_DENIED", Xatom_wm_configure_denied)
+ ATOM_REFS_INIT ("WM_MOVED", Xatom_wm_window_moved)
+ ATOM_REFS_INIT ("WM_CLIENT_LEADER", Xatom_wm_client_leader)
+ ATOM_REFS_INIT ("WM_TRANSIENT_FOR", Xatom_wm_transient_for)
+ ATOM_REFS_INIT ("Editres", Xatom_editres)
+ ATOM_REFS_INIT ("CLIPBOARD", Xatom_CLIPBOARD)
+ ATOM_REFS_INIT ("TIMESTAMP", Xatom_TIMESTAMP)
+ ATOM_REFS_INIT ("TEXT", Xatom_TEXT)
+ ATOM_REFS_INIT ("COMPOUND_TEXT", Xatom_COMPOUND_TEXT)
+ ATOM_REFS_INIT ("UTF8_STRING", Xatom_UTF8_STRING)
+ ATOM_REFS_INIT ("DELETE", Xatom_DELETE)
+ ATOM_REFS_INIT ("MULTIPLE", Xatom_MULTIPLE)
+ ATOM_REFS_INIT ("INCR", Xatom_INCR)
+ ATOM_REFS_INIT ("_EMACS_TMP_", Xatom_EMACS_TMP)
+ ATOM_REFS_INIT ("EMACS_SERVER_TIME_PROP", Xatom_EMACS_SERVER_TIME_PROP)
+ ATOM_REFS_INIT ("TARGETS", Xatom_TARGETS)
+ ATOM_REFS_INIT ("NULL", Xatom_NULL)
+ ATOM_REFS_INIT ("ATOM", Xatom_ATOM)
+ ATOM_REFS_INIT ("ATOM_PAIR", Xatom_ATOM_PAIR)
+ ATOM_REFS_INIT ("CLIPBOARD_MANAGER", Xatom_CLIPBOARD_MANAGER)
+ ATOM_REFS_INIT ("_XEMBED_INFO", Xatom_XEMBED_INFO)
+ ATOM_REFS_INIT ("_MOTIF_WM_HINTS", Xatom_MOTIF_WM_HINTS)
+ /* For properties of font. */
+ ATOM_REFS_INIT ("PIXEL_SIZE", Xatom_PIXEL_SIZE)
+ ATOM_REFS_INIT ("AVERAGE_WIDTH", Xatom_AVERAGE_WIDTH)
+ ATOM_REFS_INIT ("_MULE_BASELINE_OFFSET", Xatom_MULE_BASELINE_OFFSET)
+ ATOM_REFS_INIT ("_MULE_RELATIVE_COMPOSE", Xatom_MULE_RELATIVE_COMPOSE)
+ ATOM_REFS_INIT ("_MULE_DEFAULT_ASCENT", Xatom_MULE_DEFAULT_ASCENT)
+ /* Ghostscript support. */
+ ATOM_REFS_INIT ("DONE", Xatom_DONE)
+ ATOM_REFS_INIT ("PAGE", Xatom_PAGE)
+ ATOM_REFS_INIT ("SCROLLBAR", Xatom_Scrollbar)
+ ATOM_REFS_INIT ("HORIZONTAL_SCROLLBAR", Xatom_Horizontal_Scrollbar)
+ ATOM_REFS_INIT ("_XEMBED", Xatom_XEMBED)
+ /* EWMH */
+ ATOM_REFS_INIT ("_NET_WM_STATE", Xatom_net_wm_state)
+ ATOM_REFS_INIT ("_NET_WM_STATE_FULLSCREEN", Xatom_net_wm_state_fullscreen)
+ ATOM_REFS_INIT ("_NET_WM_STATE_MAXIMIZED_HORZ",
+ Xatom_net_wm_state_maximized_horz)
+ ATOM_REFS_INIT ("_NET_WM_STATE_MAXIMIZED_VERT",
+ Xatom_net_wm_state_maximized_vert)
+ ATOM_REFS_INIT ("_NET_WM_STATE_STICKY", Xatom_net_wm_state_sticky)
+ ATOM_REFS_INIT ("_NET_WM_STATE_SHADED", Xatom_net_wm_state_shaded)
+ ATOM_REFS_INIT ("_NET_WM_STATE_HIDDEN", Xatom_net_wm_state_hidden)
+ ATOM_REFS_INIT ("_NET_WM_WINDOW_TYPE", Xatom_net_window_type)
+ ATOM_REFS_INIT ("_NET_WM_WINDOW_TYPE_TOOLTIP",
+ Xatom_net_window_type_tooltip)
+ ATOM_REFS_INIT ("_NET_WM_ICON_NAME", Xatom_net_wm_icon_name)
+ ATOM_REFS_INIT ("_NET_WM_NAME", Xatom_net_wm_name)
+ ATOM_REFS_INIT ("_NET_SUPPORTED", Xatom_net_supported)
+ ATOM_REFS_INIT ("_NET_SUPPORTING_WM_CHECK", Xatom_net_supporting_wm_check)
+ ATOM_REFS_INIT ("_NET_WM_WINDOW_OPACITY", Xatom_net_wm_window_opacity)
+ ATOM_REFS_INIT ("_NET_ACTIVE_WINDOW", Xatom_net_active_window)
+ ATOM_REFS_INIT ("_NET_FRAME_EXTENTS", Xatom_net_frame_extents)
+ ATOM_REFS_INIT ("_NET_CURRENT_DESKTOP", Xatom_net_current_desktop)
+ ATOM_REFS_INIT ("_NET_WORKAREA", Xatom_net_workarea)
+ ATOM_REFS_INIT ("_NET_WM_SYNC_REQUEST", Xatom_net_wm_sync_request)
+ ATOM_REFS_INIT ("_NET_WM_SYNC_REQUEST_COUNTER",
Xatom_net_wm_sync_request_counter)
+ ATOM_REFS_INIT ("_NET_WM_FRAME_DRAWN", Xatom_net_wm_frame_drawn)
+ ATOM_REFS_INIT ("_NET_WM_USER_TIME", Xatom_net_wm_user_time)
+ ATOM_REFS_INIT ("_NET_WM_USER_TIME_WINDOW", Xatom_net_wm_user_time_window)
+ ATOM_REFS_INIT ("_NET_CLIENT_LIST_STACKING",
Xatom_net_client_list_stacking)
+ /* Session management */
+ ATOM_REFS_INIT ("SM_CLIENT_ID", Xatom_SM_CLIENT_ID)
+ ATOM_REFS_INIT ("_XSETTINGS_SETTINGS", Xatom_xsettings_prop)
+ ATOM_REFS_INIT ("MANAGER", Xatom_xsettings_mgr)
+ ATOM_REFS_INIT ("_NET_WM_STATE_SKIP_TASKBAR",
Xatom_net_wm_state_skip_taskbar)
+ ATOM_REFS_INIT ("_NET_WM_STATE_ABOVE", Xatom_net_wm_state_above)
+ ATOM_REFS_INIT ("_NET_WM_STATE_BELOW", Xatom_net_wm_state_below)
+ ATOM_REFS_INIT ("_NET_WM_OPAQUE_REGION", Xatom_net_wm_opaque_region)
+ ATOM_REFS_INIT ("_NET_WM_PING", Xatom_net_wm_ping)
+ ATOM_REFS_INIT ("_NET_WM_PID", Xatom_net_wm_pid)
+#ifdef HAVE_XKB
+ ATOM_REFS_INIT ("Meta", Xatom_Meta)
+ ATOM_REFS_INIT ("Super", Xatom_Super)
+ ATOM_REFS_INIT ("Hyper", Xatom_Hyper)
+ ATOM_REFS_INIT ("ShiftLock", Xatom_ShiftLock)
+ ATOM_REFS_INIT ("Alt", Xatom_Alt)
+#endif
+ /* DND source. */
+ ATOM_REFS_INIT ("XdndAware", Xatom_XdndAware)
+ ATOM_REFS_INIT ("XdndSelection", Xatom_XdndSelection)
+ ATOM_REFS_INIT ("XdndTypeList", Xatom_XdndTypeList)
+ ATOM_REFS_INIT ("XdndActionCopy", Xatom_XdndActionCopy)
+ ATOM_REFS_INIT ("XdndActionMove", Xatom_XdndActionMove)
+ ATOM_REFS_INIT ("XdndActionLink", Xatom_XdndActionLink)
+ ATOM_REFS_INIT ("XdndActionAsk", Xatom_XdndActionAsk)
+ ATOM_REFS_INIT ("XdndActionPrivate", Xatom_XdndActionPrivate)
+ ATOM_REFS_INIT ("XdndActionList", Xatom_XdndActionList)
+ ATOM_REFS_INIT ("XdndActionDescription", Xatom_XdndActionDescription)
+ ATOM_REFS_INIT ("XdndProxy", Xatom_XdndProxy)
+ ATOM_REFS_INIT ("XdndEnter", Xatom_XdndEnter)
+ ATOM_REFS_INIT ("XdndPosition", Xatom_XdndPosition)
+ ATOM_REFS_INIT ("XdndStatus", Xatom_XdndStatus)
+ ATOM_REFS_INIT ("XdndLeave", Xatom_XdndLeave)
+ ATOM_REFS_INIT ("XdndDrop", Xatom_XdndDrop)
+ ATOM_REFS_INIT ("XdndFinished", Xatom_XdndFinished)
+ /* Motif drop protocol support. */
+ ATOM_REFS_INIT ("_MOTIF_DRAG_WINDOW", Xatom_MOTIF_DRAG_WINDOW)
+ ATOM_REFS_INIT ("_MOTIF_DRAG_TARGETS", Xatom_MOTIF_DRAG_TARGETS)
+ ATOM_REFS_INIT ("_MOTIF_DRAG_AND_DROP_MESSAGE",
+ Xatom_MOTIF_DRAG_AND_DROP_MESSAGE)
+ ATOM_REFS_INIT ("_MOTIF_DRAG_INITIATOR_INFO",
+ Xatom_MOTIF_DRAG_INITIATOR_INFO)
+ ATOM_REFS_INIT ("_MOTIF_DRAG_RECEIVER_INFO",
+ Xatom_MOTIF_DRAG_RECEIVER_INFO)
+ ATOM_REFS_INIT ("XmTRANSFER_SUCCESS", Xatom_XmTRANSFER_SUCCESS)
+ ATOM_REFS_INIT ("XmTRANSFER_FAILURE", Xatom_XmTRANSFER_FAILURE)
+ };
+
enum
{
X_EVENT_NORMAL,
@@ -23467,6 +23598,31 @@ x_destroy_window (struct frame *f)
dpyinfo->reference_count--;
}
+/* Intern NAME in DPYINFO, but check to see if the atom was already
+ interned, and use that instead. */
+Atom
+x_intern_cached_atom (struct x_display_info *dpyinfo,
+ const char *name)
+{
+ int i;
+ char *ptr;
+ Atom *atom;
+
+ for (i = 0; i < ARRAYELTS (x_atom_refs); ++i)
+ {
+ ptr = (char *) dpyinfo;
+
+ if (!strcmp (x_atom_refs[i].name, name))
+ {
+ atom = (Atom *) (ptr + x_atom_refs[i].offset);
+
+ return *atom;
+ }
+ }
+
+ return XInternAtom (dpyinfo->display, name, False);
+}
+
/* Setting window manager hints. */
@@ -24655,131 +24811,8 @@ x_term_init (Lisp_Object display_name, char
*xrm_option, char *resource_name)
XScreenNumberOfScreen (dpyinfo->screen));
{
- static const struct
- {
- const char *name;
- int offset;
- } atom_refs[] = {
-#define ATOM_REFS_INIT(string, member) \
- { string, offsetof (struct x_display_info, member) },
- ATOM_REFS_INIT ("WM_PROTOCOLS", Xatom_wm_protocols)
- ATOM_REFS_INIT ("WM_TAKE_FOCUS", Xatom_wm_take_focus)
- ATOM_REFS_INIT ("WM_SAVE_YOURSELF", Xatom_wm_save_yourself)
- ATOM_REFS_INIT ("WM_DELETE_WINDOW", Xatom_wm_delete_window)
- ATOM_REFS_INIT ("WM_CHANGE_STATE", Xatom_wm_change_state)
- ATOM_REFS_INIT ("WM_STATE", Xatom_wm_state)
- ATOM_REFS_INIT ("WM_CONFIGURE_DENIED", Xatom_wm_configure_denied)
- ATOM_REFS_INIT ("WM_MOVED", Xatom_wm_window_moved)
- ATOM_REFS_INIT ("WM_CLIENT_LEADER", Xatom_wm_client_leader)
- ATOM_REFS_INIT ("WM_TRANSIENT_FOR", Xatom_wm_transient_for)
- ATOM_REFS_INIT ("Editres", Xatom_editres)
- ATOM_REFS_INIT ("CLIPBOARD", Xatom_CLIPBOARD)
- ATOM_REFS_INIT ("TIMESTAMP", Xatom_TIMESTAMP)
- ATOM_REFS_INIT ("TEXT", Xatom_TEXT)
- ATOM_REFS_INIT ("COMPOUND_TEXT", Xatom_COMPOUND_TEXT)
- ATOM_REFS_INIT ("UTF8_STRING", Xatom_UTF8_STRING)
- ATOM_REFS_INIT ("DELETE", Xatom_DELETE)
- ATOM_REFS_INIT ("MULTIPLE", Xatom_MULTIPLE)
- ATOM_REFS_INIT ("INCR", Xatom_INCR)
- ATOM_REFS_INIT ("_EMACS_TMP_", Xatom_EMACS_TMP)
- ATOM_REFS_INIT ("EMACS_SERVER_TIME_PROP", Xatom_EMACS_SERVER_TIME_PROP)
- ATOM_REFS_INIT ("TARGETS", Xatom_TARGETS)
- ATOM_REFS_INIT ("NULL", Xatom_NULL)
- ATOM_REFS_INIT ("ATOM", Xatom_ATOM)
- ATOM_REFS_INIT ("ATOM_PAIR", Xatom_ATOM_PAIR)
- ATOM_REFS_INIT ("CLIPBOARD_MANAGER", Xatom_CLIPBOARD_MANAGER)
- ATOM_REFS_INIT ("_XEMBED_INFO", Xatom_XEMBED_INFO)
- ATOM_REFS_INIT ("_MOTIF_WM_HINTS", Xatom_MOTIF_WM_HINTS)
- /* For properties of font. */
- ATOM_REFS_INIT ("PIXEL_SIZE", Xatom_PIXEL_SIZE)
- ATOM_REFS_INIT ("AVERAGE_WIDTH", Xatom_AVERAGE_WIDTH)
- ATOM_REFS_INIT ("_MULE_BASELINE_OFFSET", Xatom_MULE_BASELINE_OFFSET)
- ATOM_REFS_INIT ("_MULE_RELATIVE_COMPOSE", Xatom_MULE_RELATIVE_COMPOSE)
- ATOM_REFS_INIT ("_MULE_DEFAULT_ASCENT", Xatom_MULE_DEFAULT_ASCENT)
- /* Ghostscript support. */
- ATOM_REFS_INIT ("DONE", Xatom_DONE)
- ATOM_REFS_INIT ("PAGE", Xatom_PAGE)
- ATOM_REFS_INIT ("SCROLLBAR", Xatom_Scrollbar)
- ATOM_REFS_INIT ("HORIZONTAL_SCROLLBAR", Xatom_Horizontal_Scrollbar)
- ATOM_REFS_INIT ("_XEMBED", Xatom_XEMBED)
- /* EWMH */
- ATOM_REFS_INIT ("_NET_WM_STATE", Xatom_net_wm_state)
- ATOM_REFS_INIT ("_NET_WM_STATE_FULLSCREEN",
Xatom_net_wm_state_fullscreen)
- ATOM_REFS_INIT ("_NET_WM_STATE_MAXIMIZED_HORZ",
- Xatom_net_wm_state_maximized_horz)
- ATOM_REFS_INIT ("_NET_WM_STATE_MAXIMIZED_VERT",
- Xatom_net_wm_state_maximized_vert)
- ATOM_REFS_INIT ("_NET_WM_STATE_STICKY", Xatom_net_wm_state_sticky)
- ATOM_REFS_INIT ("_NET_WM_STATE_SHADED", Xatom_net_wm_state_shaded)
- ATOM_REFS_INIT ("_NET_WM_STATE_HIDDEN", Xatom_net_wm_state_hidden)
- ATOM_REFS_INIT ("_NET_WM_WINDOW_TYPE", Xatom_net_window_type)
- ATOM_REFS_INIT ("_NET_WM_WINDOW_TYPE_TOOLTIP",
- Xatom_net_window_type_tooltip)
- ATOM_REFS_INIT ("_NET_WM_ICON_NAME", Xatom_net_wm_icon_name)
- ATOM_REFS_INIT ("_NET_WM_NAME", Xatom_net_wm_name)
- ATOM_REFS_INIT ("_NET_SUPPORTED", Xatom_net_supported)
- ATOM_REFS_INIT ("_NET_SUPPORTING_WM_CHECK",
Xatom_net_supporting_wm_check)
- ATOM_REFS_INIT ("_NET_WM_WINDOW_OPACITY", Xatom_net_wm_window_opacity)
- ATOM_REFS_INIT ("_NET_ACTIVE_WINDOW", Xatom_net_active_window)
- ATOM_REFS_INIT ("_NET_FRAME_EXTENTS", Xatom_net_frame_extents)
- ATOM_REFS_INIT ("_NET_CURRENT_DESKTOP", Xatom_net_current_desktop)
- ATOM_REFS_INIT ("_NET_WORKAREA", Xatom_net_workarea)
- ATOM_REFS_INIT ("_NET_WM_SYNC_REQUEST", Xatom_net_wm_sync_request)
- ATOM_REFS_INIT ("_NET_WM_SYNC_REQUEST_COUNTER",
Xatom_net_wm_sync_request_counter)
- ATOM_REFS_INIT ("_NET_WM_FRAME_DRAWN", Xatom_net_wm_frame_drawn)
- ATOM_REFS_INIT ("_NET_WM_USER_TIME", Xatom_net_wm_user_time)
- ATOM_REFS_INIT ("_NET_WM_USER_TIME_WINDOW",
Xatom_net_wm_user_time_window)
- ATOM_REFS_INIT ("_NET_CLIENT_LIST_STACKING",
Xatom_net_client_list_stacking)
- /* Session management */
- ATOM_REFS_INIT ("SM_CLIENT_ID", Xatom_SM_CLIENT_ID)
- ATOM_REFS_INIT ("_XSETTINGS_SETTINGS", Xatom_xsettings_prop)
- ATOM_REFS_INIT ("MANAGER", Xatom_xsettings_mgr)
- ATOM_REFS_INIT ("_NET_WM_STATE_SKIP_TASKBAR",
Xatom_net_wm_state_skip_taskbar)
- ATOM_REFS_INIT ("_NET_WM_STATE_ABOVE", Xatom_net_wm_state_above)
- ATOM_REFS_INIT ("_NET_WM_STATE_BELOW", Xatom_net_wm_state_below)
- ATOM_REFS_INIT ("_NET_WM_OPAQUE_REGION", Xatom_net_wm_opaque_region)
- ATOM_REFS_INIT ("_NET_WM_PING", Xatom_net_wm_ping)
- ATOM_REFS_INIT ("_NET_WM_PID", Xatom_net_wm_pid)
-#ifdef HAVE_XKB
- ATOM_REFS_INIT ("Meta", Xatom_Meta)
- ATOM_REFS_INIT ("Super", Xatom_Super)
- ATOM_REFS_INIT ("Hyper", Xatom_Hyper)
- ATOM_REFS_INIT ("ShiftLock", Xatom_ShiftLock)
- ATOM_REFS_INIT ("Alt", Xatom_Alt)
-#endif
- /* DND source. */
- ATOM_REFS_INIT ("XdndAware", Xatom_XdndAware)
- ATOM_REFS_INIT ("XdndSelection", Xatom_XdndSelection)
- ATOM_REFS_INIT ("XdndTypeList", Xatom_XdndTypeList)
- ATOM_REFS_INIT ("XdndActionCopy", Xatom_XdndActionCopy)
- ATOM_REFS_INIT ("XdndActionMove", Xatom_XdndActionMove)
- ATOM_REFS_INIT ("XdndActionLink", Xatom_XdndActionLink)
- ATOM_REFS_INIT ("XdndActionAsk", Xatom_XdndActionAsk)
- ATOM_REFS_INIT ("XdndActionPrivate", Xatom_XdndActionPrivate)
- ATOM_REFS_INIT ("XdndActionList", Xatom_XdndActionList)
- ATOM_REFS_INIT ("XdndActionDescription", Xatom_XdndActionDescription)
- ATOM_REFS_INIT ("XdndProxy", Xatom_XdndProxy)
- ATOM_REFS_INIT ("XdndEnter", Xatom_XdndEnter)
- ATOM_REFS_INIT ("XdndPosition", Xatom_XdndPosition)
- ATOM_REFS_INIT ("XdndStatus", Xatom_XdndStatus)
- ATOM_REFS_INIT ("XdndLeave", Xatom_XdndLeave)
- ATOM_REFS_INIT ("XdndDrop", Xatom_XdndDrop)
- ATOM_REFS_INIT ("XdndFinished", Xatom_XdndFinished)
- /* Motif drop protocol support. */
- ATOM_REFS_INIT ("_MOTIF_DRAG_WINDOW", Xatom_MOTIF_DRAG_WINDOW)
- ATOM_REFS_INIT ("_MOTIF_DRAG_TARGETS", Xatom_MOTIF_DRAG_TARGETS)
- ATOM_REFS_INIT ("_MOTIF_DRAG_AND_DROP_MESSAGE",
- Xatom_MOTIF_DRAG_AND_DROP_MESSAGE)
- ATOM_REFS_INIT ("_MOTIF_DRAG_INITIATOR_INFO",
- Xatom_MOTIF_DRAG_INITIATOR_INFO)
- ATOM_REFS_INIT ("_MOTIF_DRAG_RECEIVER_INFO",
- Xatom_MOTIF_DRAG_RECEIVER_INFO)
- ATOM_REFS_INIT ("XmTRANSFER_SUCCESS", Xatom_XmTRANSFER_SUCCESS)
- ATOM_REFS_INIT ("XmTRANSFER_FAILURE", Xatom_XmTRANSFER_FAILURE)
- };
-
int i;
- enum { atom_count = ARRAYELTS (atom_refs) };
+ enum { atom_count = ARRAYELTS (x_atom_refs) };
/* 1 for _XSETTINGS_SN. */
enum { total_atom_count = 2 + atom_count };
Atom atoms_return[total_atom_count];
@@ -24789,7 +24822,7 @@ x_term_init (Lisp_Object display_name, char
*xrm_option, char *resource_name)
+ INT_STRLEN_BOUND (int)];
for (i = 0; i < atom_count; i++)
- atom_names[i] = (char *) atom_refs[i].name;
+ atom_names[i] = (char *) x_atom_refs[i].name;
/* Build _XSETTINGS_SN atom name. */
sprintf (xsettings_atom_name, xsettings_fmt,
@@ -24801,7 +24834,7 @@ x_term_init (Lisp_Object display_name, char
*xrm_option, char *resource_name)
False, atoms_return);
for (i = 0; i < atom_count; i++)
- *(Atom *) ((char *) dpyinfo + atom_refs[i].offset) = atoms_return[i];
+ *(Atom *) ((char *) dpyinfo + x_atom_refs[i].offset) = atoms_return[i];
/* Manually copy last two atoms. */
dpyinfo->Xatom_xsettings_sel = atoms_return[i];
diff --git a/src/xterm.h b/src/xterm.h
index 724caf9e75..5780f88bbc 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -1536,6 +1536,7 @@ extern Lisp_Object x_timestamp_for_selection (struct
x_display_info *,
Lisp_Object);
extern void x_set_pending_dnd_time (Time);
extern void x_own_selection (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Atom x_intern_cached_atom (struct x_display_info *, const char *);
#ifdef USE_GTK
extern bool xg_set_icon (struct frame *, Lisp_Object);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 6f3925eace: Add more error checking to some X functions,
Po Lu <=