Commit f0be6a4b authored by Max Kellermann's avatar Max Kellermann

MusicBuffer: allocate with new/delete

parent bdab5d5f
...@@ -37,49 +37,49 @@ struct music_buffer { ...@@ -37,49 +37,49 @@ struct music_buffer {
#ifndef NDEBUG #ifndef NDEBUG
unsigned num_allocated; unsigned num_allocated;
#endif #endif
};
struct music_buffer * music_buffer(unsigned _num_chunks)
music_buffer_new(unsigned num_chunks) :chunks(g_new(struct music_chunk, _num_chunks)),
{ num_chunks(_num_chunks),
struct music_buffer *buffer; available(chunks),
struct music_chunk *chunk; mutex(g_mutex_new())
#ifndef NDEBUG
assert(num_chunks > 0); , num_allocated(0)
#endif
buffer = g_new(struct music_buffer, 1); {
assert(num_chunks > 0);
buffer->chunks = g_new(struct music_chunk, num_chunks); struct music_chunk *chunk;
buffer->num_chunks = num_chunks; chunk = available = chunks;
chunk = buffer->available = buffer->chunks; for (unsigned i = 1; i < num_chunks; ++i) {
chunk->next = &chunks[i];
chunk = chunk->next;
}
for (unsigned i = 1; i < num_chunks; ++i) { chunk->next = nullptr;
chunk->next = &buffer->chunks[i];
chunk = chunk->next;
} }
chunk->next = NULL; ~music_buffer() {
assert(chunks != nullptr);
assert(num_chunks > 0);
assert(num_allocated == 0);
buffer->mutex = g_mutex_new(); g_mutex_free(mutex);
g_free(chunks);
#ifndef NDEBUG }
buffer->num_allocated = 0; };
#endif
return buffer; struct music_buffer *
music_buffer_new(unsigned num_chunks)
{
return new music_buffer(num_chunks);
} }
void void
music_buffer_free(struct music_buffer *buffer) music_buffer_free(struct music_buffer *buffer)
{ {
assert(buffer->chunks != NULL); delete buffer;
assert(buffer->num_chunks > 0);
assert(buffer->num_allocated == 0);
g_mutex_free(buffer->mutex);
g_free(buffer->chunks);
g_free(buffer);
} }
unsigned unsigned
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment