diff src/console-stream.c @ 1279:cd0abfdb9e9d

[xemacs-hg @ 2003-02-09 09:33:42 by ben] walk-windows, redisplay fixes console-stream.c: Abort when any attempts to output a stream console are made. Should be caught sooner. event-msw.c: Don't redisplay() during sizing when the frame has not yet been initialized completely. event-stream.c, menubar-msw.c, menubar-x.c, menubar.c, menubar.h: Restore in_menu_callback. Bind it in menubar-{msw,x}.c when calling filter functions and the like. Conditionalize on it, not in_modal_loop, when issuing error in `next-event', otherwise we bite the dust immediately -- event-msw.c purposely calls Fnext_event() in a modal loop, and knows what it's doing. redisplay-output.c: Formatting fixes. redisplay.c, window.c, winslots.h: Delete lots of carcasses of attempts to add redisplay support for font-lock -- `pre/post-redisplay-hook', unimplemented junk from FSF (redisplay-end-trigger, `window-scroll-functions', `window-size-change-functions'). If we want to port some redisplay support from FSF, port the `fontified' property. redisplay.c: Put in a check here (as well as redisplay_device()) for a stream frame. We can get here directly through Lisp fun `redisplay-frame'. Abort if frame not initialized. redisplay.c: Check for stream frames/devices. window.el: walk-windows was broken when a frame was given to WHICH-FRAMES. it would loop forever. The FSF version fixes this but i didn't sync to them because (a) it conses (bad for lazy-lock), (b) it calls select-window.
author ben
date Sun, 09 Feb 2003 09:33:48 +0000
parents e22b0213b713
children a8d8f419b459
line wrap: on
line diff
--- a/src/console-stream.c	Sun Feb 09 07:03:07 2003 +0000
+++ b/src/console-stream.c	Sun Feb 09 09:33:48 2003 +0000
@@ -1,6 +1,6 @@
 /* Stream device functions.
    Copyright (C) 1995 Free Software Foundation, Inc.
-   Copyright (C) 1996, 2001, 2002 Ben Wing.
+   Copyright (C) 1996, 2001, 2002, 2003 Ben Wing.
 
 This file is part of XEmacs.
 
@@ -216,12 +216,44 @@
   return 1;
 }
 
+/* We used to try and check for redisplaying on stream devices (e.g. in
+   redisplay_device(), and beg out if so.  However, we didn't always manage
+   completely.  Now we do manage completely, and to verify this we abort if
+   we try to display a stream device.  This might fix some crashes I've
+   been getting in pdump -- the only difference between crash and non-crash
+   is a few changes to the redisplay critical-section handling. */
+
+static void
+stream_window_output_begin (struct window *w)
+{
+  abort ();
+}
+
+static void
+stream_window_output_end (struct window *w)
+{
+  abort ();
+}
+
+static void
+stream_frame_output_begin (struct frame *f)
+{
+  abort ();
+}
+
+static void
+stream_frame_output_end (struct frame *f)
+{
+  abort ();
+}
+
 static void
 stream_output_display_block (struct window *w, struct display_line *dl,
 			     int block, int start, int end,
 			     int start_pixpos, int cursor_start,
 			     int cursor_width, int cursor_height)
 {
+  abort ();
 }
 
 static void
@@ -230,6 +262,7 @@
 		     int width, int height, Lisp_Object fcolor,
 		     Lisp_Object bcolor, Lisp_Object background_pixmap)
 {
+  abort ();
 }
 
 static int
@@ -278,12 +311,16 @@
   CONSOLE_HAS_METHOD (stream, init_frame_1);
 
   /* redisplay methods */
+  CONSOLE_HAS_METHOD (stream, text_width);
   CONSOLE_HAS_METHOD (stream, left_margin_width);
   CONSOLE_HAS_METHOD (stream, right_margin_width);
-  CONSOLE_HAS_METHOD (stream, text_width);
-  CONSOLE_HAS_METHOD (stream, output_display_block);
   CONSOLE_HAS_METHOD (stream, divider_height);
   CONSOLE_HAS_METHOD (stream, eol_cursor_width);
+  CONSOLE_HAS_METHOD (stream, window_output_begin);
+  CONSOLE_HAS_METHOD (stream, window_output_end);
+  CONSOLE_HAS_METHOD (stream, frame_output_begin);
+  CONSOLE_HAS_METHOD (stream, frame_output_end);
+  CONSOLE_HAS_METHOD (stream, output_display_block);
   CONSOLE_HAS_METHOD (stream, clear_region);
   CONSOLE_HAS_METHOD (stream, flash);
   CONSOLE_HAS_METHOD (stream, ring_bell);