void vs_a_unsubscribe(VSNodeAudio *node) { unsigned int i; for(i = 0; i < node->buffer_count; i++) if(node->buffers[i].name[0] != 0) vs_remove_subscriptor(node->buffers[i].subscribers); for(i = 0; i < node->stream_count; i++) if(node->streams[i].name[0] != 0) vs_remove_subscriptor(node->streams[i].subscribers); }
void vs_c_unsubscribe(VSNodeCurve *node) { unsigned int i; for(i = 0; i < node->curve_count; i++) if(node->curves[i].name[0] != 0) vs_remove_subscriptor(node->curves[i].subscribers); }
static void callback_send_c_curve_unsubscribe(void *user, VNodeID node_id, VLayerID curve_id) { VSNodeCurve *node; node = (VSNodeCurve *)vs_get_node(node_id, V_NT_CURVE); if(node == NULL || curve_id >= node->curve_count || node->curves[curve_id].name[0] == 0) return; vs_remove_subscriptor(node->curves[curve_id].subscribers); }
static void callback_send_a_stream_unsubscribe(void *user, VNodeID node_id, VLayerID stream_id) { VSNodeAudio *node; node = (VSNodeAudio *)vs_get_node(node_id, V_NT_AUDIO); if(node == NULL) return; if(node->stream_count <= stream_id) return; if(node->streams[stream_id].name[0] == 0) return; vs_remove_subscriptor(node->streams[stream_id].subscribers); }
static void callback_send_a_stream_destroy(void *user, VNodeID node_id, VLayerID stream_id) { VSNodeAudio *node; unsigned int i, count; node = (VSNodeAudio *)vs_get_node(node_id, V_NT_AUDIO); if(node == NULL || stream_id >= node->stream_count || node->streams[stream_id].name[0] == 0) return; vs_remove_subscriptor(node->streams[stream_id].subscribers); node->streams[stream_id].name[0] = 0; count = vs_get_subscript_count(node->head.subscribers); for(i = 0; i < count; i++) { vs_set_subscript_session(node->head.subscribers, i); verse_send_a_stream_destroy(node_id, stream_id); } vs_reset_subscript_session(); }
static void callback_send_c_curve_destroy(void *user, VNodeID node_id, VLayerID curve_id) { VSNodeCurve *node; unsigned int i, count; node = (VSNodeCurve *)vs_get_node(node_id, V_NT_CURVE); if(node == NULL || node->curve_count >= curve_id || node->curves[curve_id].name[0] == 0) return; vs_remove_subscriptor(node->curves[curve_id].subscribers); node->curves[curve_id].name[0] = 0; free(node->curves[curve_id].keys); count = vs_get_subscript_count(node->head.subscribers); for(i = 0; i < count; i++) { vs_set_subscript_session(node->head.subscribers, i); verse_send_c_curve_destroy(node_id, curve_id); } vs_reset_subscript_session(); }
static void callback_send_node_index_subscribe(void *user_data, uint32 mask) { unsigned int i, j, pow = 1; for(i = 0; i < V_NT_NUM_TYPES; i++, pow <<= 1) { if((mask & pow) != 0) { for(j = 0; j < VSNodeStorage.node_length; j++) { if(VSNodeStorage.nodes[j] != NULL && VSNodeStorage.nodes[j]->type == (VNodeType)i) { if(VSNodeStorage.nodes[j]->owner == verse_session_get_avatar()) verse_send_node_create(VSNodeStorage.nodes[j]->id, i, VN_OWNER_MINE); else verse_send_node_create(VSNodeStorage.nodes[j]->id, i, VN_OWNER_OTHER); } } vs_add_new_subscriptor(VSNodeStorage.list[i]); } else vs_remove_subscriptor(VSNodeStorage.list[i]); } }