コード例 #1
0
static void
data_buffer_stream_read_idle(void *user_data)
{
    rig_pb_stream_t *stream = user_data;
    int i;

    rut_poll_shell_remove_idle_FIXME(stream->shell, stream->buffer.read_idle);
    stream->buffer.read_idle = NULL;

    c_return_if_fail(stream->type == STREAM_TYPE_BUFFER);
    c_return_if_fail(stream->buffer.other_end != NULL);
    c_return_if_fail(stream->buffer.other_end->type == STREAM_TYPE_BUFFER);
    c_return_if_fail(stream->read_callback != NULL);

    for (i = 0; i < stream->buffer.incoming_write_closures->len; i++) {
        rig_pb_stream_write_closure_t *closure =
            c_array_index(stream->buffer.incoming_write_closures, void *, i);

        stream->read_callback(stream,
                              (uint8_t *)closure->buf.base,
                              closure->buf.len,
                              stream->read_data);

        /* Give the closure back so it can be freed */
        c_array_append_val(stream->buffer.other_end->buffer.finished_write_closures,
                           closure);
    }
    c_array_set_size(stream->buffer.incoming_write_closures, 0);

    drain_finished_write_closures(stream);
}
コード例 #2
0
static void
drain_finished_write_closures(rig_pb_stream_t *stream)
{
    int i;

    for (i = 0; i < stream->buffer.finished_write_closures->len; i++) {
        rig_pb_stream_write_closure_t *closure =
            c_array_index(stream->buffer.finished_write_closures, void *, i);

        if (closure->done_callback)
            closure->done_callback(closure);
    }

    c_array_set_size(stream->buffer.finished_write_closures, 0);
}
コード例 #3
0
ファイル: cg-pipeline-opengl.c プロジェクト: rig-project/rig
cg_texture_unit_t *
_cg_get_texture_unit(cg_device_t *dev, int index_)
{
    if (dev->texture_units->len < (index_ + 1)) {
        int i;
        int prev_len = dev->texture_units->len;
        dev->texture_units = c_array_set_size(dev->texture_units, index_ + 1);
        for (i = prev_len; i <= index_; i++) {
            cg_texture_unit_t *unit =
                &c_array_index(dev->texture_units, cg_texture_unit_t, i);

            texture_unit_init(dev, unit, i);
        }
    }

    return &c_array_index(dev->texture_units, cg_texture_unit_t, index_);
}