Mir

Comment 9 for bug 1317370

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

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).