[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 1393] アクティブウィンドウの高速切替(Re: atropos0.)



小柳です。

Hidemi KAWAI wrote:
> 
>   こんばんは、川合です。
> 
>   かつて、ieatta0〜ieatta2で僕と小柳さんを悩ませたバグがありまし
> た。それは、F9やF10でアクティブウィンドウを高速に切り替えると、
> 内部のポインタが狂って、アクティブにできないウィンドウができてし
> まう、というものでした。
> 
>   このバグは、VMware上でのみ発生し、さらにieatta3では原因を突き
> 止めることなく強引に回避したため、迷宮入りしていました。
> 
>   本日、ついに、その原因が分かりました。悪かったのは、関数runjob
> next()のようです。・・・どうしてこれが分かったのかというと、この
> バグのせいで2日間ほど悩まされていたからです。
> 
>   原因が分かりバグを修正できたので、何とかatropos0をリリースする
> ことができました。特徴は以下の通りです。

このバグ修正を試してみるのを忘れていました。
atropos1(640x480only) を VMware上で動かして、
countup2 を立ち上げて、F9で高速に切り換えを行いましたが、
ちゃんと順に切り換わります。アクティブにできないウインドウになる
ことはありませんでした。

おもしろいなと思ったのは、
countup2.bin
cntupc1.bin
s_world.bin
を起動して、F9で高速切り換えを行うと
INT 0x03 Break Point
CS:EIP = 00C7:00000A0F
でcntupc1のみが止まって他のアプリが動き続けている状態になったことです。
http://homepage1.nifty.com/dreaming/osask/break.png
アクティブウインドウ切り換えも、pokon07 の操作もできませんが、
s_world, countup2 とも表示は更新し続けていますし、s_world の
音楽も鳴っています。
cntupc1の替わりにcountup1を使っても同じことが起こりました。

-- 
小柳 雅明(Koyanagi.Masaaki !Atmark! nifty.ne.jp)
「人の足を止めるのは"絶望"ではなく"諦観"
  人の足を進めるのは"希望"ではなく"意志"」
                  -- ARMS