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

[OSASK 2472] Re: 改造OSASK修正版.



  こんにちは、川合です。


I.Tak. さんは 2001/11/19 21:31:48 の「[OSASK 2469] Re: 改造OSASK
 修正版.」で書きました:

> スクロールを止めて確認しました。
> おおっ、反対側にはみ出してます。多分4ドットくらいまでです。

  そんな、まさか!・・・と思って僕もやってみたら、ええ、確かにご
指摘の通りでした。深く反省しております。

>右下へカーソルを持っていったらブレークポイントが来て止まりました。
>カーソルをめいっぱい右下に持っていかないと、例外が出るかは分かり
>ませんので。

  そう、それは僕も分かっていました。でも前に試した時は右下でも例
外が出なかったような・・・と思ったら、1024x480の時でした。これは
出ませんね(笑)。

>今のままでは、横幅は1020まででしょう。

  その通りです。・・・しくしく。

  ・・・が、ここで引いては名がすたるので(笑)、クリッピングルー
チンのバグフィクスをしました。[OSASK 2466]に示した部分を以下のよ
うに修正してください。

    } else /* (false) */ if (x >= 1024 - 16) {
        work->mx1 = 1024;
        maskflag |= 0x10;
        if (x >= 1024 - 12) {
            maskflag |= 0x18;
            if (x >= 1024 - 8) {
                maskflag |= 0x1c;
                if (x >= 1024 - 4) {
                    maskflag |= 0x1e;
                }
            }
        }
    }

ようするに、比較の際に「>=」とすべきところが「>」になっていたの
が問題だったのです。・・・とすると、AT版の800x600も間違っている
かも・・・。

  とにかく上記の修正をすれば、1024でもOKです。ぶい!

  もちろん、monzasp0ではこのバグフィクスをしておきます。

<追伸>

  AT版も間違っていました。条件をそろえると800x600で反対側にはみ
出しているのが確認できます。条件というのはとても微妙なのですが、
マウスカーソルの右端を画面の右端に接触させて、1ドットだけ右へ動
いてください。そうすると、反対側に黒い点が2つでていて、マウスカ
ーソルの一部が出ていることが分かります。それより右へ移動すると、
バグ入りクリッピングルーチンは正しく機能して「はみ出し」は起こり
ません。

  もちろんこれもgendiba0で修正します。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/