QD49 - オフスクリーンの GWorld への Copybits によるバスエラー (97 年 11 月 17 日)
Q:
ウインドウからオフスクリーンの GWorld に CopyBits で画像をコピーすると、バスエラーが起こるマシンと起こらないマシンがあります。
A:
コピー元のウインドウの一部が画面の下にはみ出しているため、CopyBits が PixMap の下方のピクセルを読み込みます。この場合、ビデオ RAM を越えた未実装のメモリ空間にアクセスが及ぶと、バスエラーになります。
ネイティブの QuickDraw は、ソースの矩形 (rect) とソースの PixMap を囲む矩形 (bound rect) とを比較することでこの問題を解決していますが、QuickDraw の 68K バージョンはほとんど、ソースの矩形のチェックを行いません。最良の方法は、ソースの矩形が画面の境界を越えないようにすることです。ウインドウは常に有効な情報を表示しているとはかぎらないことに注意してください。他のウインドウが重なっていることもあるし、他のコードがウインドウに書き込みを行っているかもしれません (例えば、画面に直接書き込むゲームやエクステンションなどがこれにあたります)。
-- Tim Carroll
devsupport@apple.com
[ Technical Q&A's : Graphics & Media : QuickDraw : QD49 ]
|