[NTEmacsjp-users 84] Re: 半透明パッチで半透明にしないときの処理

Back to archive index

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
> 




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