screencasting: Make sure we don't stream after we've stopped a stream

When doing some (intense) testing I've seen it crash. This will prevent
it for good.
This commit is contained in:
Aleix Pol 2021-05-18 02:24:46 +02:00 committed by Aleix Pol Gonzalez
parent bd4650482e
commit a20a4327f5

View file

@ -49,18 +49,22 @@ public:
}
connect(toplevel, &Toplevel::windowClosed, this, &PipeWireStream::stopStreaming);
connect(this, &PipeWireStream::startStreaming, this, &WindowStream::startFeeding);
connect(this, &PipeWireStream::stopStreaming, this, &WindowStream::stopFeeding);
}
private:
void startFeeding() {
auto scene = Compositor::self()->scene();
connect(scene, &Scene::frameRendered, this, &WindowStream::bufferToStream);
connect(Compositor::self()->scene(), &Scene::frameRendered, this, &WindowStream::bufferToStream);
connect(m_toplevel, &Toplevel::damaged, this, &WindowStream::includeDamage);
m_damagedRegion = m_toplevel->visibleGeometry();
m_toplevel->addRepaintFull();
}
void stopFeeding() {
disconnect(Compositor::self()->scene(), &Scene::frameRendered, this, &WindowStream::bufferToStream);
}
void includeDamage(Toplevel *toplevel, const QRegion &damage) {
Q_ASSERT(m_toplevel == toplevel);
m_damagedRegion |= damage;