The Media Kit Table of Contents | The Media Kit Index |
Derived from: (none)
Declared in: be/media/TimedEventQueue.h
Library: libmedia.so
Allocation: Constructor only
BTimedEventQueueクラスは、node内での一連のイベントをキューに入れる簡単な方法を提供します。あなたは、開始、停止及びseek要求を並べるために、また入ってきたデータのバッファを扱うために用意している間、それらを並べるためにこのクラスを使用することができます。それぞれのキューの要素はイベントが処理されるべき時間によってタグ付けされており、関数は扱われるべき次のイベントを探すために提供されます。
|
それぞれのイベントは、イベントがキューから削除される際に、どんな特別な動作が行われる必要があるかを示す(自分自身に関連する)クリーンアップフラグを持ちます。もしこの値がB_NO_CLEANUPであれば、なにも行われません。もし値がB_RECYCLEであり、イベントがB_HANDLE_BUFFERイベントであれば、BTimedEventQueueはそのイベントに関連するバッファを自動的にリサイクルするでしょう。
もしクリーンアップフラグがB_DELETE、B_USER_CLEANUPまたはそれ以上の値であれば、クリーンアップフック関数が呼び出されます。あなたはイベントデータの削除を自分自身で扱うために、クリーンアップフック関数を実装し、確立することができます。そのフック関数は、cleanup_hookタイプです。
typedef void (*cleanup_hook)(void *context, bigtime_t time, int32 what, void *pointer, uint32 pointerCleanup, int64 data);
SetCleanupHook()を呼び出すことによって、下記のようにクリーンアップフック関数を指定できます。
SetCleanupHook(MyCleanupFunction, contextPtr);
contextPtrは、あなたがクリーンアップフック関数を使用するポインタであり、それは種類を問わずあなたが要求するデータを内包することができます。
|
新しくて中身が空の、時刻設定のあるイベントキュー(timed event queue)を初期化します。
|
キューを消去し、そのオブジェクトによって領域確保されていたメモリを解放します。
|
キューに、指定されたeventを追加します。
RETURN CODES
B_OK. イベントが追加された。
|
キューにある指定したparameterに一致する各々のイベントに対して、hook関数が呼び出されます。contextポインタはフック関数に渡され、あなたのフック関数が要求するなにかを指し示すことになるでしょう。
これによって、それぞれのnode(または、あるタイプの或いはある時間に起こった全てのnode)に於てキューをスキャンし、特定の動作を行うことの意味が提供されます。もし全てのイベントを処理したいなら、時間をB_INFINITE_TIMEOUTに指定し、directionをB_BEFORE_TIMEに指定することができます。
The hook function should return a queue_action value.
queue_action MyHook(media_timed_event *event, void *context) { if (event->data == 0) { /* countdown finished, do something */ return BTimedEventQueue::B_REMOVE_EVENT; } event->data--; return BTimedEventQueue::B_NO_ACTION; }
この例では、もしイベント構造体のdataがゼロであれば、フック関数はイベントを処理します(そして戻る際にキューから削除されるできであることを示します)。
RETURN CODES
B_OK. イベントは処理された。
|
キューにあるイベント数を返します。
|
与えられた特徴に一致する最初のイベントを、それぞれのキューから探します。この探索は、eventTimeで指定された時間から始まり、指定されたdirectionに進行します。
もし全てのイベントをスキャンしたいなら、時間にB_INFINITE_TIMEOUTを、directionにB_BEFORE_TIMEを指定することができます。
もし一致するイベントが見つからなければ、NULLが返されます。
|
FirstEvent()は、キューからイベントを削除せずに、キューの最初のイベントを返します。
FirstEventTime()は、最初のイベントの生じる時間をマイクロ秒で返します。
RETURN CODES
B_OK. エラーは生じなかった。
|
キューから指定されたイベントを消去します。イベントが消去されるtime、消去するイベント探すdirection、及び消去されるイベントのタイプを指定することで、どのイベントが消去されるかを指定します。
もし全てのイベントを消去したいなら、時間にB_INFINITE_TIMEOUTを、そしてdirectionにB_BEFORE_TIMEを指定することができます。
RETURN CODES
B_OK. イベントは消去された。
|
もしキューにイベントがあれば、trueを返します。そうでなければfalseを返します。
|
LastEvent()は、キューからイベントを削除せずに、キューの最後のイベントを返します。
LastEventTime()は、最後のイベントの生じる時間をマイクロ秒で返します。
RETURN CODES
B_OK. エラーは生じなかった。
|
RemoveEvent()は、キューから指定されたeventを削除します。
RemoveFirstEvent()は、キューから最初のイベントを削除します。もしoutEventがNULLでなければ、指定されたバッファには削除されるイベントのコピーが格納されます。
RETURN CODES
B_OK. イベントは削除された。
|
イベントがキューから削除される際に、イベントに対して呼び出されるフックによって指定されるクリーンアップフック関数を設定します。このフックは、B_DELETE、B_USER_CLEANUPまたはそれ以上のcleanup_flagの値の場合のみイベントに対して呼び出されます。
Declared in: <be/media/TimedEventQueue.h>
Constant | Description |
---|---|
B_NO_CLEANUP | イベントがキューから削除される際にクリーンアップしてはいけない。 |
B_RECYCLE_BUFFER | BTimedEventQueueは、バッファイベントがキューから削除される際にバッファをリサイクルしなければならない。 |
B_EXPIRE_TIMER | イベントのdataフィールドで、TimerExpired()を呼び出す。 |
B_USER_CLEANUP | ユーザ定義のクリーンアップタイプに対するベースの値。 |
これらの値は、BTimedEventQueueがキューから削除される際にどう扱われるかを定義します。もしフラグがB_USER_CLEANUPまたはそれ以上の値であれば、クリーンアップフック関数はイベントが削除される際に呼び出されます。
Declared in: <be/media/TimedEventQueue.h>
Constant | Description |
---|---|
B_NO_EVENT | このタイプのバッファをプッシュしてはいけない。それは戻り値のみである。 |
B_ANY_EVENT | このタイプのバッファをプッシュしてはいけない。それは検索にのみ使用される。 |
B_START | 開始イベント。 |
B_STOP | 停止イベント。 |
B_SEEK | seekイベント。 |
B_WARP | ワープイベント。 |
B_TIMER | タイマーイベント。 |
B_HANDLE_BUFFER | 取り扱うためにキューに入れられたバッファを表現する。このイベントのpointerは、BBufferオブジェクトへのポインタである。 |
B_DATA_STATUS | データ状態イベントを表現する。 |
B_HARDWARE | ハードウェアイベント。 |
B_PARAMETER | バッファはparameterの値の変化を内包している。それをBControllable::ApplyParameterData()に渡しなさい。 |
B_USER_EVENT | ユーザ定義のイベントに対するベースの値。 |
これらの値は、BTimedEventQueueが扱うことのできるイベントのタイプを記述します。
Declared in: <be/media/TimedEventQueue.h>
Constant | Description |
---|---|
B_DONE | DoForEach()のパスを終了させる。 |
B_NO_ACTION | このイベントについてはなにも行わない。 |
B_REMOVE_EVENT | イベントを削除する。 |
B_RESORT_QUEUE | イベントが正しい順番に並んでいることを確実にするために、キューを再度ソートします。 |
これらのキュー動作の値は、DoForEach()によって使用されるフック関数によって返されます。これらの値は、フックがイベントを処理した後に、DoForEach()がイベントに対してなにをすべきかを示します。
Declared in: <be/media/TimedEventQueue.h>
Constant | Description |
---|---|
B_ALWAYS | 任意の時間に生じるイベントに一致する。 |
B_BEFORE_TIME | 指定された時間より前に生じるイベントに一致する。 |
B_AT_TIME | 指定された時間に生じるイベントに一致する。 |
B_AFTER_TIME | 指定された時間より後に生じるイベントに一致する。 |
これらの値は、時間の連続をどちらの方向に検索するかを示すために使用されます。
Declared in: <be/media/TimedEventQueue.h>
typedef queue_action (*cleanup_hook)(media_timed_event *event, void *context);
cleanup_hookタイプは、キューからイベントを削除している間に呼び出されるフック関数を定義するために使用されます。それはSetCleanupHook()の呼び出しによって設定されます。
Declared in: <be/media/TimedEventQueue.h>
typedef queue_action (*for_each_hook)(media_timed_event *event, void *context);
for_each_hookタイプは、DoForEach()によって呼び出されるフック関数を定義するために使用されます。
Declared in: <be/media/TimedEventQueue.h>
struct media_timed_event { media_timed_event(); media_timed_event(bigtime_t inTime, int32 inType); media_timed_event(bigtime_t inTime, int32 inType, void *inPointer, uint32 inCleanup); media_timed_event(bigtime_t inTime, int32 inType, void *inPointer, uint32 inCleanup, int32 inData, int64 inBigdata, char *inUserData, size_t dataSize = 0); media_timed_event(const media_timed_event &clone); void operator=(const media_timed_event &clone); ~media_timed_event(); bigtime_t event_time; int32 type; void *pointer; uint32 cleanup; int32 data; int64 bigdata; char user_data[64]; uint32 _reserved_media_timed_event_[8]; };
メディアイベントを記述します :
The Media Kit Table of Contents | The Media Kit Index |
Copyright © 2000 Be, Inc. All rights reserved..