コード例 #1
0
bool AudioNode::connect(AudioNode* destination, unsigned outputIndex, unsigned inputIndex)
{
    ASSERT(isMainThread()); 
    AudioContext::AutoLocker locker(context());
    
    // Sanity check input and output indices.
    if (outputIndex >= numberOfOutputs())
        return false;
    if (destination && inputIndex >= destination->numberOfInputs())
        return false;

    AudioNodeOutput* output = this->output(outputIndex);
    if (!destination) {
        // Disconnect output from any inputs it may be currently connected to.
        output->disconnectAllInputs();
        return true;
    }
    
    if (context() != destination->context())
        return false;

    AudioNodeInput* input = destination->input(inputIndex);
    input->connect(output);

    // Let context know that a connection has been made.
    context()->incrementConnectionCount();

    return true;
}
コード例 #2
0
void AudioNode::disconnect(unsigned outputIndex, ExceptionCode& ec)
{
    ASSERT(isMainThread());
    AudioContext::AutoLocker locker(context());

    // Sanity check input and output indices.
    if (outputIndex >= numberOfOutputs()) {
        ec = INDEX_SIZE_ERR;
        return;
    }

    AudioNodeOutput* output = this->output(outputIndex);
    output->disconnectAllInputs();
}