From eecf602476ff5b51bdc08f8fd0e4aa70d2b0ef5a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 20 Jun 2004 01:12:13 +0000 Subject: partial implementation of native protocol git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@30 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/packet.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'src/packet.c') diff --git a/src/packet.c b/src/packet.c index 086e4b2a..47fce919 100644 --- a/src/packet.c +++ b/src/packet.c @@ -3,7 +3,7 @@ #include "packet.h" -struct packet* packet_new(uint32_t length) { +struct packet* packet_new(size_t length) { struct packet *p; assert(length); p = malloc(sizeof(struct packet)+length); @@ -11,9 +11,23 @@ struct packet* packet_new(uint32_t length) { p->ref = 1; p->length = length; + p->data = (uint8_t*) (p+1); + p->type = PACKET_APPENDED; return p; } +struct packet* packet_dynamic(uint8_t* data, size_t length) { + struct packet *p; + assert(data && length); + p = malloc(sizeof(struct packet)); + assert(p); + + p->ref = 1; + p->length = length; + p->data = data; + p->type = PACKET_DYNAMIC; +} + struct packet* packet_ref(struct packet *p) { assert(p && p->ref >= 1); p->ref++; @@ -24,6 +38,9 @@ void packet_unref(struct packet *p) { assert(p && p->ref >= 1); p->ref--; - if (p->ref == 0) + if (p->ref == 0) { + if (p->type == PACKET_DYNAMIC) + free(p->data); free(p); + } } -- cgit