Found roughly the cause of the freeze. This callback randomly stops calling back:
connect(window(), &QQuickWindow::frameSwapped, m_surface, &MirSurfaceInterface::onCompositorSwappedBuffers, (Qt::ConnectionType) (Qt::DirectConnection | Qt::UniqueConnection));
and so this function no longer retrieves new buffers, just returns early:
void MirSurface::updateTexture() { QMutexLocker locker(&m_mutex);
if (m_textureUpdated) { return; }
Found roughly the cause of the freeze. This callback randomly stops calling back:
and so this function no longer retrieves new buffers, just returns early:
void MirSurface: :updateTexture( )
{
QMutexLocker locker(&m_mutex);
if (m_textureUpdated) {
return;
}