wayland一覧

マウスによるウィンドウのリサイズや移動処理を実装 (wayland)

前回のモデル描画を実装してみたところで中身が入った感じなので、ウィンドウとしてリサイズができるように処理を追加していきたいと思います。
実はこのウィンドウサイズのリサイズの処理のためにも、 EGL を使った描画実装に変更したのです。

まずは動作状況をお見せします。以下のような感じで動作するようになりました。

wayland-resize-window
続きを読む


Wayland で EGL を使った描画に変更してみる

Wayland と weston でシンプルなアプリケーションを今まで作ってきましたが、このあたりで EGL を用いた方法に変更することにしました。他の情報ソースを見てみても、共有メモリ実装と EGL を使ったものの2種類に大別されているかなと思います。例によって調べてみて手探りでやっていたりするので、間違っていることもあるかと思いますのでご注意ください。
(Wayland プログラミングな書籍やまとめサイトっていつかできあがってくるのでしょうか)。 続きを読む





Wayland でウィンドウを出す

前回はディスプレイサーバーに接続のみだったため、今回は画面に見えるようにするところまで紹介したいと思います。

プログラム

ウィンドウを出してみるプログラムは以下のようになります。
このコードで真っ黒のウィンドウが表示されますが、終了手段はコンソールで Ctrl+C で閉じることになるので注意してください。

このプログラムの解説は後半で行います。

プログラム解説

コードの流れとしては以下のようになっています。
サーバー、クライアントのプログラムであると言うことを意識すると理解しやすいかもしれません。

  1. コンポジッタに接続
  2. コンポジッタ上の各情報を取得&自分の関数コールバックを登録
  3. 描画用バッファを共有メモリで作成して登録
  4. バッファに描画データを書き込み、wl_surface_commit で登録
  5. wl_display_dispatch でいわゆるイベントループを回す

各Listenerはサーバーであるコンポジッタからの応答を実装する部分となります。

wl_shell 関連は表示している surface に対してのユーザーからの対話部分、すなわちキーボードやマウスの関連を実装するものとなるようです。
今回はこれらを何も処理していないため、まだウィンドウとして完成していない状態です。

これだけのコードがあるのにまだウィンドウとして完成していないあたり、低レベルのインターフェースである実感がありますね。


はじめての Wayland

ぼちぼち Wayland というものが標準で使用可能になっていく気配を感じたので、
Xorg ベースから切り替えが必要かと思って調べてみました。
先日は X11 なしで OpenGL の連載をしていましたが、今度は Wayland を使って OpenGL を使うというゴールに向かって話を進めていきたいと思います。前回はフルスクリーンのみでの動作でしたが今回はウィンドウシステムありでとなります。

Wayland とは

検索してもらうといろいろと情報が出てくると思いますが、
これはディスプレイサーバーのプロトコルであり、Wayland-client というライブラリが存在します。またwayland コンポジッタというものが画面の表示を行います。
そして weston というものが wayland コンポジッタのリファレンス実装となっています。

X-Windowの場合ではサーバ、クライアントは別のPCでも使用可能でしたが、Wayland の場合には同一端末上を想定しています。

実験環境

以下の環境で実験しています。

  • ArchLinux (64bit)
  • VMware Workstation 12 Player
  • weston 1.10

はじめてのWayland通信

まだ何もウィンドウが出せませんが以下のコードで、
ディスプレイサーバーに接続して情報を少し出してみることが可能です。

これを実行すると以下のような結果が出てくると思います。