[Macemacsjp-users 719] inline additional patch for inline_patch-20041229

Back to archive index

irodo****@irodo***** irodo****@irodo*****
2005年 11月 11日 (金) 00:02:29 JST


本庄です。

現行の Carbon Emacs Package において、オートセーブ時にインライン入力を
行っていると CPU 使用率が MAX になり、かつ入力が表示されない問題を対処
するパッチを作成してみました。まだ十分なテストを行っていませんが、半日
程使った限りでは問題なく動作しているように見えます。

このパッチは Carbon Emacs Package 20051010 版を元に作成し、Carbon
Emacs Package 20051101 版でも確認しています。サブジェクトにあるとおり、
inline_patch-20041229 に追加するパッチですので、それ以外のバージョンで
の動作は保証できません。

パッチは、inline-patch-20041229 を適用した後に適用してください。

  $ cd emacs
  $ patch -p1 < path/to/inine-patch-20041229/emacs-inline.patch
  $ patch -p0 < path/to/inline-patch-addition.patch

--
Eiji Honjoh
irodori RINGO - little tools for Mac OS X
http://irodori.sakura.ne.jp/

-------------- next part --------------
*** src/keyboard.c.~1.839.~	Tue Oct  4 13:23:12 2005
--- src/keyboard.c	Thu Nov 10 23:12:23 2005
***************
*** 114,119 ****
--- 114,124 ----
  
  #define abs(x)		((x) >= 0 ? (x) : -(x))
  
+ /* Following variables defined in macim.c */
+ #ifdef MAC_OSX
+ extern int mac_im_update_text;
+ #endif
+ 
  /* Following definition copied from eval.c */
  
  struct backtrace
***************
*** 3893,3903 ****
--- 3898,3919 ----
        return obj;
      }
  
+ #ifdef MAC_OSX
+   /* Turn off this flag for detect inlne input event */
+   mac_im_update_text = FALSE;
+ #endif
+ 
    /* Wait until there is input available.  */
    for (;;)
      {
        if (kbd_fetch_ptr != kbd_store_ptr)
  	break;
+ 
+ #ifdef MAC_OSX
+       if (TRUE == mac_im_update_text)
+ 	break;
+ #endif
+ 
  #ifdef HAVE_MOUSE
        if (!NILP (do_mouse_tracking) && some_mouse_moved ())
  	break;

*** src/macim.c.orig	Wed Nov  2 22:18:07 2005
--- src/macim.c	Thu Nov 10 23:24:05 2005
***************
*** 111,116 ****
--- 111,119 ----
  
  #ifdef MAC_OSX
  
+ /* Variables for detect text input on keyboad.c */
+ int mac_im_update_text = FALSE;
+ 
  static EventTypeSpec events[] = {
    { kEventClassTextInput, kEventTextInputOffsetToPos },
    { kEventClassTextInput, kEventTextInputUpdateActiveInputArea },
***************
*** 324,329 ****
--- 327,333 ----
  	  argv[argc++] = make_string("", 0);
  	  argv[argc++] = make_number(0);
  	}
+ 	mac_im_update_text = TRUE;
        }
        break;
      case kEventTextInputGetSelectedText:


Macemacsjp-users メーリングリストの案内
Back to archive index