Mir

Comment 12 for bug 1317370

Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

Following an observation of Alexandros[1], changing the end of BufferQueue::compositor_release(...) to the following has the same effect.

    if (current_compositor_buffer != buffer.get())
        release(buffer.get(), std::move(lock));
    else
    {
        lock.unlock();
        std::this_thread::yield(); // EXPERIMENTAL
    }

This has the feel of a synchronization issue in BufferQueue. I'll look deeper tomorrow.

[1] https://code.launchpad.net/~kdub/mir/composition-signalling/+merge/220974/comments/531615