XvGrabPort(3) クライアントで排他利用するためにポートをロックする

書式

#include <X11/extensions/Xvlib.h>

XvGrabPort(dpy, port, time)

Display *dpy;
XvPortID port;
Time time;

引き数

dpy
Xv サーバが Xv クライアントからのリクエストを受け付けるディスプレイ画面 を指定する。ディスプレイを指定するオプションが指定されていなければ、Xv は DISPLAY 環境変数で指定されているディスプレイを使う。ディスプレイ 指定オプションは「ホスト名:番号」という形式である。コロン 1 つ(:)でな く、コロン 2 つ(::)を使った場合には、トランスポート層で DECnet を使う ことが指定される。
port
グラブスルポートを定義する。
time
リクエストのタイムスタンプを指定する。

説明

XvGrabPort(3X) はポートをグラブする。一旦クライアントがポートをグラブ すると、グラブを行ったクライアントしかそのポートにビデオ関連リクエスト を出せなくなる。

タイムスタンプが現在のポート時刻より前ならば、XvGrabPort のリクエスト は無視され、XvInvalidTime が返される。他のクライアントが既にポートをグ ラブしていると、XvAlreadyGrabbed が返される。それ以外の場合には、この 関数は Success をステータスとして返す。以下のリクエストが処理さ れた時にポート時刻が更新される: XvGrabPort(3X), XvUngrabPort(3X), XvPutVideo(3X), XvPutStill(3X), XvGetVideo(3X), XvGetStill(3X)

そのポートが他のクライアントのためにビデオ処理をしている最中ならば、そ のビデオ処理は無効にされる。そして詳細内容として XvPreempted を持つ XvVideoNotify イベントがそのドロウアブルに対して生成される。

返り値

[Success]
XvGrabPort(3X) が正常に終了すると返される。
[XvInvalidTime]
要求された時刻が現在のポート時刻より前の場合に返される。
[XvAlreadyGrabbed]
他のクライアントが既にポートをグラブしている場合に返される。
[XvBadExtension]
Xv 機能拡張が使えない場合に返される。
[XvBadAlloc]
XvGrabPort(3X) がリクエストを処理するためのメモリの割り当てに失敗した 場合に返される。

診断

[XvBadPort]
リクエストされたポートが存在しない場合に生成される。