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
Martin Gräßlin 2014-08-11 11:41:08 +02:00
parent 689a3a1c5e
commit b22317458c
2 changed files with 12 additions and 0 deletions

View File

@ -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()
{
const QRegion scheduled = getScheduled();

View File

@ -89,6 +89,8 @@ public:
explicit X11Renderer(DecoratedClientImpl *client);
virtual ~X11Renderer();
void reparent(Deleted *deleted) override;
protected:
void render() override;