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.
This commit is contained in:
parent
689a3a1c5e
commit
b22317458c
2 changed files with 12 additions and 0 deletions
|
@ -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();
|
||||
|
|
|
@ -89,6 +89,8 @@ public:
|
|||
explicit X11Renderer(DecoratedClientImpl *client);
|
||||
virtual ~X11Renderer();
|
||||
|
||||
void reparent(Deleted *deleted) override;
|
||||
|
||||
protected:
|
||||
void render() override;
|
||||
|
||||
|
|
Loading…
Reference in a new issue