pa_assert(name);
pa_assert(e);
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu8(t, e->version);
pa_tagstruct_puts(t, e->profile);
pa_tagstruct_putu32(t, pa_hashmap_size(e->ports));
return NULL;
}
- t = pa_tagstruct_new(data.data, data.size);
+ t = pa_tagstruct_new_fixed(data.data, data.size);
e = entry_new();
if (pa_tagstruct_getu8(t, &e->version) < 0 ||
pa_assert(name);
pa_assert(e);
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu8(t, e->version);
pa_tagstruct_puts(t, e->description);
pa_tagstruct_put_boolean(t, e->user_set_description);
if (!pa_database_get(u->database, &key, &data))
goto fail;
- t = pa_tagstruct_new(data.data, data.size);
+ t = pa_tagstruct_new_fixed(data.data, data.size);
e = entry_new();
if (pa_tagstruct_getu8(t, &e->version) < 0 ||
PA_IDXSET_FOREACH(c, u->subscribed, idx) {
pa_tagstruct *t;
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_EXTENSION);
pa_tagstruct_putu32(t, 0);
pa_tagstruct_putu32(t, u->module->index);
if (pa_tagstruct_getu32(t, &command) < 0)
goto fail;
- reply = pa_tagstruct_new(NULL, 0);
+ reply = pa_tagstruct_new();
pa_tagstruct_putu32(reply, PA_COMMAND_REPLY);
pa_tagstruct_putu32(reply, tag);
PA_IDXSET_FOREACH(c, u->subscribed, idx) {
pa_tagstruct *t;
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_EXTENSION);
pa_tagstruct_putu32(t, 0);
pa_tagstruct_putu32(t, u->module->index);
pa_assert(name);
pa_assert(e);
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu8(t, e->version);
pa_tagstruct_put_boolean(t, e->port_valid);
pa_tagstruct_puts(t, e->port);
return NULL;
}
- t = pa_tagstruct_new(data.data, data.size);
+ t = pa_tagstruct_new_fixed(data.data, data.size);
e = entry_new();
if (pa_tagstruct_getu8(t, &e->version) < 0 ||
n_formats = pa_idxset_size(e->formats);
pa_assert(n_formats > 0);
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu8(t, e->version);
pa_tagstruct_put_boolean(t, e->volume_valid);
pa_tagstruct_put_channel_map(t, &e->channel_map);
if (!pa_database_get(u->database, &key, &data))
goto fail;
- t = pa_tagstruct_new(data.data, data.size);
+ t = pa_tagstruct_new_fixed(data.data, data.size);
e = perportentry_new(false);
if (pa_tagstruct_getu8(t, &e->version) < 0 ||
if (pa_tagstruct_getu32(t, &command) < 0)
goto fail;
- reply = pa_tagstruct_new(NULL, 0);
+ reply = pa_tagstruct_new();
pa_tagstruct_putu32(reply, PA_COMMAND_REPLY);
pa_tagstruct_putu32(reply, tag);
pa_assert(name);
pa_assert(e);
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu8(t, e->version);
pa_tagstruct_put_boolean(t, e->volume_valid);
pa_tagstruct_put_channel_map(t, &e->channel_map);
if (!pa_database_get(u->database, &key, &data))
goto fail;
- t = pa_tagstruct_new(data.data, data.size);
+ t = pa_tagstruct_new_fixed(data.data, data.size);
e = entry_new();
if (pa_tagstruct_getu8(t, &e->version) < 0 ||
PA_IDXSET_FOREACH(c, u->subscribed, idx) {
pa_tagstruct *t;
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_EXTENSION);
pa_tagstruct_putu32(t, 0);
pa_tagstruct_putu32(t, u->module->index);
if (pa_tagstruct_getu32(t, &command) < 0)
goto fail;
- reply = pa_tagstruct_new(NULL, 0);
+ reply = pa_tagstruct_new();
pa_tagstruct_putu32(reply, PA_COMMAND_REPLY);
pa_tagstruct_putu32(reply, tag);
if (!u->pstream)
return;
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
#ifdef TUNNEL_SINK
pa_tagstruct_putu32(t, PA_COMMAND_CORK_PLAYBACK_STREAM);
#else
uint32_t tag;
pa_assert(u);
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
#ifdef TUNNEL_SINK
pa_tagstruct_putu32(t, PA_COMMAND_GET_PLAYBACK_LATENCY);
#else
pa_get_user_name(un, sizeof(un)),
pa_get_host_name(hn, sizeof(hn)));
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
#ifdef TUNNEL_SINK
pa_tagstruct_putu32(t, PA_COMMAND_SET_PLAYBACK_STREAM_NAME);
#else
uint32_t tag;
pa_assert(u);
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_GET_SERVER_INFO);
pa_tagstruct_putu32(t, tag = u->ctag++);
pa_pstream_send_tagstruct(u->pstream, t);
pa_pdispatch_register_reply(u->pdispatch, tag, DEFAULT_TIMEOUT, server_info_cb, u, NULL);
#ifdef TUNNEL_SINK
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_GET_SINK_INPUT_INFO);
pa_tagstruct_putu32(t, tag = u->ctag++);
pa_tagstruct_putu32(t, u->device_index);
pa_pdispatch_register_reply(u->pdispatch, tag, DEFAULT_TIMEOUT, sink_input_info_cb, u, NULL);
if (u->sink_name) {
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_GET_SINK_INFO);
pa_tagstruct_putu32(t, tag = u->ctag++);
pa_tagstruct_putu32(t, PA_INVALID_INDEX);
}
#else
if (u->source_name) {
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_GET_SOURCE_INFO);
pa_tagstruct_putu32(t, tag = u->ctag++);
pa_tagstruct_putu32(t, PA_INVALID_INDEX);
pa_tagstruct *t;
pa_assert(u);
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_SUBSCRIBE);
pa_tagstruct_putu32(t, u->ctag++);
pa_tagstruct_putu32(t, PA_SUBSCRIPTION_MASK_SERVER|
pa_get_host_name(hn, sizeof(hn)));
#endif
- reply = pa_tagstruct_new(NULL, 0);
+ reply = pa_tagstruct_new();
pa_tagstruct_putu32(reply, PA_COMMAND_SET_CLIENT_NAME);
pa_tagstruct_putu32(reply, u->ctag++);
pa_pstream_send_tagstruct(u->pstream, reply);
/* We ignore the server's reply here */
- reply = pa_tagstruct_new(NULL, 0);
+ reply = pa_tagstruct_new();
if (u->version < 13)
/* Only for older PA versions we need to fill in the maxlength */
pa_pstream_set_receive_memblock_callback(u->pstream, pstream_memblock_callback, u);
#endif
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_AUTH);
pa_tagstruct_putu32(t, tag = u->ctag++);
pa_tagstruct_putu32(t, PA_PROTOCOL_VERSION);
u = sink->userdata;
pa_assert(u);
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_SET_SINK_INPUT_VOLUME);
pa_tagstruct_putu32(t, u->ctag++);
pa_tagstruct_putu32(t, u->device_index);
if (u->version < 11)
return;
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_SET_SINK_INPUT_MUTE);
pa_tagstruct_putu32(t, u->ctag++);
pa_tagstruct_putu32(t, u->device_index);
}
/* Ack the enable command */
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_ENABLE_SRBCHANNEL);
pa_tagstruct_putu32(t, c->srb_setup_tag);
pa_pstream_send_tagstruct(c->pstream, t);
pa_assert(c);
pa_assert(tag);
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, command);
pa_tagstruct_putu32(t, *tag = c->ctag++);
}
/* Send disable command back again */
- t2 = pa_tagstruct_new(NULL, 0);
+ t2 = pa_tagstruct_new();
pa_tagstruct_putu32(t2, PA_COMMAND_DISABLE_SRBCHANNEL);
pa_tagstruct_putu32(t2, tag);
pa_pstream_send_tagstruct(c->pstream, t2);
if (packet->length <= 8)
goto finish;
- ts = pa_tagstruct_new(packet->data, packet->length);
+ ts = pa_tagstruct_new_fixed(packet->data, packet->length);
if (pa_tagstruct_getu32(ts, &command) < 0 ||
pa_tagstruct_getu32(ts, &tag) < 0)
pa_tagstruct *t;
record_stream_assert_ref(r);
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_RECORD_STREAM_KILLED);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, r->index);
break;
}
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_REQUEST);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
#endif
/* Report that we're empty */
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_UNDERFLOW);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
pa_tagstruct *t;
/* Notify the user we're overflowed*/
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_OVERFLOW);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
pa_tagstruct *t;
/* Notify the user we started playback */
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_STARTED);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
if (s->connection->version >= 15) {
pa_tagstruct *t;
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
pa_tagstruct *t;
playback_stream_assert_ref(p);
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_STREAM_KILLED);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, p->index);
if (s->connection->version < 15)
return;
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_STREAM_EVENT);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
if (s->connection->version < 12)
return;
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_STREAM_SUSPENDED);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
if (s->connection->version < 12)
return;
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_STREAM_MOVED);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
if (s->connection->version < 15)
return;
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_RECORD_STREAM_EVENT);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
if (s->connection->version < 12)
return;
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_RECORD_STREAM_SUSPENDED);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
if (s->connection->version < 12)
return;
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_RECORD_STREAM_MOVED);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_putu32(t, s->index);
static pa_tagstruct *reply_new(uint32_t tag) {
pa_tagstruct *reply;
- reply = pa_tagstruct_new(NULL, 0);
+ reply = pa_tagstruct_new();
pa_tagstruct_putu32(reply, PA_COMMAND_REPLY);
pa_tagstruct_putu32(reply, tag);
return reply;
pa_srbchannel_export(srb, &srbt);
/* Send enable command to client */
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_ENABLE_SRBCHANNEL);
pa_tagstruct_putu32(t, (size_t) srb); /* tag */
fdlist[0] = srbt.readfd;
pa_native_connection_assert_ref(c);
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_SUBSCRIBE_EVENT);
pa_tagstruct_putu32(t, (uint32_t) -1);
pa_tagstruct_putu32(t, e);
if (c->version < 15)
return;
- t = pa_tagstruct_new(NULL, 0);
+ t = pa_tagstruct_new();
pa_tagstruct_putu32(t, PA_COMMAND_CLIENT_EVENT);
pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */
pa_tagstruct_puts(t, event);
void pa_pstream_send_error(pa_pstream *p, uint32_t tag, uint32_t error) {
pa_tagstruct *t;
- pa_assert_se(t = pa_tagstruct_new(NULL, 0));
+ pa_assert_se(t = pa_tagstruct_new());
pa_tagstruct_putu32(t, PA_COMMAND_ERROR);
pa_tagstruct_putu32(t, tag);
pa_tagstruct_putu32(t, error);
void pa_pstream_send_simple_ack(pa_pstream *p, uint32_t tag) {
pa_tagstruct *t;
- pa_assert_se(t = pa_tagstruct_new(NULL, 0));
+ pa_assert_se(t = pa_tagstruct_new());
pa_tagstruct_putu32(t, PA_COMMAND_REPLY);
pa_tagstruct_putu32(t, tag);
pa_pstream_send_tagstruct(p, t);
bool dynamic;
};
-pa_tagstruct *pa_tagstruct_new(const uint8_t* data, size_t length) {
+pa_tagstruct *pa_tagstruct_new(void) {
pa_tagstruct*t;
- pa_assert(!data || (data && length));
+ t = pa_xnew(pa_tagstruct, 1);
+ t->data = NULL;
+ t->allocated = t->length = 0;
+ t->rindex = 0;
+ t->dynamic = true;
+
+ return t;
+}
+
+pa_tagstruct *pa_tagstruct_new_fixed(const uint8_t* data, size_t length) {
+ pa_tagstruct*t;
+
+ pa_assert(data && length);
t = pa_xnew(pa_tagstruct, 1);
t->data = (uint8_t*) data;
- t->allocated = t->length = data ? length : 0;
+ t->allocated = t->length = length;
t->rindex = 0;
- t->dynamic = !data;
+ t->dynamic = false;
return t;
}
PA_TAG_FORMAT_INFO = 'f',
};
-pa_tagstruct *pa_tagstruct_new(const uint8_t* data, size_t length);
+pa_tagstruct *pa_tagstruct_new(void);
+pa_tagstruct *pa_tagstruct_new_fixed(const uint8_t* data, size_t length);
void pa_tagstruct_free(pa_tagstruct*t);
uint8_t* pa_tagstruct_free_data(pa_tagstruct*t, size_t *l);