]> code.delx.au - pulseaudio/blobdiff - src/polyp/subscribe.c
* modify pa_context_exit_daemon() to return a pa_operation object
[pulseaudio] / src / polyp / subscribe.c
index 4e00997abe2409631a0665dfa92e1ec244ccb1f4..65849b6d4c85e062c6ed124b545187b5c406ec87 100644 (file)
@@ -37,7 +37,11 @@ void pa_command_subscribe_event(pa_pdispatch *pd, uint32_t command, PA_GCC_UNUSE
     pa_context *c = userdata;
     pa_subscription_event_type_t e;
     uint32_t index;
-    assert(pd && command == PA_COMMAND_SUBSCRIBE_EVENT && t && c);
+
+    assert(pd);
+    assert(command == PA_COMMAND_SUBSCRIBE_EVENT);
+    assert(t);
+    assert(c);
 
     pa_context_ref(c);
 
@@ -56,28 +60,32 @@ finish:
 }
 
 
-pa_operation* pa_context_subscribe(pa_context *c, pa_subscription_mask_t m, void (*cb)(pa_context *c, int success, void *userdata), void *userdata) {
+pa_operation* pa_context_subscribe(pa_context *c, pa_subscription_mask_t m, pa_context_success_cb_t cb, void *userdata) {
     pa_operation *o;
     pa_tagstruct *t;
     uint32_t tag;
+
     assert(c);
+    assert(c->ref >= 1);
 
-    o = pa_operation_new(c, NULL);
-    o->callback = (pa_operation_callback) cb;
-    o->userdata = userdata;
+    PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
+    
+    o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
 
     t = pa_tagstruct_new(NULL, 0);
     pa_tagstruct_putu32(t, PA_COMMAND_SUBSCRIBE);
     pa_tagstruct_putu32(t, tag = c->ctag++);
     pa_tagstruct_putu32(t, m);
     pa_pstream_send_tagstruct(c->pstream, t);
-    pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, pa_context_simple_ack_callback, o);
+    pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, pa_context_simple_ack_callback, pa_operation_ref(o));
 
-    return pa_operation_ref(o);
+    return o;
 }
 
-void pa_context_set_subscribe_callback(pa_context *c, void (*cb)(pa_context *c, pa_subscription_event_type_t t, uint32_t index, void *userdata), void *userdata) {
+void pa_context_set_subscribe_callback(pa_context *c, pa_context_subscribe_cb_t cb, void *userdata) {
     assert(c);
+    assert(c->ref >= 1);
+    
     c->subscribe_callback = cb;
     c->subscribe_userdata = userdata;
 }