You should have received a copy of the GNU Lesser General Public
License along with the m17n library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
02111-1307, USA. */
/***en
{
/** Name of the dynamic library (e.g. "libm17n-X.so"). */
char *library;
- /** Handle fo the dynamic library. */
+ /** Handle of the dynamic library. */
void *handle;
/** Function to call just after loading the library. */
int (*init) ();
(*frame->driver->close) (frame);
M17N_OBJECT_UNREF (frame->face);
- free (frame->font);
M17N_OBJECT_UNREF (frame->font_driver_list);
free (object);
}
mface__free_realized ((MRealizedFace *) MPLIST_VAL (plist));
M17N_OBJECT_UNREF (null_device.realized_face_list);
- MPLIST_DO (plist, null_device.realized_font_list)
- mfont__free_realized ((MRealizedFont *) MPLIST_VAL (plist));
+ if (MPLIST_VAL (null_device.realized_font_list))
+ mfont__free_realized (MPLIST_VAL (null_device.realized_font_list));
M17N_OBJECT_UNREF (null_device.realized_font_list);
return 0;
}
frame->device = NULL;
frame->device_type = 0;
+ frame->dpi = (int) mplist_get (param, Mresolution);
+ if (frame->dpi == 0)
+ frame->dpi = 100;
frame->driver = &null_driver;
frame->font_driver_list = mplist ();
mplist_add (frame->font_driver_list, Mfreetype, &mfont__ft_driver);
{
int mdebug_mask = MDEBUG_INIT;
+ merror_code = MERROR_NONE;
if (m17n__gui_initialized++)
return;
- merror_code = MERROR_NONE;
m17n_init ();
if (merror_code != MERROR_NONE)
{
Mdrawable = msymbol ("drawable");
Mdepth = msymbol ("depth");
Mwidget = msymbol ("widget");
+ Mcolormap = msymbol ("colormap");
MDEBUG_PUSH_TIME ();
if (mfont__init () < 0)
dlclose (interface->handle);
}
free (interface->library);
+ free (interface);
}
#ifdef HAVE_FREETYPE
if (null_interface.handle)
- (*null_interface.fini) ();
+ {
+ (*null_interface.fini) ();
+ null_interface.handle = NULL;
+ }
#endif /* not HAVE_FREETYPE */
M17N_OBJECT_UNREF (device_library_list);
- MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize input-gui module."));
minput__win_fini ();
- MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize draw module."));
+ MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize input-gui module."));
mdraw__fini ();
- MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize face module."));
+ MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize draw module."));
mface__fini ();
- MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize fontset module."));
+ MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize face module."));
mfont__fontset_fini ();
- MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize font module."));
+ MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize fontset module."));
mfont__fini ();
+ MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize font module."));
mframe_default = NULL;
MDEBUG_POP_TIME ();
MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize the gui modules."));
if (! interface->handle)
{
if (! (interface->handle = dlopen (interface->library, RTLD_NOW))
- || ! (interface->init = dlsym (interface->handle, "device_init"))
- || ! (interface->open = dlsym (interface->handle, "device_open"))
- || ! (interface->fini = dlsym (interface->handle, "device_fini"))
+ || ! (interface->init
+ = (int (*) ()) dlsym (interface->handle, "device_init"))
+ || ! (interface->open
+ = (int (*) (MFrame *, MPlist *)) dlsym (interface->handle,
+ "device_open"))
+ || ! (interface->fini
+ = (int (*) ()) dlsym (interface->handle, "device_fini"))
|| (*interface->init) () < 0)
{
fprintf (stderr, "%s\n", (char *) dlerror ());
if (MPLIST_KEY (pl) == Mface)
mface_merge (frame->face, (MFace *) MPLIST_VAL (pl));
mface__update_frame_face (frame);
-
+ frame->font
+ = frame->rface->rfont ? (MFont *) frame->rface->rfont : NULL;
if (plist_created)
M17N_OBJECT_UNREF (plist);
return frame;
if (key == Mface)
return frame->face;
if (key == Mfont)
- return &frame->rface->rfont->font;
+ return frame->font;
if (key == Mfont_width)
- return (void *) (frame->space_width);
+ return (void *) (frame->average_width);
if (key == Mfont_ascent)
return (void *) (frame->ascent);
if (key == Mfont_descent)