示例#1
0
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);
}
示例#2
0
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);
}
示例#3
0
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);
}
示例#4
0
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);
}
示例#5
0
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();
}
示例#6
0
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();
}
示例#7
0
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]);
	}
}