- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:グラフィックスの出力ができません(Xlib,FreeBSD,KDE))
Xlibを使用した線の描画ができない問題
このQ&Aのポイント
- Xlibを使用して線を描画するプログラムを作成しましたが、線が表示されません。
- 他のサンプルプログラムでは線が表示されるため、コードに間違いがある可能性があります。
- FreeBSDやKDEの環境で試しましたが、線が描画されません。どうすれば解決できるでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
よくありますねこれ。 XMapWindowは処理にけっこう時間がかかるようで、 この命令のすぐあとに描画命令を置くと、 ウインドウのマップのための処理中に 描画命令が流れてしまって、 マップされたウインドウには描画されてない ということが起こるようです。 一番簡単な対策は、XMapWindowの直後にXFlushを置いて、 さらにそのあとsleep命令や空ループなどを置いて ウインドウのマッピングが完了するであろう時間分 待つというものです。 が、これじゃあまりにもかっこ悪いので、私自身は 空ループの代わりに、Exposureイベントを拾うまで XNextEventを繰り返すループを置くことで、 ウインドウのマッピングを確認するようにしています。
お礼
御指南の通り sleep(1); を入れると表示されるようになりました。 また、 XNextEvent(display,&e); を入れても、今度は高速に線が描画されました。 最初にウィンドウが現れるときにもExposeイベントは飛んで来るのですね、勉強になりました。 順を追って説明していただいたのでわかりやすかったです。 ありがとうございました。