XMBUF(3XEXT) — NEWS-OS Programmer’s Manual
名称
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);
構造体
イベント:
typedef struct {
int type;/∗ イベントの種類 ∗/
unsigned long serial;/∗ サーバによる最新リクエスト番号 ∗/
int send_event;/∗ SendEvent リクエストからなら真 ∗/
Display ∗display;/∗ イベントを読み込んだディスプレイ ∗/
Multibuffer buffer;/∗ イベントバッファ ∗/
int state;/∗ Clobber ステート 定数 参照 ∗/
} XmbufClobberNotifyEvent;
typedef struct {
int type;/∗ イベントの種類 ∗/
unsigned long serial;/∗ サーバによる最新リクエスト番号 ∗/
int send_event;/∗ SendEvent リクエストからなら真 ∗/
Display ∗display;/∗ イベントを読み込んだディスプレイ ∗/
Multibuffer buffer;/∗ イベントバッファ ∗/
} XmbufUpdateNotifyEvent;
ウィンドウ属性の取得:
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;
ウィンドウ属性の設定:
typedef struct {
int update_hint;/∗ Frequent, Intermittent, Static ∗/
} XmbufSetWindowAttributes;
バッファ属性の取得:
typedef struct {
Window window;/∗ 接続しているウィンドウ ∗/
unsigned long event_mask;/∗ 指定されたイベント ∗/
int buffer_index;/∗ どのバッファか ∗/
int side;/∗ Mono, Left, Right ∗/
} XmbufBufferAttributes;
バッファ属性の設定:
typedef struct {
unsigned long event_mask;/∗ 指定されたイベント ∗/
} XmbufSetBufferAttributes;
スクリーン情報:
typedef struct {
VisualID visualid;/∗ このデプスにて可能なヴィジュアル識別子 ∗/
int max_buffers;/∗ このヴィジュアル用バッファ ∗/
int depth;/∗ 作成されるバッファのデプス ∗/
} XmbufBufferInfo;
解説
X11 Double-Buffering、Multi-Buffering、およ び Stereo Extension 用アプリケーションプログラムライブラリは 以下のようなインタフェースを備えています。 XmbufQueryExtension を除いて、エクステンションをサポートして いないディスプレイで上記関数のいずれかが呼び出された場合、 ExtensionErrorHandler ( XSetErrorHandler(3X11) と同様な 方法で XSetExtensionErrorHandler によって設定できる ) が呼び出され、関数が返ります。
マルチバッファ/ステレオエクステンションが指定ディスプレイにて有効 な場合、XmbufQueryExtension は True を返します。 もし、ディスプレイが存在する場合、 最初のイベントコードの値 (実際の値を得るため、 イベントタイプ定数 MultibufferClobberNotify およ び MultibufferUpdateNotify に加えられる) は event_base_return に格納され、最初のエラーコード の値 (実際の値を得るため、 エラータイプ定数 MultibufferBadBuffer に加え られる)は error_base_return に格納されます。
XmbufGetVersion はエクステンションのメジャーおよび マイナーバージョンナンバを獲得します。 エラーが発生した場合リターン値は 0、エラーが発生しない場合 0 以外の 値を返します。
XmbufCreateBuffers は指定の update_action およ び update_hint によって "カウント" バッファ作成と、 それを表示ウィンドウに関連づけることをリクエストします。 生成バッファの数を返し(エラー発生時は 0)、 buffers_update がマルチバッファ識別子によって満たされます。
XmbufDestroyBuffers は指定ウィンドウに関連するバッファを破壊します。
XmbufDisplayBuffers は min_delay ミリ秒経過後、 max_delay ミリ秒以内にて、対応するウィンドウの指定バッファ を表示します。 同一のウィンドウに関連する二つのバッファは存在せず、 そうでない場合 BadMatch エラーが生成されます。
XmbufGetWindowAttributes は指定ウィンドウに関連する全バッファに 適応するマルチバッファ属性を獲得します。 バッファのリターン値リストは XFree によって開放されます。 成功時は 0 以外を返し、エラー発生時には 0 を返します。
XmbufChangeWindowAttributes は指定ウィンドウに関連する 全バッファに適応する マルチバッファの属性を設定します。 現在は update_hint に限定されています。
XmbufGetBufferAttributes は指定バッファに対する属性を獲得します。 成功時は 0 以外を返し、エラー発生時には 0 を返します。
XmbufChangeBufferAttributes は指定バッファに対する属性を 設定します。現在は event_mask に限定されています。
XmbufGetScreenInfo は指定された drawable のスクリーン 上に生成されるモノおよびステレオのウィンドウの制御パラメータを獲得します。 モノおよびステレオのスクリーン情報の数が nmono_return およ び nstereo_return に返されます。 nmono_return が 0 以上 の場合、 mono_info_return は使用可の様々なヴィジュアルおよびデプスを 記述する XmbufBufferInfo 構造体の配列のポインタに設定されます。 そうでなければ、mono_info_return は NULL に設定されます。 同様に、 stereo_info_return は nstereo_return に 従って設定されます。 mono_info_return お よび stereo_info_return で返された格納データは XFree によって開放する必要があります。
XmbufCreateStereoWindow は XCreateWindow(3X11) が モノウィンドウを生成する様にステレオウィンドウを生成します。 left バッファと right バッファの ID がそれぞれ、 left_return および right_return に返されます。 エクステンションがそのディスプレイに無効の場合、None が返されます。
定数
Update_action フィールド:
MultibufferUpdateActionUndefined
MultibufferUpdateActionBackground
MultibufferUpdateActionUntouched
MultibufferUpdateActionCopied
Update_hint フィールド:
MultibufferUpdateHintFrequent
MultibufferUpdateHintIntermittent
MultibufferUpdateHintStatic
Valuemask フィールド:
MultibufferWindowUpdateHint
MultibufferBufferEventMask
モノ/ステレオおよび左/右:
MultibufferModeMono
MultibufferModeStereo
MultibufferSideMono
MultibufferSideLeft
MultibufferSideRight
Clobber ステート:
MultibufferUnclobbered
MultibufferPartiallyClobbered
MultibufferFullyClobbered
イベントスタッフ:
MultibufferClobberNotifyMask
MultibufferUpdateNotifyMask
MultibufferClobberNotify
MultibufferUpdateNotify
MultibufferNumberEvents
MultibufferBadBuffer
MultibufferNumberErrors
バグ
本マニュアルが未完成。
関連事項
Extending X for Double Buffering, Multi-Buffering, and Stereo
NEWS-OSRelease 4.2.1R