4

私はコンポジターがXでどのように機能するかを理解しようとしています(基本的に、xcompmgrもcairo-compmgrも私の素晴らしいwmの影を適切に描画できないためです~~~)

xcompmgrとcairo-compmgrの両方のソースコードの一部を読みましたが、それがどのように行われるのかまだよくわかりません。

影がどこにあるべきか(確かに窓の周りですが、影は他の窓の下にある可能性があり、描画する必要はありません)、そしてどこ(どのレイヤー/窓上にあるか)を彼らがどのように知っているのか知りたいです)彼らは影を描きますか?おそらく、これらすべてのX拡張機能がどのように使用されるか(およびその目的)、およびcairo-compmgrがcairoを使用して低レベルのXのものを処理する方法もあります。

多くのもの(特にX拡張機能)が十分に文書化されていないため、ソースコードからこれらを学ぶのは少し難しいです。私がどこを見るべきかを指摘するだけでも役に立ちます。

4

1 に答える 1

3

コードを単純にすればするほど、うまく機能します。

  • 表示されているウィンドウのリストを取得する
  • 逆の z オーダーで並べ替えます (一番下から一番上へ)。
  • ウィンドウごとに影を描画し、次にウィンドウ自体を描画します

黒魔術は必要ありません。

それがどのように機能するのか疑問に思っているなら、それは簡単です: 「複合」X 拡張機能を使用する必要があります。オーバーレイ ウィンドウが有効になると、画面に表示される唯一のウィンドウになります。次に、ウィンドウPixmapごとに提供されるように、すべてのウィンドウをその上に描画する必要があります。

編集:ドキュメントを探している場合は、Linuxマニュアル(manコマンド)とヘッダーファイルを使用できます。これらは、他のすべてのソースと同様に、ドキュメントの主要な(また、おそらく唯一の本物の)ソースです/ウェブサイトはそれらに頼っています。

于 2011-12-10T11:52:24.220 に答える