XMBUF(3X11)

名前
XmbufQueryExtension, XmbufGetVersion, XmbufCreateBuffers, XmbufDestroyBuffers, XmbufDisplayBuffers, XmbufGetWindowAttributes, XmbufChangeWindowAttributes, XmbufGetBufferAttributes, XmbufChangeBufferAttributes, XmbufGetScreenInfo, XmbufCreateStereoWindow - X マルチバッファリング関数群

書式

#include <X11/extensions/multibuf.h>

Bool XmbufQueryExtension(
    Display *dpy,
    Display *dpy,
    int *event_base_return,
    int *error_base_return);

Status XmbufGetVersion(
    Display *dpy,
    int *major_version_return,
    int *minor_version_return);

int XmbufCreateBuffers(
    Display *dpy,
    Window window,
    int count,
    int update_action,
    int update_hint,
    Multibuffer *buffers_update);

void XmbufDestroyBuffers(
    Display *dpy,
    Window window);

void XmbufDisplayBuffers(
    Display *dpy,
    int count,
    Multibuffer *buffers,
    int min_delay,
    int max_delay);

Status XmbufGetWindowAttributes(
    Display *dpy,
    Window window,
    XmbufWindowAttributes *attributes);

void XmbufChangeWindowAttributes(
    Display *dpy,
    Window window,
    unsigned long valuemask,
    XmbufSetWindowAttributes *attributes);

Status XmbufGetBufferAttributes(
    Display *dpy,
    Multibuffer buffer,
    XmbufBufferAttributes *attributes);

void XmbufChangeBufferAttributes(
    Display *dpy,
    Multibuffer buffer,
    unsigned long valuemask,
    XmbufSetBufferAttributes *attributes);

Status XmbufGetScreenInfo(
    Display *dpy,
    Drawable drawable,
    int *nmono_return,
    XmbufBufferInfo **mono_info_return,
    int *nstereo_return,
    XmbufBufferInfo **stereo_info_return);

Window XmbufCreateStereoWindow(
    Display *dpy,
    Window parent,
    int x,
    int y,
    unsigned int width,
    unsigned int height,
    unsigned int border_width,
    int depth,
    unsigned int class,
    Visual *visual,
    unsigned long valuemask,
    XSetWindowAttributes *attributes,
    Multibuffer *left_return,
    Multibuffer *right_return);

構造体
イベント:
typedef struct {
    int type;
    unsigned long serial;
    int send_event;
    Display *display;
    Multibuffer buffer;
    int state;
} XmbufClobberNotifyEvent;

typedef struct {
    int type;
    unsigned long serial;
    int send_event;
    Display *display;
    Multibuffer buffer;
} XmbufUpdateNotifyEvent;

取得可能なウィンドウ別の属性:
typedef struct {
    int displayed_index;
    int update_action;
    int update_hint;
    int window_mode;
    int nbuffers;
    Multibuffer *buffers;
} XmbufWindowAttributes;

設定可能なウィンドウ別の属性:
typedef struct {
    int update_hint;
} XmbufSetWindowAttributes;

取得可能なバッファ別の属性:
typedef struct {
    Window window;
    unsigned long event_mask;
    int buffer_index;
    int side;
} XmbufBufferAttributes;

設定可能なバッファ別の属性:
typedef struct {
    unsigned long event_mask;
} XmbufSetBufferAttributes;

スクリーン別のバッファ情報(これらのリストがある):
typedef struct {
    VisualID visualid;
    int max_buffers;
    int depth;
} XmbufBufferInfo;

説明
X11 ダブルバッファリング、マルチバッファリング、ステレオ拡張に 対するアプリケーションプログラミングライブラリは、以下に述べる インタフェースを持つ。 例外である を除き、この拡張をサポートしていないディスプレイに対してこの関数を呼び 出すと、ExtensionErrorHandler(これは と関数を使い、 と同じように設定することができる)が呼ばれ、それから関数が戻ってくる。

は、指定されたディスプレイでマルチバッファリング/ステレオ拡張が利用可 能な場合に を返す。この拡張が存在する場合、最初のイベントコードの値(実際の値を得 るためには、これをイベント型定数 と に追加しなければならない) が event_base_return に格納され、最初のエラーコードのの値(実際の値を得 るためには、これをエラー型定数 に追加しなければならない)が error_base_return に格納される。

は拡張のメジャーバージョン番号とマイナーバージョン番号を取得する。 この関数はエラーが発生した場合に 0 を返し、エラーが発生しなかった場合 には 0 でない値を返す。

は、「カウント」バッファが指定した update_action と update_hint を使っ て生成されることと、これが指定したウィンドウと対応づけられることを要求 する。生成されたバッファの数が返され(エラーが起こった場合は 0)、 buffer_update はその多くのマルチバッファ識別子で埋められる。

は指定したウィンドウに対応するバッファを破棄する。

は、min_delay ミリ秒が過ぎた後の max_delay 以内に、指定したバッファを 適切なウィンドウに表示する。 同じウィンドウには2つのバッファを対応づけることはできず、そうでない場 合には、エラー Matc が生成される。

は、指定したディスプレイに対応づけられている全てのバッファに適用される マルチバッファリング属性を取得する。 返されたバッファのリストは で解放することができる。 成功した場合には 0 でない値が返され、エラーが起こった場合には 0 が返 される。

は、与えられたウィンドウに対応づけられている全てのバッファに適用される マルチバッファリング属性を設定する。これは現在のところ、update_hint に 限定されている。

は指定したバッファに対する属性を取得する。 成功した場合には 0 でない値が返され、エラーが起きた場合には 0 が返さ れる。

は指定したバッファに対する属性を設定する。 これが現在のところ、event_mask に限定されている。

は、指定したドロウアブルのスクリーンにおけるモノラルとステレオのウィン ドウの生成方法を制御するパラメータを取得する。ビジュアルと深さの組の数 が nmono_return と nstereo_return に返される。nmono_return が 0 より 大きければ、mono_info_return には 利用できる様々なビジュアルと深さを記述している 構造体の配列のアドレスがセットされている。同様に、stereo_info_return は nstereo_return に従ってセットされる。mono_info_return と stereo_info_return に返されるメモリは、 を使って解放することができる。 エラーが起きなかった場合は、0 でない値が返される。

は、 がモノラルのウィンドウを生成するのと同じようにステレオウィンドウを生成 する。左と右のバッファに対する ID はそれぞれ、left_return と right_return に返される。拡張がそのディスプレイで利用できない場合、戻っ てくる拡張エラーハンドラがインストールされているならば が返される。

既定値

update_action フィールド(XmbufWindowAttributes 構造体):

update_hint フィールド(XmbufWindowAttributes構造体、 XmbufSetWindowAttributes 構造体):

引き数 valuemask:

モノラル対ステレオ、左対右:

state フィールド(XmbufClobberNotifyEvent 構造体):

イベント関係:

バグ
このマニュアルページは改善が必要である。

関連項目
Extending X for Double Buffering, Multi-Buffering, and Stereo