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:
parent
bd4650482e
commit
a20a4327f5
1 changed files with 6 additions and 2 deletions
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue