[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bsd-nomads:16808] Re: VGA/VESA on ThinkPad A21m



こんにちは、柴田です。
Thu, 29 Jan 2004 17:47:43 JSTに
私は書きました。

>ところが、logo_saverを使おうとすると、画面がホワイトアウトして、上1/3ぐ
>らいのところに黒い横線が走り、その後画面全体がじわじわ色が薄くなっていく
>という、明らかな暴走状態になってしまいました。
>#もちろんキー入力も効かず
>たぶんいい線まで来ているのでしょうが、現状はここまでです。

悪いのはlogo_saverのほうでした。

--- sys/modules/syscons/logo/logo_saver.c	2004/02/01 07:17:50	1.1
+++ logo_saver.c	2004/02/01 07:41:32
@@ -95,7 +95,7 @@
 static int
 logo_saver(video_adapter_t *adp, int blank)
 {
-    int i, pl;
+    int pl;
 
     if (blank) {
 	/* switch to graphics mode */
@@ -111,10 +111,7 @@
 	    banksize = adp->va_window_size;
 	    bpsl = adp->va_line_width;
 	    splx(pl);
-	    for (i = 0; i < bpsl*scrh; i += banksize) {
-		set_origin(adp, i);
-		bzero(vid, banksize);
-	    }
+	    (*vidsw[adp->va_index]->clear)(adp);
 	}
 	logo_update(adp);
     } else {

currentでちゃんと動いていたのは、既にこれと同じ修正が入っているからで、
それはスクリーンセーバのPC-98への移植のからみで、自分が
「syscons(fb)側にあるxxx_clear()を使いましょう」
と提案してcommitしてもらったからでした(^^;;

| CVS log for src/sys/dev/syscons/logo/logo_saver.c
|
| Revision 1.12
| CVS Tags: RELENG_5_2_BP,RELENG_5_2_0_RELEASE,RELENG_5_2,HEAD
|
| Use the clear function provided by the video adapter driver.
| Submitted by:     chi@bd.mbn.or.jp (Chiharu Shibata)

元のコードだとGV-RAMサイズがbanksizeの整数倍でない場合、余分な領域へのデー
タ書き込みが行われ、機種によってはそれが致命傷になってしまうということで
しょう。
-- 
柴田 千春(♂)      chi@bd.mbn.or.jp    <http://www32.ocn.ne.jp/~chi/>