• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:グラフィックスの出力ができません(Xlib,FreeBSD,KDE))

Xlibを使用した線の描画ができない問題

このQ&Aのポイント
  • Xlibを使用して線を描画するプログラムを作成しましたが、線が表示されません。
  • 他のサンプルプログラムでは線が表示されるため、コードに間違いがある可能性があります。
  • FreeBSDやKDEの環境で試しましたが、線が描画されません。どうすれば解決できるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kochory
  • ベストアンサー率45% (167/370)
回答No.1

よくありますねこれ。 XMapWindowは処理にけっこう時間がかかるようで、 この命令のすぐあとに描画命令を置くと、 ウインドウのマップのための処理中に 描画命令が流れてしまって、 マップされたウインドウには描画されてない ということが起こるようです。 一番簡単な対策は、XMapWindowの直後にXFlushを置いて、 さらにそのあとsleep命令や空ループなどを置いて ウインドウのマッピングが完了するであろう時間分 待つというものです。 が、これじゃあまりにもかっこ悪いので、私自身は 空ループの代わりに、Exposureイベントを拾うまで XNextEventを繰り返すループを置くことで、 ウインドウのマッピングを確認するようにしています。

noname#245945
質問者

お礼

御指南の通り sleep(1); を入れると表示されるようになりました。 また、 XNextEvent(display,&e); を入れても、今度は高速に線が描画されました。 最初にウィンドウが現れるときにもExposeイベントは飛んで来るのですね、勉強になりました。 順を追って説明していただいたのでわかりやすかったです。 ありがとうございました。