こんにちは、I.Tak.です。 From: Hidemi KAWAI <kawai !Atmark! imasy.org> Subject: [OSASK 6642] Re: ウィンドウ移動アルゴリズムについて Date: Mon, 03 Nov 2003 22:27:22 +0900 > > ……つまり、川合さんのコードでは目的は達せられなかったん > >です(;_; 状況は変化しませんでした。 > > がーん、しくしく・・・。なぜだあ! winman0の解読が進んだ結果, job_general1をもう一行直したら うまく動きました。やった! > >3)そこに入ってるWINFLG_OVERRIDEDISABLEの意味はなんですか? > > 一時的かつ最優先の描画禁止 (ウィンドウを下から再描画する > > 際の順序を保証するため) という認識でOKですか? > >これだけ教えて頂ければなんとかなります。多分。 > > ええと括弧内の部分を除いて、「一時的な描画禁止」と認識してくだ > さい。つまり、conditionではaccessenableな値を示しているのに、あ > えて一時的にdisableにしなければいけない状況というのはあるのです > 。たとえば、ウィンドウ移動中とか。そんな風に、一時的に描画禁止に > しておきましたので、必要に応じて解除してください、というのをjob_ > generalに伝えるためのbitです。 解読した感じでは「そのときの描画許可状態」という感じでした。 win->conditionはjob開始前の状態で, win->job_flag0 & 3 はjob終了時 の予定という使い方のようです。 > ウィンドウを下から描画するために、上のウィンドウをoverride-dis > ableにしている部分がありましたか?・・・いや、原理的に多分そんな > ことをする必要はないと思うので、もしそういう部分があったとしたら > 僕の勘違いの残骸です(下のウィンドウを描いている間に、オーバラッ > プした部分を勝手にいじられても問題はないかと。だってそこはどうせ > 書き直される部分なのですし)。 再描画予定のウィンドウ同士が重なっていたら、どちらも一時的に 描画禁止にするという仕組みでした。そしてgeneral2の中で下から順に 再描画シグナルを送っています。だから順序整理のためかと思ったの ですが……なるほど、省略しておきましょう。 というわけで記念にスナップショットです。コードネームはjenny1.1at。 http://user.ecc.u-tokyo.ac.jp/~g240845/osask/lzh/jenny11a.lzh VGAに加えて, vesa8のputboxとboxfill.psetも高速化しています。 256*256のウィンドウにグラフィックボックスを張り付け、毎秒一回 loadfac1とF10で切り替えるという計測では Jenny1a jenny1.1a 0.40% 0.39% (8bpp aligned) 0.99% 0.40% (8bpp not aligned) 1.18% 0.81% (16bpp tiling) 1.01% 0.72% (16bpp fast) 1.15% 0.77% (32bpp tiling) 1.02% 0.71% (32bpp fast) という高速化を達成しました。うちのマシンでは。ちなみにputboxと boxfillの寄与は半々くらいです。 なおVGAの8bppルーチンは実験中の遅いルーチンが入っています(^^; 川合さんのルーチンはごちゃごちゃしてるのにけっこう高速。むむ。 タイトルバー色の変更はまだ差分描画に対応していないので、そこも 直さないといけません。あとpokon0も自前でウィンドウ制御しているので 差分描画に対応させます。 I.Tak. <g240845 !Atmark! mail.ecc.u-tokyo.ac.jp> http://user.ecc.u-tokyo.ac.jp/~g240845/