annotate lisp/gtk-glyphs.el @ 5124:623d57b7fbe8 ben-lisp-object

separate regular and disksave finalization, print method fixes. Create separate disksave method and make the finalize method only be for actual object finalization, not disksave finalization. Fix places where 0 was given in place of a printer -- print methods are mandatory, and internal objects formerly without a print method now must explicitly specify internal_object_printer(). Change the defn of CONSOLE_LIVE_P to avoid problems in some weird situations. -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-01-20 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (very_old_free_lcrecord): * alloc.c (disksave_object_finalization_1): * alloc.c (make_lcrecord_list): * alloc.c (alloc_managed_lcrecord): * alloc.c (free_managed_lcrecord): * alloc.c (sweep_lcrecords_1): * buffer.c: * bytecode.c: * bytecode.c (Fcompiled_function_p): * chartab.c: * console-impl.h: * console-impl.h (CONSOLE_TYPE_P): * console.c: * console.c (set_quit_events): * data.c: * data.c (Fmake_ephemeron): * database.c: * database.c (finalize_database): * database.c (Fclose_database): * device-msw.c: * device-msw.c (finalize_devmode): * device-msw.c (allocate_devmode): * device.c: * elhash.c: * elhash.c (finalize_hash_table): * eval.c: * eval.c (bind_multiple_value_limits): * event-stream.c: * event-stream.c (finalize_command_builder): * events.c: * events.c (mark_event): * extents.c: * extents.c (finalize_extent_info): * extents.c (uninit_buffer_extents): * faces.c: * file-coding.c: * file-coding.c (finalize_coding_system): * file-coding.h: * file-coding.h (struct coding_system_methods): * file-coding.h (struct detector): * floatfns.c: * floatfns.c (extract_float): * fns.c: * fns.c (Fidentity): * font-mgr.c (finalize_fc_pattern): * font-mgr.c (finalize_fc_config): * frame.c: * glyphs.c: * glyphs.c (finalize_image_instance): * glyphs.c (unmap_subwindow_instance_cache_mapper): * gui.c: * gui.c (gui_error): * keymap.c: * lisp.h (struct Lisp_Symbol): * lrecord.h: * lrecord.h (struct lrecord_implementation): * lrecord.h (MC_ALLOC_CALL_FINALIZER): * lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE): * lrecord.h (DEFINE_DUMPABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (MAKE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (MAKE_MODULE_LISP_OBJECT): * lstream.c: * lstream.c (finalize_lstream): * lstream.c (disksave_lstream): * marker.c: * marker.c (finalize_marker): * mule-charset.c (make_charset): * number.c: * objects.c: * objects.c (finalize_color_instance): * objects.c (finalize_font_instance): * opaque.c: * opaque.c (make_opaque_ptr): * process-nt.c: * process-nt.c (nt_finalize_process_data): * process-nt.c (nt_deactivate_process): * process.c: * process.c (finalize_process): * procimpl.h (struct process_methods): * scrollbar.c: * scrollbar.c (free_scrollbar_instance): * specifier.c (finalize_specifier): * symbols.c: * toolbar.c: * toolbar.c (Ftoolbar_button_p): * tooltalk.c: * ui-gtk.c: * ui-gtk.c (emacs_gtk_object_finalizer): * ui-gtk.c (allocate_emacs_gtk_boxed_data): * window.c: * window.c (finalize_window): * window.c (mark_window_as_deleted): Separate out regular and disksave finalization. Instead of a FOR_DISKSAVE argument to the finalizer, create a separate object method `disksaver'. Make `finalizer' have only one argument. Go through and separate out all finalize methods into finalize and disksave. Delete lots of thereby redundant disksave checking. Delete places that signal an error if we attempt to disksave -- all of these objects are non-dumpable and we will get an error from pdump anyway if we attempt to dump them. After this is done, only one object remains that has a disksave method -- lstream. Change DEFINE_*_LISP_OBJECT_WITH_PROPS to DEFINE_*_GENERAL_LISP_OBJECT, which is used for specifying either property methods or disksave methods (or in the future, any other less-used methods). Remove the for_disksave argument to finalize_process_data. Don't provide a disksaver for processes because no one currently needs it. Clean up various places where objects didn't provide a print method. It was made mandatory in previous changes, and all methods now either provide their own print method or use internal_object_printer or external_object_printer. Change the definition of CONSOLE_LIVE_P to use the contype enum rather than looking into the conmeths structure -- in some weird situations with dead objects, the conmeths structure is NULL, and printing such objects from debug_print() will crash if we try to look into the conmeths structure.
author Ben Wing <ben@xemacs.org>
date Wed, 20 Jan 2010 07:05:57 -0600
parents 0784d089fdc9
children 308d34e9f07d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1 ;;; gtk-glyphs.el --- Support for glyphs in Gtk
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
2
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
3 ;; Copyright (C) 1994, 1997 Free Software Foundation, Inc.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
4
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
5 ;; Author: Kirill M. Katsnelson <kkm@kis.ru>
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
6 ;; Maintainer: XEmacs Development Team
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
7 ;; Keywords: extensions, internal, dumped
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
8
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
9 ;; This file is part of XEmacs.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
10
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
11 ;; XEmacs is free software; you can redistribute it and/or modify it
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
12 ;; under the terms of the GNU General Public License as published by
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
14 ;; any later version.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
15
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
16 ;; XEmacs is distributed in the hope that it will be useful, but
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
17 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
19 ;; General Public License for more details.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
20
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
22 ;; along with XEmacs; see the file COPYING. If not, write to the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
23 ;; Free Software Foundation, 59 Temple Place - Suite 330,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
24 ;; Boston, MA 02111-1307, USA.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
25
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
26 ;;; Synched up with: Not in FSF.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
27
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
28 ;;; Commentary:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
29
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
30 ;; This file contains temporary definitions for 'gtk glyphs.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
31 ;; Since there currently is no image support, the glyps are defined
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
32 ;; TTY-style. This file has to be removed or reworked completely
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
33 ;; when we have images.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
34
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
35 ;; This file is dumped with XEmacs.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
36
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
37 ;;; Code:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
38
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
39 (progn
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
40 (if (featurep 'gtk)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
41 (set-console-type-image-conversion-list
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
42 'gtk
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
43 `(,@(if (featurep 'xpm) '(("\\.xpm\\'" [xpm :file nil] 2)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
44 ("\\.xbm\\'" [xbm :file nil] 2)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
45 ,@(if (featurep 'xpm) '(("\\`/\\* XPM \\*/" [xpm :data nil] 2)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
46 ,@(if (featurep 'xface) '(("\\`X-Face:" [xface :data nil] 2)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
47 ,@(if (featurep 'gif) '(("\\.gif\\'" [gif :file nil] 2)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
48 ("\\`GIF8[79]" [gif :data nil] 2)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
49 ,@(if (featurep 'jpeg) '(("\\.jpe?g\\'" [jpeg :file nil] 2)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
50 ;; all of the JFIF-format JPEG's that I've seen begin with
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
51 ;; the following. I have no idea if this is standard.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
52 ,@(if (featurep 'jpeg) '(("\\`\377\330\377\340\000\020JFIF"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
53 [jpeg :data nil] 2)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
54 ,@(if (featurep 'png) '(("\\.png\\'" [png :file nil] 2)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
55 ,@(if (featurep 'png) '(("\\`\211PNG" [png :data nil] 2)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
56 ("" [autodetect :data nil] 2))))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
57 (cond ((featurep 'xpm)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
58 (set-glyph-image frame-icon-glyph
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
59 (concat "../etc/" "xemacs-icon3.xpm")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
60 'global 'gtk)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
61 (set-glyph-image xemacs-logo
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
62 (concat "../etc/"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
63 (if emacs-beta-version
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
64 "xemacs-beta.xpm"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
65 "xemacs.xpm"))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
66 'global 'gtk))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
67 (t
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
68 (set-glyph-image xemacs-logo
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
69 "XEmacs <insert spiffy graphic logo here>"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
70 'global 'gtk)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
71 (set-glyph-image octal-escape-glyph "\\")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
72 (set-glyph-image control-arrow-glyph "^")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
73 (set-glyph-image invisible-text-glyph " ...")
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
74 )
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
75
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
76 ;;; gtk-glyphs.el ends here