/* Functions for the X window system.
-Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
- 2011 Free Software Foundation, Inc.
+Copyright (C) 1989, 1992-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
#if !defined(NO_EDITRES)
#define HACK_EDITRES
-extern void _XEditResCheckMessages ();
+extern void _XEditResCheckMessages (Widget, XtPointer, XEvent *, Boolean *);
#endif /* not defined NO_EDITRES */
/* Unique id counter for widgets created by the Lucid Widget Library. */
extern LWLIB_ID widget_id_tick;
-extern void free_frame_menubar ();
-extern double atof ();
-
#ifdef USE_MOTIF
#endif /* USE_MOTIF */
static int x_in_use;
-Lisp_Object Qnone;
-Lisp_Object Qsuppress_icon;
-Lisp_Object Qundefined_color;
-Lisp_Object Qcompound_text, Qcancel_timer;
+static Lisp_Object Qnone;
+static Lisp_Object Qsuppress_icon;
+static Lisp_Object Qundefined_color;
+static Lisp_Object Qcompound_text, Qcancel_timer;
Lisp_Object Qfont_param;
#if GLYPH_DEBUG
#endif
#if defined (USE_GTK) && defined (HAVE_FREETYPE)
-char *x_last_font_name;
+static char *x_last_font_name;
#endif
+static struct x_display_info *x_display_info_for_name (Lisp_Object);
+
\f
/* Error if we are not connected to X. */
struct terminal *t = get_terminal (object, 1);
if (t->type != output_x_window)
- error ("Terminal %d is not an X display", XINT (object));
+ error ("Terminal %"pEd" is not an X display", XINT (object));
dpyinfo = t->display_info.x;
}
\f
-static void x_default_font_parameter (struct frame *, Lisp_Object);
-
-static Lisp_Object unwind_create_frame (Lisp_Object);
-static Lisp_Object unwind_create_tip_frame (Lisp_Object);
-
-void x_set_foreground_color (struct frame *, Lisp_Object, Lisp_Object);
-static void x_set_wait_for_wm (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_background_color (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_mouse_color (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_cursor_color (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_border_color (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_cursor_type (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_icon_type (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_icon_name (struct frame *, Lisp_Object, Lisp_Object);
-void x_explicitly_set_name (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_title (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_tool_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
-void x_set_scroll_bar_foreground (struct frame *, Lisp_Object,
- Lisp_Object);
-void x_set_scroll_bar_background (struct frame *, Lisp_Object,
- Lisp_Object);
-static Lisp_Object x_default_scroll_bar_color_parameter (struct frame *,
- Lisp_Object,
- Lisp_Object,
- const char *, const char *,
- int);
-\f
-
/* Store the screen positions of frame F into XPTR and YPTR.
These are the positions of the containing window manager window,
not Emacs's own window. */
Window win = f->output_data.x->parent_desc;
Atom actual_type;
unsigned long actual_size, bytes_remaining;
- int i, rc, actual_format;
+ int rc, actual_format;
struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
long max_len = 400;
Display *dpy = FRAME_X_DISPLAY (f);
is a monochrome frame, return MONO_COLOR regardless of what ARG says.
Signal an error if color can't be allocated. */
-int
+static int
x_decode_color (FRAME_PTR f, Lisp_Object color_name, int mono_color)
{
XColor cdef;
/* x_defined_color is responsible for coping with failures
by looking for a near-miss. */
- if (x_defined_color (f, SDATA (color_name), &cdef, 1))
+ if (x_defined_color (f, SSDATA (color_name), &cdef, 1))
return cdef.pixel;
signal_error ("Undefined color", color_name);
{
GdkPixbuf *pixbuf;
GError *err = NULL;
- char *filename = (char *) SDATA (found);
+ char *filename = SSDATA (found);
BLOCK_INPUT;
pixbuf = gdk_pixbuf_new_from_file (filename, &err);
int
xg_set_icon_from_xpm_data (FRAME_PTR f, const char **data)
{
- int result = 0;
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data (data);
if (!pixbuf)
In that case, just record the parameter's new value
in the standard place; do not attempt to change the window. */
-void
+static void
x_set_foreground_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
{
struct x_output *x = f->output_data.x;
unload_color (f, old_fg);
}
-void
+static void
x_set_background_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
{
struct x_output *x = f->output_data.x;
static char const no_data[] = { 0 };
Pixmap pix;
XColor col;
- Cursor c;
+ Cursor c = 0;
x_catch_errors (dpy);
pix = XCreateBitmapFromData (dpy, FRAME_X_DISPLAY_INFO (f)->root_window,
no_data, 1, 1);
if (! x_had_errors_p (dpy) && pix != None)
{
+ Cursor pixc;
col.pixel = 0;
col.red = col.green = col.blue = 0;
col.flags = DoRed | DoGreen | DoBlue;
- c = XCreatePixmapCursor (dpy, pix, pix, &col, &col, 0, 0);
- if (x_had_errors_p (dpy) || c == None)
- c = 0;
+ pixc = XCreatePixmapCursor (dpy, pix, pix, &col, &col, 0, 0);
+ if (! x_had_errors_p (dpy) && pixc != None)
+ c = pixc;
XFreePixmap (dpy, pix);
}
return c;
}
-void
+static void
x_set_mouse_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
{
struct x_output *x = f->output_data.x;
update_face_from_frame_parameter (f, Qmouse_color, arg);
}
-void
+static void
x_set_cursor_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
{
unsigned long fore_pixel, pixel;
Note that this does not fully take effect if done before
F has an x-window. */
-void
+static void
x_set_border_pixel (struct frame *f, int pix)
{
unload_color (f, f->output_data.x->border_pixel);
Note: under X11, this is normally the province of the window manager,
and so emacs' border colors may be overridden. */
-void
+static void
x_set_border_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
{
int pix;
}
-void
+static void
x_set_cursor_type (FRAME_PTR f, Lisp_Object arg, Lisp_Object oldval)
{
set_frame_cursor_types (f, arg);
cursor_type_changed = 1;
}
\f
-void
+static void
x_set_icon_type (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
{
int result;
BLOCK_INPUT;
if (NILP (arg))
result = x_text_icon (f,
- (char *) SDATA ((!NILP (f->icon_name)
- ? f->icon_name
- : f->name)));
+ SSDATA ((!NILP (f->icon_name)
+ ? f->icon_name
+ : f->name)));
else
result = x_bitmap_icon (f, arg);
UNBLOCK_INPUT;
}
-void
+static void
x_set_icon_name (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
{
int result;
BLOCK_INPUT;
result = x_text_icon (f,
- (char *) SDATA ((!NILP (f->icon_name)
- ? f->icon_name
- : !NILP (f->title)
- ? f->title
- : f->name)));
+ SSDATA ((!NILP (f->icon_name)
+ ? f->icon_name
+ : !NILP (f->title)
+ ? f->title
+ : f->name)));
if (result)
{
isn't a valid color name, do nothing. OLDVAL is the old value of
the frame parameter. */
-void
+static void
x_set_scroll_bar_foreground (struct frame *f, Lisp_Object value, Lisp_Object oldval)
{
unsigned long pixel;
valid color name, do nothing. OLDVAL is the old value of the frame
parameter. */
-void
+static void
x_set_scroll_bar_background (struct frame *f, Lisp_Object value, Lisp_Object oldval)
{
unsigned long pixel;
#ifdef USE_GTK
gtk_window_set_title (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
- (char *) SDATA (encoded_name));
+ SSDATA (encoded_name));
#else /* not USE_GTK */
XSetWMName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &text);
XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_name,
FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
8, PropModeReplace,
- (char *) SDATA (encoded_name),
+ SDATA (encoded_name),
SBYTES (encoded_name));
#endif /* not USE_GTK */
FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_icon_name,
FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
8, PropModeReplace,
- (char *) SDATA (encoded_icon_name),
+ SDATA (encoded_icon_name),
SBYTES (encoded_icon_name));
if (do_free_icon_value)
suggesting a new name, which lisp code should override; if
F->explicit_name is set, ignore the new name; otherwise, set it. */
-void
+static void
x_set_name (struct frame *f, Lisp_Object name, int explicit)
{
/* Make sure that requests from lisp code override requests from
/* Check for no change needed in this very common case
before we do any consing. */
if (!strcmp (FRAME_X_DISPLAY_INFO (f)->x_id_name,
- SDATA (f->name)))
+ SSDATA (f->name)))
return;
name = build_string (FRAME_X_DISPLAY_INFO (f)->x_id_name);
}
/* This function should be called when the user's lisp code has
specified a name for the frame; the name will override any set by the
redisplay code. */
-void
+static void
x_explicitly_set_name (FRAME_PTR f, Lisp_Object arg, Lisp_Object oldval)
{
x_set_name (f, arg, 1);
/* Change the title of frame F to NAME.
If NAME is nil, use the frame name as the title. */
-void
+static void
x_set_title (struct frame *f, Lisp_Object name, Lisp_Object old_name)
{
/* Don't change the title if it's already NAME. */
};
+#if defined HAVE_X_WINDOWS && defined USE_X_TOOLKIT
/* Create an X fontset on frame F with base font name BASE_FONTNAME. */
-const char xic_defaut_fontset[] = "-*-*-*-r-normal--14-*-*-*-*-*-*-*";
+static const char xic_defaut_fontset[] = "-*-*-*-r-normal--14-*-*-*-*-*-*-*";
/* Create an Xt fontset spec from the name of a base font.
If `motif' is True use the Motif syntax. */
strcat (fontsetname, ":");
return fontsetname;
}
+#endif /* HAVE_X_WINDOWS && USE_X_TOOLKIT */
#ifdef DEBUG_XIC_FONTSET
static void
Elsewhere we specify the window name for the window manager. */
{
- char *str = (char *) SDATA (Vx_resource_name);
+ char *str = SSDATA (Vx_resource_name);
f->namebuf = (char *) xmalloc (strlen (str) + 1);
strcpy (f->namebuf, str);
}
{
int len;
char *tem, shell_position[32];
- Arg al[10];
- int ac = 0;
+ Arg gal[10];
+ int gac = 0;
int extra_borders = 0;
int menubar_size
= (f->output_data.x->menubar_widget
If Emacs had just one program position, we could set it in
fallback resources, but since each make-frame call can specify
different program positions, this is easier. */
- XtSetArg (al[ac], XtNx, left); ac++;
- XtSetArg (al[ac], XtNy, top); ac++;
+ XtSetArg (gal[gac], XtNx, left); gac++;
+ XtSetArg (gal[gac], XtNy, top); gac++;
}
}
when the frame is deleted. */
tem = (char *) xmalloc (len);
strncpy (tem, shell_position, len);
- XtSetArg (al[ac], XtNgeometry, tem); ac++;
- XtSetValues (shell_widget, al, ac);
+ XtSetArg (gal[gac], XtNgeometry, tem); gac++;
+ XtSetValues (shell_widget, gal, gac);
}
XtManageChild (pane_widget);
validate_x_resource_name ();
- class_hints.res_name = (char *) SDATA (Vx_resource_name);
- class_hints.res_class = (char *) SDATA (Vx_resource_class);
+ class_hints.res_name = SSDATA (Vx_resource_name);
+ class_hints.res_class = SSDATA (Vx_resource_class);
XSetClassHint (FRAME_X_DISPLAY (f), XtWindow (shell_widget), &class_hints);
#ifdef HAVE_X_I18N
#else /* not USE_X_TOOLKIT */
#ifdef USE_GTK
-void
+static void
x_window (FRAME_PTR f)
{
if (! xg_create_frame_widgets (f))
#else /*! USE_GTK */
/* Create and set up the X window for frame F. */
-void
+static void
x_window (struct frame *f)
{
XClassHint class_hints;
validate_x_resource_name ();
- class_hints.res_name = (char *) SDATA (Vx_resource_name);
- class_hints.res_class = (char *) SDATA (Vx_resource_class);
+ class_hints.res_name = SSDATA (Vx_resource_name);
+ class_hints.res_class = SSDATA (Vx_resource_class);
XSetClassHint (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), &class_hints);
/* The menubar is part of the ordinary display;
: NormalState));
#endif
- x_text_icon (f, (char *) SDATA ((!NILP (f->icon_name)
- ? f->icon_name
- : f->name)));
+ x_text_icon (f, SSDATA ((!NILP (f->icon_name)
+ ? f->icon_name
+ : f->name)));
UNBLOCK_INPUT;
}
{
char *name = xstrdup (system_font);
font = font_open_by_name (f, name);
- free (name);
+ xfree (name);
}
}
to get the color reference counts right, so initialize them! */
{
Lisp_Object black;
- struct gcpro gcpro1;
+ struct gcpro inner_gcpro1;
/* Function x_decode_color can signal an error. Make
sure to initialize color slots so that we won't try
f->output_data.x->mouse_pixel = -1;
black = build_string ("black");
- GCPRO1 (black);
+ GCPRO1_VAR (black, inner_gcpro);
FRAME_FOREGROUND_PIXEL (f)
= x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
FRAME_BACKGROUND_PIXEL (f)
= x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
f->output_data.x->mouse_pixel
= x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
- UNGCPRO;
+ UNGCPRO_VAR (inner_gcpro);
}
/* Specify the parent under which to make this X window. */
else if (! NILP (visibility))
x_make_frame_visible (f);
else
- /* Must have been Qnil. */
- ;
+ {
+ /* Must have been Qnil. */
+ }
}
BLOCK_INPUT;
/* Initialize `default-minibuffer-frame' in case this is the first
frame on this terminal. */
if (FRAME_HAS_MINIBUF_P (f)
- && (!FRAMEP (kb->Vdefault_minibuffer_frame)
- || !FRAME_LIVE_P (XFRAME (kb->Vdefault_minibuffer_frame))))
- kb->Vdefault_minibuffer_frame = frame;
+ && (!FRAMEP (KVAR (kb, Vdefault_minibuffer_frame))
+ || !FRAME_LIVE_P (XFRAME (KVAR (kb, Vdefault_minibuffer_frame)))))
+ KVAR (kb, Vdefault_minibuffer_frame) = frame;
/* All remaining specified parameters, which have not been "used"
by x_get_arg and friends, now go in the misc. alist of the frame. */
CHECK_STRING (color);
- if (x_defined_color (f, SDATA (color), &foo, 0))
+ if (x_defined_color (f, SSDATA (color), &foo, 0))
return Qt;
else
return Qnil;
CHECK_STRING (color);
- if (x_defined_color (f, SDATA (color), &foo, 0))
+ if (x_defined_color (f, SSDATA (color), &foo, 0))
return list3 (make_number (foo.red),
make_number (foo.green),
make_number (foo.blue));
return FRAME_LINE_HEIGHT (f);
}
-int
-x_screen_planes (register struct frame *f)
-{
- return FRAME_X_DISPLAY_INFO (f)->n_planes;
-}
-
\f
/************************************************************************
int i, class = -1;
XVisualInfo vinfo;
- strcpy (s, SDATA (value));
+ strcpy (s, SSDATA (value));
dash = strchr (s, '-');
if (dash)
{
/* Return the X display structure for the display named NAME.
Open a new connection if necessary. */
-struct x_display_info *
+static struct x_display_info *
x_display_info_for_name (Lisp_Object name)
{
Lisp_Object names;
validate_x_resource_name ();
dpyinfo = x_term_init (name, (char *)0,
- (char *) SDATA (Vx_resource_name));
+ SSDATA (Vx_resource_name));
if (dpyinfo == 0)
error ("Cannot connect to X server %s", SDATA (name));
\(In the Nextstep version, the last two arguments are currently ignored.) */)
(Lisp_Object display, Lisp_Object xrm_string, Lisp_Object must_succeed)
{
- unsigned char *xrm_option;
+ char *xrm_option;
struct x_display_info *dpyinfo;
CHECK_STRING (display);
#endif
if (! NILP (xrm_string))
- xrm_option = (unsigned char *) SDATA (xrm_string);
+ xrm_option = SSDATA (xrm_string);
else
- xrm_option = (unsigned char *) 0;
+ xrm_option = (char *) 0;
validate_x_resource_name ();
/* This is what opens the connection and sets x_current_display.
This also initializes many symbols, such as those used for input. */
dpyinfo = x_term_init (display, xrm_option,
- (char *) SDATA (Vx_resource_name));
+ SSDATA (Vx_resource_name));
if (dpyinfo == 0)
{
}
BLOCK_INPUT;
- prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SDATA (prop), False);
+ prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (prop), False);
if (! NILP (type))
{
CHECK_STRING (type);
- target_type = XInternAtom (FRAME_X_DISPLAY (f), SDATA (type), False);
+ target_type = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (type), False);
}
if (! NILP (outer_p)) w = FRAME_OUTER_WINDOW (f);
CHECK_STRING (prop);
BLOCK_INPUT;
- prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SDATA (prop), False);
+ prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (prop), False);
XDeleteProperty (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), prop_atom);
/* Make sure the property is removed when we return. */
BLOCK_INPUT;
if (STRINGP (type))
{
- if (strcmp ("AnyPropertyType", SDATA (type)) == 0)
+ if (strcmp ("AnyPropertyType", SSDATA (type)) == 0)
target_type = AnyPropertyType;
else
- target_type = XInternAtom (FRAME_X_DISPLAY (f), SDATA (type), False);
+ target_type = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (type), False);
}
- prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SDATA (prop), False);
+ prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (prop), False);
rc = XGetWindowProperty (FRAME_X_DISPLAY (f), target_window,
prop_atom, 0, 0, False, target_type,
&actual_type, &actual_format, &actual_size,
}
if (NILP (vector_ret_p))
- prop_value = make_string (tmp_data, size);
+ prop_value = make_string ((char *) tmp_data, size);
else
prop_value = x_property_data_to_lisp (f,
tmp_data,
/* If non-nil, a timer started that hides the last tooltip when it
fires. */
-Lisp_Object tip_timer;
+static Lisp_Object tip_timer;
Window tip_window;
/* If non-nil, a vector of 3 elements containing the last args
with which x-show-tip was called. See there. */
-Lisp_Object last_show_tip_args;
+static Lisp_Object last_show_tip_args;
static Lisp_Object
Lisp_Object text)
{
struct frame *f;
- Lisp_Object frame, tem;
+ Lisp_Object frame;
Lisp_Object name;
- long window_prompting = 0;
int width, height;
int count = SPECPDL_INDEX ();
struct gcpro gcpro1, gcpro2, gcpro3;
Fset_window_buffer (FRAME_ROOT_WINDOW (f), buffer, Qnil);
old_buffer = current_buffer;
set_buffer_internal_1 (XBUFFER (buffer));
- current_buffer->truncate_lines = Qnil;
+ BVAR (current_buffer, truncate_lines) = Qnil;
specbind (Qinhibit_read_only, Qt);
specbind (Qinhibit_modification_hooks, Qt);
Ferase_buffer ();
to get the color reference counts right, so initialize them! */
{
Lisp_Object black;
- struct gcpro gcpro1;
+ struct gcpro inner_gcpro1;
/* Function x_decode_color can signal an error. Make
sure to initialize color slots so that we won't try
f->output_data.x->mouse_pixel = -1;
black = build_string ("black");
- GCPRO1 (black);
+ GCPRO1_VAR (black, inner_gcpro);
FRAME_FOREGROUND_PIXEL (f)
= x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
FRAME_BACKGROUND_PIXEL (f)
= x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
f->output_data.x->mouse_pixel
= x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
- UNGCPRO;
+ UNGCPRO_VAR (inner_gcpro);
}
/* Set the name; the functions to which we pass f expect the name to
f->output_data.x->parent_desc = FRAME_X_DISPLAY_INFO (f)->root_window;
- window_prompting = x_figure_window_size (f, parms, 0);
+ x_figure_window_size (f, parms, 0);
{
XSetWindowAttributes attrs;
&& !NILP (Fequal (last_string, string))
&& !NILP (Fequal (last_parms, parms)))
{
- struct frame *f = XFRAME (tip_frame);
+ struct frame *tip_f = XFRAME (tip_frame);
/* Only DX and DY have changed. */
if (!NILP (tip_timer))
}
BLOCK_INPUT;
- compute_tip_xy (f, parms, dx, dy, FRAME_PIXEL_WIDTH (f),
- FRAME_PIXEL_HEIGHT (f), &root_x, &root_y);
- XMoveWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
+ compute_tip_xy (tip_f, parms, dx, dy, FRAME_PIXEL_WIDTH (tip_f),
+ FRAME_PIXEL_HEIGHT (tip_f), &root_x, &root_y);
+ XMoveWindow (FRAME_X_DISPLAY (tip_f), FRAME_X_WINDOW (tip_f),
root_x, root_y);
UNBLOCK_INPUT;
goto start_timer;
/* Display the tooltip text in a temporary buffer. */
old_buffer = current_buffer;
set_buffer_internal_1 (XBUFFER (XWINDOW (FRAME_ROOT_WINDOW (f))->buffer));
- current_buffer->truncate_lines = Qnil;
+ BVAR (current_buffer, truncate_lines) = Qnil;
clear_glyph_matrix (w->desired_matrix);
clear_glyph_matrix (w->current_matrix);
SET_TEXT_POS (pos, BEGV, BEGV_BYTE);
BLOCK_INPUT;
if (STRINGP (default_filename))
- cdef_file = SDATA (default_filename);
+ cdef_file = SSDATA (default_filename);
else
- cdef_file = SDATA (dir);
+ cdef_file = SSDATA (dir);
- fn = xg_get_file_name (f, SDATA (prompt), cdef_file,
+ fn = xg_get_file_name (f, SSDATA (prompt), cdef_file,
! NILP (mustmatch),
! NILP (only_dir_p));
XSETFONT (font, FRAME_FONT (f));
font_param = Ffont_get (font, intern (":name"));
if (STRINGP (font_param))
- default_name = xstrdup (SDATA (font_param));
+ default_name = xstrdup (SSDATA (font_param));
else
{
font_param = Fframe_parameter (frame, Qfont_param);
if (STRINGP (font_param))
- default_name = xstrdup (SDATA (font_param));
+ default_name = xstrdup (SSDATA (font_param));
}
if (default_name == NULL && x_last_font_name != NULL)
struct frame *f = check_x_frame (frame);
Display *dpy = FRAME_X_DISPLAY (f);
Lisp_Object have_keys;
- int major, minor, op, event, error;
+ int major, minor, op, event, error_code;
BLOCK_INPUT;
/* Check that the server supports XKB. */
major = XkbMajorVersion;
minor = XkbMinorVersion;
- if (!XkbQueryExtension (dpy, &op, &event, &error, &major, &minor))
+ if (!XkbQueryExtension (dpy, &op, &event, &error_code, &major, &minor))
{
UNBLOCK_INPUT;
return Qlambda;