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_new(unsigned num_chunks)
{
struct music_buffer *buffer;
struct music_chunk *chunk;
music_buffer(unsigned _num_chunks)
:chunks(g_new(struct music_chunk, _num_chunks)),
num_chunks(_num_chunks),
available(chunks),
mutex(g_mutex_new())
#ifndef NDEBUG
, num_allocated(0)
#endif
{
assert(num_chunks > 0); assert(num_chunks > 0);
buffer = g_new(struct music_buffer, 1); struct music_chunk *chunk;
chunk = available = chunks;
buffer->chunks = g_new(struct music_chunk, num_chunks);
buffer->num_chunks = num_chunks;
chunk = buffer->available = buffer->chunks;
for (unsigned i = 1; i < num_chunks; ++i) { for (unsigned i = 1; i < num_chunks; ++i) {
chunk->next = &buffer->chunks[i]; chunk->next = &chunks[i];
chunk = chunk->next; chunk = chunk->next;
} }
chunk->next = NULL; chunk->next = nullptr;
}
buffer->mutex = g_mutex_new(); ~music_buffer() {
assert(chunks != nullptr);
assert(num_chunks > 0);
assert(num_allocated == 0);
#ifndef NDEBUG g_mutex_free(mutex);
buffer->num_allocated = 0; g_free(chunks);
#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