wl_output

wl_output (ver 4)
struct wl_output_listenerハンドラ構造体
wl_output_add_listenerハンドラ設定
wl_output_destroy破棄
wl_output_release解放
wl_output (ver 4)
struct wl_output_listener {
    void (*geometry)(void *data, struct wl_output *wl_output,
        int32_t x, int32_t y, int32_t physical_width, int32_t physical_height, int32_t subpixel,
        const char *make, const char *model, int32_t transform);
    void (*mode)(void *data, struct wl_output *wl_output, uint32_t flags,
        int32_t width, int32_t height, int32_t refresh);
    //ver 2
    void (*done)(void *data, struct wl_output *wl_output);
    void (*scale)(void *data, struct wl_output *wl_output, int32_t factor);
    //ver 4
    void (*name)(void *data, struct wl_output *wl_output, const char *name);
    void (*description)(void *data, struct wl_output *wl_output, const char *description);
};
ハンドラ構造体
geometry
出力先の情報が送られてくる。
バインドした時、またはプロパティのいずれかが変更されたときに、送信される。

physical_width, height: 物理的な幅と高さ (mm)。仮想環境上では 0 の場合もあり。
make: メーカー名。
mode: モデル名。

subpixel: サブピクセルタイプ
WL_OUTPUT_SUBPIXEL_UNKNOWN
WL_OUTPUT_SUBPIXEL_NONE
WL_OUTPUT_SUBPIXEL_HORIZONTAL_RGB
WL_OUTPUT_SUBPIXEL_HORIZONTAL_BGR
WL_OUTPUT_SUBPIXEL_VERTICAL_RGB
WL_OUTPUT_SUBPIXEL_VERTICAL_BGR

transform: 変形
WL_OUTPUT_TRANSFORM_NORMAL
WL_OUTPUT_TRANSFORM_90
WL_OUTPUT_TRANSFORM_180
WL_OUTPUT_TRANSFORM_270
WL_OUTPUT_TRANSFORM_FLIPPED
WL_OUTPUT_TRANSFORM_FLIPPED_90
WL_OUTPUT_TRANSFORM_FLIPPED_180
WL_OUTPUT_TRANSFORM_FLIPPED_270
mode
使用可能なモードの列挙。
バインドした時か、モードが変更された時に送信され、最低でも現在のモードが1つ存在する。

flags:
WL_OUTPUT_MODE_CURRENT = 0x01 : カレント
WL_OUTPUT_MODE_PREFERRED = 0x02 : 優先

width, height: 画面のサイズ (px)
refesh: 垂直フレームレート (mHz)
done
ver2
wl_output にバインドした後、他のすべてのプロパティが送信され、その後に、他のプロパティの変更が行われた後に送信される。
複数のイベントでプロパティが送られた時に、グループとしてまとめて処理したい時に使う。
scale
ver2
スケーリング情報を受け取る。
バインド後、またはスケールが変更された時に送信される。
送られてこなかった場合は、1と仮定する。

1 より大きいスケールは、コンポーザがレンダリング時にサーフェスを拡大させる。
これは、高解像度のディスプレイで、等倍表示だと読みにくい場合に使用される。

スケーリングに対応する場合は、wl_surface_set_buffer_scale() に値を渡して適用する。
name
ver 4
出力の名前 (UTF-8)。

名前に規則はない。
各名前は、すべての wl_output で一意。
名前が一意であることは、コンポジターインスタンスに対してのみ保証される。

特定の wl_output に対しては、すべてのクライアントで、同じ名前が使用される。
したがって、名前はプロセス間で共有され、特定の wl_output を参照できる。
名前はセッション間で永続的であるとは保証されていないため、設定ファイルに保存して使うなどしても、有用でない場合がある。

このイベントは、wl_output オブジェクトをバインドした後に送信される。
このイベントは、オブジェクトごとに1回だけ送信され、wl_output の存続期間中は名前は変更されない。

wl_output が破棄され、のちに再作成された場合、コンポジターは同じ出力名を再使用できるが、可能であれば同じ名前の再利用を避ける必要がある。
description
ver 4
出力の説明の文字列 (UTF-8)。
すべての wl_output の中で一意であることは保証されない。
例としては、「Foocorp 11" Display」や「Virtual X11 output via :1」など。

このイベントは、wl_output をバインドした後、または説明が変更されるたびに送信される。
ただし、説明はオプションであり、まったく送信されない場合もある。
int wl_output_add_listener(struct wl_output *wl_output,
    const struct wl_output_listener *listener, void *data);
ハンドラ設定
void wl_output_destroy(struct wl_output *wl_output);
破棄する。
void wl_output_release(struct wl_output *wl_output);
//ver 3
サーバーに、このオブジェクトは今後使用しないことを通知する。