Mir

Comment 1 for bug 1319765

Revision history for this message
Alexandros Frantzis (afrantzis) wrote : Re: [regression] [BufferQueue] client freezes as no buffer is returned on compositor_release.

> 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?

If the buffer is not released (and assuming nbuffers >1), then this means that the buffer is stored in "current_compositor_buffer" and therefore is not lost. The current_compositor_buffer is released to the client when in compositor_acquire() we decide that it's time to give out a newer buffer (i.e. !should_use_current_buffer).

So, everything seems to be in order here. Of course, there may be a sequence of actions that is problematic and we haven't yet discovered, but we need more information to investigate further.