雑KiN3-改

ここは自分にとっての過去ログです。すなわち、他人にとっては単なるゴミ。

 取り敢えず仮復活状態。ここ2、3ヶ月頭を悩ませていた Motif のダブルバッファ拡張の謎が解決して動作してくれたので嬉しい一日。自分でレイヤー構造を決めて作った試作品は直ぐに出来たのだが、他人が設計したウィンドウやら部品やらが複数積み重なっているものにダブルバッファを付けたときは X Window がエラーを返して来ていたので現象を理解しようと数少ない文献を漁ったり、試作をしてみたりしていた。


 これをやっていたのは毎日という訳では無く、他の仕事の合間をみて暇なときに。今日も暇だったので懸案を潰そうと、色々とやっていて一時は断念するかなと話をしていたが、その後に、動作している物と動かない物の違いは何だろうと、一行単位でコードを走らせながら追っていたら判明。原因は XtRealizeWidget() と XdbeAllocateBackBufferName() の前後関係だった。判ってしまえば当たり前のことなんだが、Widget を生成して XdbeAllocateBackBufferName() を呼ぶのだが、下手にコンストラクタ内で全てを済ませてしまうと拙かったと言うこと。コンストラクタが走った時点では XtRealizeWidget() はまだ走っていないのでウィンドウが生成されていないですな。それに対して XdbeAllocateBackBufferName() は Window を引数として要求する。無い物を食わせてもエラーを吐くのは当たり前。なさけねーけどすっきりした。