[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: [MD:7203] emacs-22_0_50-20060215 マージしました
- X-ml-count: 7214
- Subject: Re: [MD:7203] emacs-22_0_50-20060215 マージしました
- From: "M.Fujii" <boochang@xxxxxxxxxxxx>
- Date: Sun, 19 Feb 2006 14:11:20 +0900 (JST)
- X-mailer: Mew version 4.1 on Emacs 22.0.50 / Mule 5.0 (SAKAKI)
藤井です。
From: MIYOSHI Masanori <miyoshi@xxxxxxxxxxx>
Subject: Re: [MD:7203] emacs-22_0_50-20060215 マージしました
Date: Sun, 19 Feb 2006 09:56:30 +0900
> > > 再現方法は以下のとおり。
> > >
> > > 1. meadow -q で起動
> > > 2. C-h i で info を表示
> > >
> > > ここでキー操作を一切受付けない
>
> > sync 前の r4030 でも発生することを確認しました。ただし 2. の操作を以下
> > のように変えています。
>
> > 2'. C-u M-x info <Meadowのディレクトリ>/info/dir で info を表示
>
> > とりあえず今回の Sync up が原因ではなさそうです。
>
> どうやらr4016での mw32_cross_disabled_image() に対する変更が原因の
> ようです。
>
> > 2006-01-26 Masayuki FUJII <boochang@xxxxxxxxxxxx>
> > * image.c (mw32_image_to_fullcolor): use GET/RELEASE_FRAME_HDC
> > instead of FRAME_HDC.
> > (mw32_cross_disabled_image): Ditto.
FRAME_HDC がだめなら GET_FRAME_HDC を使うという方針は間違っていた訳です
ね。GET_FRAME_HDC の方は排他処理が含まれるので、恐らくタイミングによっ
ては問題を引き起こすということでしょう。
> 以下の変更をキャンセルすると問題は解決します。
> 対応策を考えてもらえませんか? > 藤井さん
本質的な対処については HDC 取得の仕組の見直しが必要だと思います。
# 堀口さん、宜しくお願いします。
暫定処置として、以下のように直接 HDC を取得する対処すれば良いのではない
かと思います。
直接取得しても以下の点から(暫定処置と割り切れば)問題はないと考えます。
- HDC は描画のために利用しているのではないので、排他の必要はない
- HDC の不足についても、他がちゃんと管理されているはずなので 1 個を
一時的に使用するには問題にならない
Index: src/image.c
===================================================================
--- src/image.c (revision 4037)
+++ src/image.c (working copy)
@@ -5065,11 +5065,13 @@
if (pbmpinfo->bmiHeader.biBitCount == 32)
return 1;
- hdc = GET_FRAME_HDC (f);
+ /* workaround: both of GET_FRAME_HDC and FRAME_HDC is not available. */
+ hdc = GetDC (FRAME_MW32_WINDOW (f));
hCompatDC = CreateCompatibleDC (hdc);
- RELEASE_FRAME_HDC (f);
+ /* workaround: both of GET_FRAME_HDC and FRAME_HDC is not available. */
+ ReleaseDC (FRAME_MW32_WINDOW (f), hdc);
hbmp = CreateDIBSection (hCompatDC, pbmpinfo, DIB_RGB_COLORS,
(void **)&pdata, NULL, 0);
@@ -5122,7 +5124,8 @@
struct frame *f;
struct image *img;
{
- HDC hdc = GET_FRAME_HDC (f);
+ /* workaround: both of GET_FRAME_HDC and FRAME_HDC is not available. */
+ HDC hdc = GetDC (FRAME_MW32_WINDOW (f));
HDC hCompatDC;
HBITMAP hbmp, hbmpmask;
mw32_image* pmimg = &(img->mw32_img);
@@ -5134,7 +5137,8 @@
hCompatDC = CreateCompatibleDC (hdc);
- RELEASE_FRAME_HDC (f);
+ /* workaround: both of GET_FRAME_HDC and FRAME_HDC is not available. */
+ ReleaseDC (FRAME_MW32_WINDOW (f), hdc);
hbmp = CreateDIBSection (hCompatDC, pbmpinfo, DIB_RGB_COLORS,
(void **)&pdata, NULL, 0);
--
藤井 正行 / Masayuki FUJII