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,                 /* InputOutput, InputOnly*/
    Visual *visual,
    unsigned long valuemask,
    XSetWindowAttributes *attributes,
    Multibuffer *left_return,
    Multibuffer *right_return);

構造体
Events:
typedef struct {
    int type;	/* イベントのタイプ */
     unsigned long serial;	/* 最後にサーバに処理されたリクエスト */
     int send_event;	/* SendEvent リクエストから送られてきた場合に真 */
     Display *display;	/* イベントが読み出されたディスプレイ */
     Multibuffer buffer;	/* イベントのバッファ */
     int state;	/* 下記の Clobbered 定数を参照 */
} XmbufClobberNotifyEvent;

typedef struct {
    int type;	/* イベントのタイプ */
     unsigned long serial;	/* 最後にサーバに処理されたリクエスト */
     int send_event;	/* SendEvent リクエストから送られてきた場合に真 */
     Display *display;	/* イベントが読み出されたディスプレイ */
     Multibuffer buffer;	/* イベントのバッファ */
} XmbufUpdateNotifyEvent;

Per-window attributes that can be got:
typedef struct {
    int displayed_index;	/* 表示されるバッファ */
    int update_action;	/* Undefined, Background, Untouched, Copied */
    int update_hint;	/* Frequent, Intermittent, Static */
    int window_mode;	/* Mono, Stereo */
    int nbuffers;	/* バッファの数 */
    Multibuffer *buffers;	/* バッファ */
} XmbufWindowAttributes;

Per-window attributes that can be set:
typedef struct {
    int update_hint;	/* Frequent, Intermittent, Static */
} XmbufSetWindowAttributes;

Per-buffer attributes that can be got:
typedef struct {
    Window window;	/* この属性が属するウィンドウ */
    unsigned long event_mask;	/* 選択されたイベント */
    int buffer_index;	/* どのバッファであるか */
    int side;	/* Mono, Left, Right */
} XmbufBufferAttributes;

Per-buffer attributes that can be set:
typedef struct {
    unsigned long event_mask;	/* 選択されたイベント */
} XmbufSetBufferAttributes;

Per-screen buffer info (there will be lists of them):
typedef struct {
    VisualID visualid;	/* この深さで利用できるビジュアル */
    int max_buffers;	/* このビジュアルに対する最大のバッファ */
    int depth;	/* 生成されるバッファの深さ */
} XmbufBufferInfo;

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

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

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

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

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

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

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

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

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

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

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

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

既定値

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

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

引き数 valuemask:

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

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

イベント関係:

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

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