diff options
author | Dmitry Antipov <dmantipov@yandex.ru> | 2014-06-03 08:17:53 +0400 |
---|---|---|
committer | Dmitry Antipov <dmantipov@yandex.ru> | 2014-06-03 08:17:53 +0400 |
commit | 0882152e225d4cb722782545441fd38a22cacef5 (patch) | |
tree | 3652561353f125bf92f0848ca62d487d0e2fdf6f /lwlib | |
parent | 827a3c3d8e53eabefcaf81b2944dad5e79e8031a (diff) |
* xlwmenu.c (openXftFont): Do not load regular X font here.
(XlwMenuInitialize): Remove ancient #if 0 code.
(XlwMenuDestroy): Likewise. Free regular X font here.
Diffstat (limited to 'lwlib')
-rw-r--r-- | lwlib/ChangeLog | 6 | ||||
-rw-r--r-- | lwlib/xlwmenu.c | 38 |
2 files changed, 17 insertions, 27 deletions
diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog index 294bb10ef0..5457b91d64 100644 --- a/lwlib/ChangeLog +++ b/lwlib/ChangeLog @@ -1,3 +1,9 @@ +2014-06-03 Dmitry Antipov <dmantipov@yandex.ru> + + * xlwmenu.c (openXftFont): Do not load regular X font here. + (XlwMenuInitialize): Remove ancient #if 0 code. + (XlwMenuDestroy): Likewise. Free regular X font here. + 2014-06-02 Dmitry Antipov <dmantipov@yandex.ru> Use common memory management functions for widgets. diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c index a4a18f0ba4..6f4db562e0 100644 --- a/lwlib/xlwmenu.c +++ b/lwlib/xlwmenu.c @@ -1863,16 +1863,9 @@ openXftFont (XlwMenuWidget mw) fname[i] = '-'; } - mw->menu.font = XLoadQueryFont (XtDisplay (mw), fname); - if (!mw->menu.font) - { - mw->menu.xft_font = XftFontOpenName (XtDisplay (mw), screen, fname); - if (!mw->menu.xft_font) - { - fprintf (stderr, "Can't find font '%s'\n", fname); - mw->menu.xft_font = getDefaultXftFont (mw); - } - } + mw->menu.xft_font = XftFontOpenName (XtDisplay (mw), screen, fname); + if (!mw->menu.xft_font) + mw->menu.xft_font = getDefaultXftFont (mw); } if (fname != mw->menu.fontName) xfree (fname); @@ -1889,15 +1882,6 @@ XlwMenuInitialize (Widget request, Widget w, ArgList args, Cardinal *num_args) Window window = RootWindowOfScreen (DefaultScreenOfDisplay (XtDisplay (mw))); Display* display = XtDisplay (mw); -#if 0 - widget_value *tem = (widget_value *) XtMalloc (sizeof (widget_value)); - - /* _XtCreate is freeing the object that was passed to us, - so make a copy that we will actually keep. */ - memcpy (tem, mw->menu.contents, sizeof (widget_value)); - mw->menu.contents = tem; -#endif - /* mw->menu.cursor = XCreateFontCursor (display, mw->menu.cursor_shape); */ mw->menu.cursor = mw->menu.cursor_shape; @@ -2074,19 +2058,15 @@ XlwMenuDestroy (Widget w) XFreePixmap (XtDisplay (mw), mw->menu.gray_pixmap); mw->menu.gray_pixmap = (Pixmap) -1; -#if 0 - /* Do free mw->menu.contents because nowadays we copy it - during initialization. */ - XtFree (mw->menu.contents); -#endif - /* Don't free mw->menu.contents because that comes from our creator. The `*_stack' elements are just pointers into `contents' so leave that alone too. But free the stacks themselves. */ if (mw->menu.old_stack) XtFree ((char *) mw->menu.old_stack); if (mw->menu.new_stack) XtFree ((char *) mw->menu.new_stack); - /* Remember, you can't free anything that came from the resource + /* Original comment was: + + Remember, you can't free anything that came from the resource database. This includes: mw->menu.cursor mw->menu.top_shadow_pixmap @@ -2095,7 +2075,11 @@ XlwMenuDestroy (Widget w) Also the color cells of top_shadow_color, bottom_shadow_color, foreground, and button_foreground will never be freed until this client exits. Nice, eh? - */ + + But now I can free font without any visible glitches. */ + + if (mw->menu.font) + XFreeFont (XtDisplay (mw), mw->menu.font); #ifdef HAVE_XFT if (mw->menu.windows [0].xft_draw) |