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(toplevel, &Toplevel::windowClosed, this, &PipeWireStream::stopStreaming);
|
||||||
connect(this, &PipeWireStream::startStreaming, this, &WindowStream::startFeeding);
|
connect(this, &PipeWireStream::startStreaming, this, &WindowStream::startFeeding);
|
||||||
|
connect(this, &PipeWireStream::stopStreaming, this, &WindowStream::stopFeeding);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void startFeeding() {
|
void startFeeding() {
|
||||||
auto scene = Compositor::self()->scene();
|
connect(Compositor::self()->scene(), &Scene::frameRendered, this, &WindowStream::bufferToStream);
|
||||||
connect(scene, &Scene::frameRendered, this, &WindowStream::bufferToStream);
|
|
||||||
|
|
||||||
connect(m_toplevel, &Toplevel::damaged, this, &WindowStream::includeDamage);
|
connect(m_toplevel, &Toplevel::damaged, this, &WindowStream::includeDamage);
|
||||||
m_damagedRegion = m_toplevel->visibleGeometry();
|
m_damagedRegion = m_toplevel->visibleGeometry();
|
||||||
m_toplevel->addRepaintFull();
|
m_toplevel->addRepaintFull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void stopFeeding() {
|
||||||
|
disconnect(Compositor::self()->scene(), &Scene::frameRendered, this, &WindowStream::bufferToStream);
|
||||||
|
}
|
||||||
|
|
||||||
void includeDamage(Toplevel *toplevel, const QRegion &damage) {
|
void includeDamage(Toplevel *toplevel, const QRegion &damage) {
|
||||||
Q_ASSERT(m_toplevel == toplevel);
|
Q_ASSERT(m_toplevel == toplevel);
|
||||||
m_damagedRegion |= damage;
|
m_damagedRegion |= damage;
|
||||||
|
|
Loading…
Reference in a new issue