Override ::reparent in X11Renderer
Required to stop and disconnect the timer. Otherwise it's possible that the render is invoked after the Client got destroyed. This happened for example with e.g. opening Kickoff.icc-effect-5.14.5
parent
689a3a1c5e
commit
b22317458c
|
@ -100,6 +100,16 @@ X11Renderer::~X11Renderer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void X11Renderer::reparent(Deleted *deleted)
|
||||||
|
{
|
||||||
|
if (m_scheduleTimer->isActive()) {
|
||||||
|
m_scheduleTimer->stop();
|
||||||
|
disconnect(m_scheduleTimer, &QTimer::timeout, this, &X11Renderer::render);
|
||||||
|
disconnect(this, &Renderer::renderScheduled, m_scheduleTimer, static_cast<void (QTimer::*)()>(&QTimer::start));
|
||||||
|
}
|
||||||
|
Renderer::reparent(deleted);
|
||||||
|
}
|
||||||
|
|
||||||
void X11Renderer::render()
|
void X11Renderer::render()
|
||||||
{
|
{
|
||||||
const QRegion scheduled = getScheduled();
|
const QRegion scheduled = getScheduled();
|
||||||
|
|
|
@ -89,6 +89,8 @@ public:
|
||||||
explicit X11Renderer(DecoratedClientImpl *client);
|
explicit X11Renderer(DecoratedClientImpl *client);
|
||||||
virtual ~X11Renderer();
|
virtual ~X11Renderer();
|
||||||
|
|
||||||
|
void reparent(Deleted *deleted) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void render() override;
|
void render() override;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue