Takashi Hiromatsu
matsu****@ca2*****
2008年 3月 25日 (火) 11:50:08 JST
中村様 ご指摘有難う御座います。次のリリースで対応させていただきます。 廣松 At Fri, 21 Mar 2008 00:03:39 +0900, Satoshi Nakamura wrote: > > 中村と申します。 > > IME patch + 半透明 patch を当てたNTEmacsバイナリを使わせていただいています。 > このバイナリに当たっているパッチだと、半透明にする設定をしない場合でも半透 > 明にするためのコードが走ってしまうため、描画のパフォーマンスに悪影響があり > ます。 > > 具体的には、半透明にしない場合でも、WS_EX_LAYEREDスタイルが適用されてしま > います。このスタイルが適用されると、ウィンドウの背景を描画する前に、その下 > にあるウィンドウの再描画順番に行われるため、特にウィンドウのサイズが大きい > と描画のパフォーマンスが悪くなります。 > > 以下のパッチを当てると半透明にしない場合にはこのスタイルを適用しなくなりま > す。よろしければ取り込んでいただけないでしょうか。 > > diff -ur emacs-22.1.92.orig/src/w32term.c emacs-22.1.92/src/w32term.c > --- emacs-22.1.92.orig/src/w32term.c 2008-03-10 08:54:04.000000000 +0900 > +++ emacs-22.1.92/src/w32term.c 2008-03-20 19:24:02.261519600 +0900 > @@ -1209,12 +1209,19 @@ > if (alpha < 0.0) alpha = 1.0; > > if (set_layered_window_attributes_fn != NULL) { > - SetWindowLong (window, GWL_EXSTYLE, > - GetWindowLong (window, GWL_EXSTYLE)|WS_EX_LAYERED); > - set_layered_window_attributes_fn (FRAME_W32_WINDOW (f), > - RGB(255, 255, 255), > - (int)(alpha * 255.0), > - LWA_ALPHA); > + int a = (int)(alpha * 255.0); > + if (a != 255) { > + SetWindowLong (window, GWL_EXSTYLE, > + GetWindowLong (window, GWL_EXSTYLE)|WS_EX_LAYERED); > + set_layered_window_attributes_fn (FRAME_W32_WINDOW (f), > + RGB(255, 255, 255), > + a, > + LWA_ALPHA); > + } > + else { > + SetWindowLong (window, GWL_EXSTYLE, > + GetWindowLong (window, GWL_EXSTYLE) & ~WS_EX_LAYERED); > + } > } > } > > > -- > Satoshi Nakamura <snak****@snak*****> > > _______________________________________________ > NTEmacsjp-users mailing list > NTEma****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/ntemacsjp-users >