launchdでdistnotedを定期的に終了させる 話のコメントで Emacs.appでインラインパッチを当てた時にdistnotedが暴走しなくなる 修正を教えてもらったので、 試してみました。
2014-01-29追記: コメントにあるようにまだ問題があったので、続きとして emacsやdistnotedを安定させるパッチをhomebrewで適用した 話を書きました。
homebrew で適用するパッチの変更
適用法としては brew edit emacs
で以下のように変更して、 brew reinstall emacs
で再インストールしました。
diff --git a/Library/Formula/emacs.rb b/Library/Formula/emacs.rb
index 712c3d1..5ce4ce2 100644
--- a/Library/Formula/emacs.rb
+++ b/Library/Formula/emacs.rb
@@ -47,7 +47,7 @@ class Emacs < Formula
# "--japanese" option:
# to apply a patch from MacEmacsJP for Japanese input methods
if build.include? "cocoa" and build.include? "japanese"
- p[:p0].push("http://sourceforge.jp/projects/macemacsjp/svn/view/inline_patch/trunk/emacs-inline.patch?view=co&revision=583&root=macemacsjp&pathrev=583")
+ p[:p0].push("https://gist.github.com/anonymous/8142555/raw/d67ad1dc814579d125afbd18de3a62ba69895601/emacs-inline.patch")
end
p
end unless build.head?
元のパッチからの変更点
元の sourceforge.jp のパッチとの差分をとってみると、 以下のメソッド呼び出しが変わっているだけでした。
diff --git a/emacs-inline.patch.sfjp b/emacs-inline.patch.gist
index 52f2052..d67ad1d 100644
--- a/emacs-inline.patch.sfjp
+++ b/emacs-inline.patch.gist
@@ -1015,7 +1015,7 @@ diff -r -N -p ../emacs-24.3.org/src/nsterm.m src/nsterm.m
name: nil object: nil]; */
+ [[NSDistributedNotificationCenter defaultCenter] addObserver: NSApp
+ selector: @selector (changeInputMethod:)
-+ name: @"AppleSelectedInputSourcesChangedNotification" object: nil];
++ name: @"AppleSelectedInputSourcesChangedNotification" object: nil suspensionBehavior:NSNotificationSuspensionBehaviorDeliverImmediately];
dpyinfo = xzalloc (sizeof *dpyinfo);
まとめ
使ってみて問題がなければ sourceforge.jp の方に取り込んでもらうのが良さそうです。
しばらく使ってみた感じだと distnoted のメモリ使用量が増えていっても、 一度 Emacs.app を終了すると distnoted のメモリ使用量が一気に減るようになりました。
Disqus Comments