# HG changeset patch # User Andrew Choi # Date 1050340337 0 # Node ID 12b66952af3a06e090802acbdd0e5e4546daca2c # Parent 0a31ec45f727104b7f73bc254eea74628892f036 * macterm.c (mac_check_for_quit_char): Don't check more often than once a second. diff -r 0a31ec45f727 -r 12b66952af3a src/ChangeLog --- a/src/ChangeLog Mon Apr 14 16:31:52 2003 +0000 +++ b/src/ChangeLog Mon Apr 14 17:12:17 2003 +0000 @@ -1,3 +1,8 @@ +2003-04-14 Andrew Choi + + * macterm.c (mac_check_for_quit_char): Don't check more often than + once a second. + 2003-04-11 Stefan Monnier * keyboard.c (kbd_buffer_get_event): Don't handle SELECT_WINDOW_EVENT diff -r 0a31ec45f727 -r 12b66952af3a src/macterm.c --- a/src/macterm.c Mon Apr 14 16:31:52 2003 +0000 +++ b/src/macterm.c Mon Apr 14 17:12:17 2003 +0000 @@ -132,6 +132,10 @@ int x_autoselect_window_p; +/* Non-zero means make use of UNDERLINE_POSITION font properties. */ + +int x_use_underline_position_properties; + /* Non-zero means draw block and hollow cursor as wide as the glyph under it. For example, if a block cursor is over a tab, it will be drawn as wide as that tab on the display. */ @@ -8571,34 +8575,47 @@ } void -mac_check_for_quit_char() +mac_check_for_quit_char () { EventRef event; - /* If windows are not initialized, return immediately (keep it bouncin')*/ + static EMACS_TIME last_check_time = { 0, 0 }; + static EMACS_TIME one_second = { 1, 0 }; + EMACS_TIME now, t; + + /* If windows are not initialized, return immediately (keep it bouncin'). */ if (!mac_quit_char_modifiers) return; + /* Don't check if last check is less than a second ago. */ + EMACS_GET_TIME (now); + EMACS_SUB_TIME (t, now, last_check_time); + if (EMACS_TIME_LT (t, one_second)) + return; + last_check_time = now; + /* Redetermine modifiers because they are based on lisp variables */ - mac_determine_quit_char_modifiers(); + mac_determine_quit_char_modifiers (); /* Fill the queue with events */ ReceiveNextEvent (0, NULL, kEventDurationNoWait, false, &event); - event = FindSpecificEventInQueue (GetMainEventQueue(), quit_char_comp, NULL); + event = FindSpecificEventInQueue (GetMainEventQueue (), quit_char_comp, + NULL); if (event) { struct input_event e; - struct mac_output *mwp = (mac_output*) GetWRefCon (FrontNonFloatingWindow ()); + struct mac_output *mwp = + (mac_output *) GetWRefCon (FrontNonFloatingWindow ()); /* Use an input_event to emulate what the interrupt handler does. */ e.kind = ASCII_KEYSTROKE_EVENT; e.code = quit_char; e.arg = NULL; e.modifiers = NULL; - e.timestamp = EventTimeToTicks(GetEventTime(event))*(1000/60); - XSETFRAME(e.frame_or_window, mwp->mFP); + e.timestamp = EventTimeToTicks (GetEventTime (event)) * (1000/60); + XSETFRAME (e.frame_or_window, mwp->mFP); /* Remove event from queue to prevent looping. */ - RemoveEventFromQueue(GetMainEventQueue(), event); - ReleaseEvent(event); - kbd_buffer_store_event(&e); + RemoveEventFromQueue (GetMainEventQueue (), event); + ReleaseEvent (event); + kbd_buffer_store_event (&e); } } @@ -8767,6 +8784,14 @@ doc: /* If not nil, Emacs uses toolkit scroll bars. */); Vx_toolkit_scroll_bars = Qt; + DEFVAR_BOOL ("x-use-underline-position-properties", + &x_use_underline_position_properties, + doc: /* *Non-nil means make use of UNDERLINE_POSITION font properties. +nil means ignore them. If you encounter fonts with bogus +UNDERLINE_POSITION font properties, for example 7x13 on XFree prior +to 4.1, set this to nil. */); + x_use_underline_position_properties = 0; + staticpro (&last_mouse_motion_frame); last_mouse_motion_frame = Qnil;