mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-09-24 15:16:38 +00:00
Allocator refactor
This commit is contained in:
@@ -1,26 +1,27 @@
|
||||
#include "GpAudioBufferXAudio2.h"
|
||||
#include "GpAudioChannelXAudio2.h"
|
||||
#include "GpAudioDriverXAudio2.h"
|
||||
#include "IGpAllocator.h"
|
||||
#include "IGpAudioChannelCallbacks.h"
|
||||
#include "IGpLogDriver.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <new>
|
||||
|
||||
GpAudioChannelXAudio2 *GpAudioChannelXAudio2::Create(GpAudioDriverXAudio2 *driver)
|
||||
GpAudioChannelXAudio2 *GpAudioChannelXAudio2::Create(IGpAllocator *alloc, GpAudioDriverXAudio2 *driver)
|
||||
{
|
||||
IGpLogDriver *logger = driver->GetProperties().m_logger;
|
||||
|
||||
void *storage = malloc(sizeof(GpAudioChannelXAudio2));
|
||||
void *storage = alloc->Realloc(nullptr, sizeof(GpAudioChannelXAudio2));
|
||||
if (!storage)
|
||||
{
|
||||
if (!logger)
|
||||
logger->Printf(IGpLogDriver::Category_Error, "GpAudioChannelXAudio2::Create failed, malloc failed");
|
||||
logger->Printf(IGpLogDriver::Category_Error, "GpAudioChannelXAudio2::Create failed, alloc failed");
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
GpAudioChannelXAudio2 *channel = new (storage) GpAudioChannelXAudio2(driver);
|
||||
GpAudioChannelXAudio2 *channel = new (storage) GpAudioChannelXAudio2(alloc, driver);
|
||||
if (!channel->Init())
|
||||
{
|
||||
if (!logger)
|
||||
@@ -110,8 +111,9 @@ void GpAudioChannelXAudio2::Stop()
|
||||
|
||||
void GpAudioChannelXAudio2::Destroy()
|
||||
{
|
||||
IGpAllocator *alloc = m_alloc;
|
||||
this->~GpAudioChannelXAudio2();
|
||||
free(this);
|
||||
alloc->Realloc(this, 0);
|
||||
}
|
||||
|
||||
void GpAudioChannelXAudio2::OnBufferEnd()
|
||||
@@ -120,12 +122,13 @@ void GpAudioChannelXAudio2::OnBufferEnd()
|
||||
m_contextCallbacks->NotifyBufferFinished();
|
||||
}
|
||||
|
||||
GpAudioChannelXAudio2::GpAudioChannelXAudio2(GpAudioDriverXAudio2 *driver)
|
||||
GpAudioChannelXAudio2::GpAudioChannelXAudio2(IGpAllocator *alloc, GpAudioDriverXAudio2 *driver)
|
||||
: m_driver(driver)
|
||||
, m_xAudioCallbacks(this)
|
||||
, m_sourceVoice(nullptr)
|
||||
, m_contextCallbacks(nullptr)
|
||||
, m_voiceState(VoiceState_Idle)
|
||||
, m_alloc(alloc)
|
||||
{
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user