if (current_compositor_buffer != buffer.get() && nbuffers > 1) release(buffer.get(), std::move(lock));
// else ... what happens to buffer? It's not in any queue any more, is it?
}
I'm experiencing this in another branch and it results in my client freezing in some circumstances (because the client never receives a callback).
Ah, it appears there is a code path where BufferQueue might lose track of a buffer:
void mc::BufferQueue ::compositor_ release( std::shared_ ptr<graphics: :Buffer> const& buffer)
{
......
if (current_ compositor_ buffer != buffer.get() && nbuffers > 1)
release( buffer. get(), std::move(lock));
// else ... what happens to buffer? It's not in any queue any more, is it?
}
I'm experiencing this in another branch and it results in my client freezing in some circumstances (because the client never receives a callback).