Mercurial > hg > xemacs-beta
annotate src/README.kkcc @ 5077:d372b17f63ce
clean up toolbar/gutter edge geometry
-------------------- ChangeLog entries follow: --------------------
src/ChangeLog addition:
2010-02-25 Ben Wing <ben@xemacs.org>
* EmacsFrame.c (EmacsFrameSetValues):
* frame-impl.h:
* frame-impl.h (struct frame):
* frame-impl.h (FRAME_THEORETICAL_TOP_TOOLBAR_HEIGHT):
* frame-impl.h (FRAME_THEORETICAL_TOP_TOOLBAR_BORDER_WIDTH):
* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_HEIGHT):
* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_BORDER_WIDTH):
* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_VISIBLE):
* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_BOUNDS):
* frame.h:
* frame.h (enum edge_pos):
* gutter.c:
* gutter.c (get_gutter_coords):
* gutter.c (display_boxes_in_gutter_p):
* gutter.c (construct_window_gutter_spec):
* gutter.c (calculate_gutter_size_from_display_lines):
* gutter.c (calculate_gutter_size):
* gutter.c (output_gutter):
* gutter.c (clear_gutter):
* gutter.c (mark_gutters):
* gutter.c (gutter_extent_signal_changed_region_maybe):
* gutter.c (update_gutter_geometry):
* gutter.c (update_frame_gutter_geometry):
* gutter.c (update_frame_gutters):
* gutter.c (reset_gutter_display_lines):
* gutter.c (redraw_exposed_gutter):
* gutter.c (redraw_exposed_gutters):
* gutter.c (free_frame_gutters):
* gutter.c (decode_gutter_position):
* gutter.c (Fset_default_gutter_position):
* gutter.c (Fgutter_pixel_width):
* gutter.c (Fgutter_pixel_height):
* gutter.c (recompute_overlaying_specifier):
* gutter.c (gutter_specs_changed_1):
* gutter.c (gutter_specs_changed):
* gutter.c (top_gutter_specs_changed):
* gutter.c (bottom_gutter_specs_changed):
* gutter.c (left_gutter_specs_changed):
* gutter.c (right_gutter_specs_changed):
* gutter.c (gutter_geometry_changed_in_window):
* gutter.c (init_frame_gutters):
* gutter.c (specifier_vars_of_gutter):
* gutter.h:
* gutter.h (WINDOW_REAL_TOP_GUTTER_BOUNDS):
* gutter.h (FRAME_TOP_GUTTER_BOUNDS):
* lisp.h (enum edge_style):
* native-gtk-toolbar.c:
* native-gtk-toolbar.c (gtk_output_toolbar):
* native-gtk-toolbar.c (gtk_clear_toolbar):
* native-gtk-toolbar.c (gtk_output_frame_toolbars):
* native-gtk-toolbar.c (gtk_initialize_frame_toolbars):
* toolbar-msw.c:
* toolbar-msw.c (TOOLBAR_HANDLE):
* toolbar-msw.c (allocate_toolbar_item_id):
* toolbar-msw.c (mswindows_clear_toolbar):
* toolbar-msw.c (mswindows_output_toolbar):
* toolbar-msw.c (mswindows_move_toolbar):
* toolbar-msw.c (mswindows_redraw_exposed_toolbars):
* toolbar-msw.c (mswindows_initialize_frame_toolbars):
* toolbar-msw.c (mswindows_output_frame_toolbars):
* toolbar-msw.c (mswindows_clear_frame_toolbars):
* toolbar-msw.c (DELETE_TOOLBAR):
* toolbar-msw.c (mswindows_free_frame_toolbars):
* toolbar-msw.c (mswindows_get_toolbar_button_text):
* toolbar-xlike.c:
* toolbar-xlike.c (__prepare_button_area):
* toolbar-xlike.c (XLIKE_OUTPUT_BUTTONS_LOOP):
* toolbar-xlike.c (xlike_output_toolbar):
* toolbar-xlike.c (xlike_clear_toolbar):
* toolbar-xlike.c (xlike_output_frame_toolbars):
* toolbar-xlike.c (xlike_clear_frame_toolbars):
* toolbar-xlike.c (xlike_redraw_exposed_toolbar):
* toolbar-xlike.c (xlike_redraw_exposed_toolbars):
* toolbar-xlike.c (xlike_redraw_frame_toolbars):
* toolbar.c:
* toolbar.c (decode_toolbar_position):
* toolbar.c (Fset_default_toolbar_position):
* toolbar.c (mark_frame_toolbar_buttons_dirty):
* toolbar.c (compute_frame_toolbar_buttons):
* toolbar.c (set_frame_toolbar):
* toolbar.c (compute_frame_toolbars_data):
* toolbar.c (update_frame_toolbars_geometry):
* toolbar.c (init_frame_toolbars):
* toolbar.c (get_toolbar_coords):
* toolbar.c (CHECK_TOOLBAR):
* toolbar.c (toolbar_buttons_at_pixpos):
* toolbar.c (CTB_ERROR):
* toolbar.c (recompute_overlaying_specifier):
* toolbar.c (specifier_vars_of_toolbar):
* toolbar.h:
* toolbar.h (SET_TOOLBAR_WAS_VISIBLE_FLAG):
Create new enum edge_pos with TOP_EDGE, BOTTOM_EDGE, LEFT_EDGE,
RIGHT_EDGE; subsume TOP_BORDER, TOP_GUTTER, enum toolbar_pos,
enum gutter_pos, etc.
Create EDGE_POS_LOOP, subsuming GUTTER_POS_LOOP.
Create NUM_EDGES, use in many places instead of hardcoded '4'.
Instead of top_toolbar_was_visible, bottom_toolbar_was_visible,
etc. make an array toolbar_was_visible[NUM_EDGES]. This increases
the frame size by 15 bytes or so (could be 3 if we use Boolbytes)
but hardly seems w to matter -- frames are heavy weight objects
anyway. Same with top_gutter_was_visible, etc.
Remove duplicated SET_TOOLBAR_WAS_VISIBLE_FLAG and put defn in
one place (toolbar.h).
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Thu, 25 Feb 2010 04:45:13 -0600 |
parents | ac1be85b4a5f |
children | 3889ef128488 |
rev | line source |
---|---|
992 | 1 2002-07-17 Marcus Crestani <crestani@informatik.uni-tuebingen.de> |
2 Markus Kaltenbach <makalten@informatik.uni-tuebingen.de> | |
3 Mike Sperber <mike@xemacs.org> | |
4 | |
1598 | 5 updated 2003-07-29 |
6 | |
992 | 7 New KKCC-GC mark algorithm: |
8 configure flag : --use-kkcc | |
9 | |
10 For better understanding, first a few words about the mark algorithm | |
11 up to now: | |
12 Every Lisp_Object has its own mark method, which calls mark_object | |
13 with the stuff to be marked. | |
1598 | 14 Also, many Lisp_Objects have pdump descriptions memory_descriptions, |
15 which are used by the portable dumper. The dumper gets all the | |
16 information it needs about the Lisp_Object from the descriptions. | |
992 | 17 |
18 Also the garbage collector can use the information in the pdump | |
19 descriptions, so we can get rid of the mark methods. | |
20 That is what we have been doing. | |
21 | |
22 | |
23 DUMPABLE FLAG | |
24 ------------- | |
25 First we added a dumpable flag to lrecord_implementation. It shows, | |
26 if the object is dumpable and should be processed by the dumper. | |
27 The dumpable flag is the third argument of a lrecord_implementation | |
28 definition (DEFINE_LRECORD_IMPLEMENTATION). | |
29 If it is set to 1, the dumper processes the descriptions and dumps | |
30 the Object, if it is set to 0, the dumper does not care about it. | |
31 | |
32 | |
1598 | 33 KKCC MARKING |
34 ------------ | |
35 All Lisp_Objects have memory_descriptions now, so we could get | |
36 rid of the mark_object calls. | |
37 The KKCC algorithm manages its own stack. Instead of calling | |
38 mark_object, all the alive Lisp_Objects are pushed on the | |
39 kkcc_gc_stack. Then these elements on the stack are processed | |
40 according to their descriptions. | |
41 | |
42 | |
992 | 43 TODO |
44 ---- | |
1598 | 45 - For weakness use weak datatypes instead of XD_FLAG_NO_KKCC. |
46 XD_FLAG_NO_KKCC occurs in: | |
47 * elhash.c: htentry | |
48 * extents.c: lispobject_gap_array, extent_list, extent_info | |
49 * marker.c: marker | |
50 Not everything has to be rewritten. See Ben's comment in lrecord.h. | |
51 - Clean up special case marking (weak_hash_tables, weak_lists, | |
52 ephemerons). | |
53 - Stack optimization (have one stack during runtime instead of | |
54 malloc/free it for every garbage collect) | |
992 | 55 |
1204 | 56 There are a few Lisp_Objects, where there occured differences and |
57 inexactness between the mark-method and the pdump description. All | |
58 these Lisp_Objects get dumped (except image instances), so their | |
59 descriptions have been written, before we started our work: | |
992 | 60 * alloc.c: string |
1598 | 61 description: size_, data_, and plist is described |
62 mark: only plist is marked, but flush_cached_extent_info is called. | |
63 flush_cached_extent_info -> | |
64 free_soe -> | |
65 free_extent_list -> | |
66 free_gap_array -> | |
67 gap_array_delete_all_markers -> | |
68 Add gap_array to the gap_array_marker_freelist | |
992 | 69 |
1204 | 70 * glyphs.c: image_instance |
1598 | 71 description: device is not set to nil |
1204 | 72 mark: mark method sets device to nil if dead |
1598 | 73 See comment above the description. |