PulseAudio:pa_operation

pa_operation_ref参照カウントを+1/-1
pa_operation_cancel操作をキャンセルする
pa_operation_get_state現在の状態を取得
pa_operation_set_state_callback状態が変化した時のコールバックをセット
pa_operation *pa_operation_ref(pa_operation *o);
void pa_operation_unref(pa_operation *o);
参照カウントを +1 または -1 する。
関数の戻り値で pa_operation を取得した場合は、常に unref を行うこと。
void pa_operation_cancel(pa_operation *o);
操作をキャンセルする。

ただし、サーバー側での操作が、必ずしもキャンセルされるわけではない。
クライアント側で、関連付けられたコールバックが呼び出されないように、無効化するという意味はある。
pa_operation_state_t pa_operation_get_state(const pa_operation *o);
現在の状態を取得
戻り値
PA_OPERATION_RUNNING操作がまだ実行中
PA_OPERATION_DONE操作が完了した
PA_OPERATION_CANCELLEDキャンセルされた。
アプリケーションによってキャンセルされた、または、操作の保留中にコンテキストが切断された。
void pa_operation_set_state_callback(pa_operation *o, pa_operation_notify_cb_t cb, void *userdata);

typedef void (*pa_operation_notify_cb_t)(pa_operation *o, void *userdata);
状態が変化したときに呼び出される、コールバック関数をセットする。

pa_operation を生成する関数は、操作の終了時に呼び出されるコールバックを既に受け取っているため、通常は必要ない。
操作がキャンセルされた場合にコールバックを取得したい時に使う。