buffer: don't use crazy listener::emit()

This commit is contained in:
Vaxry
2025-06-24 15:23:48 +02:00
parent cf7e3aa448
commit aea8132001
2 changed files with 11 additions and 4 deletions

View File

@@ -29,12 +29,17 @@ bool IHLBuffer::locked() {
void IHLBuffer::onBackendRelease(const std::function<void()>& fn) {
if (m_hlEvents.backendRelease) {
m_hlEvents.backendRelease->emit(nullptr);
if (m_backendReleaseQueuedFn)
m_backendReleaseQueuedFn();
Debug::log(LOG, "backendRelease emitted early");
}
m_hlEvents.backendRelease = events.backendRelease.registerListener([this, fn](std::any) {
fn();
m_backendReleaseQueuedFn = fn;
m_hlEvents.backendRelease = events.backendRelease.registerListener([this](std::any) {
if (m_backendReleaseQueuedFn)
m_backendReleaseQueuedFn();
m_backendReleaseQueuedFn = nullptr;
m_hlEvents.backendRelease.reset();
});
}

View File

@@ -37,7 +37,9 @@ class IHLBuffer : public Aquamarine::IBuffer {
} m_hlEvents;
private:
int m_locks = 0;
int m_locks = 0;
std::function<void()> m_backendReleaseQueuedFn;
friend class CHLBufferReference;
};