buffer: don't use crazy listener::emit()
This commit is contained in:
parent
cf7e3aa448
commit
aea8132001
2 changed files with 11 additions and 4 deletions
|
|
@ -29,12 +29,17 @@ bool IHLBuffer::locked() {
|
||||||
|
|
||||||
void IHLBuffer::onBackendRelease(const std::function<void()>& fn) {
|
void IHLBuffer::onBackendRelease(const std::function<void()>& fn) {
|
||||||
if (m_hlEvents.backendRelease) {
|
if (m_hlEvents.backendRelease) {
|
||||||
m_hlEvents.backendRelease->emit(nullptr);
|
if (m_backendReleaseQueuedFn)
|
||||||
|
m_backendReleaseQueuedFn();
|
||||||
Debug::log(LOG, "backendRelease emitted early");
|
Debug::log(LOG, "backendRelease emitted early");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_hlEvents.backendRelease = events.backendRelease.registerListener([this, fn](std::any) {
|
m_backendReleaseQueuedFn = fn;
|
||||||
fn();
|
|
||||||
|
m_hlEvents.backendRelease = events.backendRelease.registerListener([this](std::any) {
|
||||||
|
if (m_backendReleaseQueuedFn)
|
||||||
|
m_backendReleaseQueuedFn();
|
||||||
|
m_backendReleaseQueuedFn = nullptr;
|
||||||
m_hlEvents.backendRelease.reset();
|
m_hlEvents.backendRelease.reset();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,9 @@ class IHLBuffer : public Aquamarine::IBuffer {
|
||||||
} m_hlEvents;
|
} m_hlEvents;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_locks = 0;
|
int m_locks = 0;
|
||||||
|
|
||||||
|
std::function<void()> m_backendReleaseQueuedFn;
|
||||||
|
|
||||||
friend class CHLBufferReference;
|
friend class CHLBufferReference;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue