Skip to content

Commit aea8132

Browse files
committed
buffer: don't use crazy listener::emit()
1 parent cf7e3aa commit aea8132

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/protocols/types/Buffer.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,17 @@ bool IHLBuffer::locked() {
2929

3030
void IHLBuffer::onBackendRelease(const std::function<void()>& fn) {
3131
if (m_hlEvents.backendRelease) {
32-
m_hlEvents.backendRelease->emit(nullptr);
32+
if (m_backendReleaseQueuedFn)
33+
m_backendReleaseQueuedFn();
3334
Debug::log(LOG, "backendRelease emitted early");
3435
}
3536

36-
m_hlEvents.backendRelease = events.backendRelease.registerListener([this, fn](std::any) {
37-
fn();
37+
m_backendReleaseQueuedFn = fn;
38+
39+
m_hlEvents.backendRelease = events.backendRelease.registerListener([this](std::any) {
40+
if (m_backendReleaseQueuedFn)
41+
m_backendReleaseQueuedFn();
42+
m_backendReleaseQueuedFn = nullptr;
3843
m_hlEvents.backendRelease.reset();
3944
});
4045
}

src/protocols/types/Buffer.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ class IHLBuffer : public Aquamarine::IBuffer {
3737
} m_hlEvents;
3838

3939
private:
40-
int m_locks = 0;
40+
int m_locks = 0;
41+
42+
std::function<void()> m_backendReleaseQueuedFn;
4143

4244
friend class CHLBufferReference;
4345
};

0 commit comments

Comments
 (0)