From 3d7ce5a86010240262bdd1763218b3beeda21c5e Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 1 Sep 2019 18:07:16 -0700 Subject: Use global placement new for AL object batches --- al/buffer.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'al/buffer.cpp') diff --git a/al/buffer.cpp b/al/buffer.cpp index df2496cb..03b68038 100644 --- a/al/buffer.cpp +++ b/al/buffer.cpp @@ -254,13 +254,9 @@ ALbuffer *AllocBuffer(ALCcontext *context) ); auto lidx = static_cast(std::distance(device->BufferList.begin(), sublist)); - ALbuffer *buffer{nullptr}; ALsizei slidx{0}; if LIKELY(sublist != device->BufferList.end()) - { slidx = CTZ64(sublist->FreeMask); - buffer = sublist->Buffers + slidx; - } else { /* Don't allocate so many list entries that the 32-bit ID could @@ -283,10 +279,10 @@ ALbuffer *AllocBuffer(ALCcontext *context) } slidx = 0; - buffer = sublist->Buffers + slidx; } - buffer = new (buffer) ALbuffer{}; + ALbuffer *buffer{::new (sublist->Buffers + slidx) ALbuffer{}}; + /* Add 1 to avoid buffer ID 0. */ buffer->id = ((lidx<<6) | slidx) + 1; -- cgit v1.2.3