Don't call xwidget functions until GTK has been initialized
Follow up fix to Bug#33294. * src/gtkutil.c: Define xg_gtk_initialized. (xg_initialize): Set it when GTK has finished initializing. * src/gtkutil.h: Declare xg_gtk_initialized. * src/xwidget.c (Fmake_xwidget): Error out if GTK has not been initialized. (xwidget_init_view): Likewise.
This commit is contained in:
parent
f0531b8e64
commit
a291f62428
3 changed files with 11 additions and 0 deletions
|
@ -147,6 +147,8 @@ struct xg_frame_tb_info
|
|||
GtkTextDirection dir;
|
||||
};
|
||||
|
||||
bool xg_gtk_initialized; /* Used to make sure xwidget calls are possible */
|
||||
|
||||
static GtkWidget * xg_get_widget_from_map (ptrdiff_t idx);
|
||||
|
||||
|
||||
|
@ -5306,6 +5308,8 @@ xg_initialize (void)
|
|||
#ifdef HAVE_FREETYPE
|
||||
x_last_font_name = NULL;
|
||||
#endif
|
||||
|
||||
xg_gtk_initialized = true;
|
||||
}
|
||||
|
||||
#endif /* USE_GTK */
|
||||
|
|
|
@ -202,5 +202,6 @@ extern void xg_initialize (void);
|
|||
to indicate that the callback should do nothing. */
|
||||
extern bool xg_ignore_gtk_scrollbar;
|
||||
|
||||
extern bool xg_gtk_initialized;
|
||||
#endif /* USE_GTK */
|
||||
#endif /* GTKUTIL_H */
|
||||
|
|
|
@ -78,6 +78,8 @@ Returns the newly constructed xwidget, or nil if construction fails. */)
|
|||
Lisp_Object title, Lisp_Object width, Lisp_Object height,
|
||||
Lisp_Object arguments, Lisp_Object buffer)
|
||||
{
|
||||
if (!xg_gtk_initialized)
|
||||
error ("make-xwidget: GTK has not been initialized");
|
||||
CHECK_SYMBOL (type);
|
||||
CHECK_NATNUM (width);
|
||||
CHECK_NATNUM (height);
|
||||
|
@ -508,6 +510,10 @@ xwidget_init_view (struct xwidget *xww,
|
|||
struct glyph_string *s,
|
||||
int x, int y)
|
||||
{
|
||||
|
||||
if (!xg_gtk_initialized)
|
||||
error ("xwidget_init_view: GTK has not been initialized");
|
||||
|
||||
struct xwidget_view *xv = allocate_xwidget_view ();
|
||||
Lisp_Object val;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue