<table><tr><td style="">graesslin created this revision.<br />graesslin added reviewers: KWin, Plasma.<br />Restricted Application added a project: KWin.<br />Restricted Application added subscribers: kwin, plasma-devel.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D3127" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>With nouveau driver it can happen that KWin gets frozen when first trying<br />
to render with OpenGL. This results in a freeze of the complete desktop<br />
as the compositor is non functional.</p>

<p>Our OpenGL breakage detection is only able to detect crashes, but not<br />
freezes. This change improves it by also added a freeze protection.</p>

<p>In the PreInit stage a thread is started with a QTimer of 15 sec. If the<br />
timer fires, qFatal is triggered to terminate KWin. This can only happen<br />
if the creation of the OpenGL compositor takes longer than said 15 sec.</p>

<p>In the PostInit stage the timer gets deleted and the thread stopeed<br />
again.</p>

<p>Thus if a freeze is detected the OpenGL unsafe protection is written into<br />
the config. KWin aborts and gets restarted by DrKonqui. The new KWin<br />
instance will no longer try to activate the freezing OpenGL as the<br />
protection is set.</p>

<p>If KWin doesn't freeze the protection is removed from the config as<br />
we are used to.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>rKWIN KWin</div></div></div><br /><div><strong>BRANCH</strong><div><div>opengl-freeze-protection-5.8</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D3127" rel="noreferrer">https://phabricator.kde.org/D3127</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>plugins/platforms/x11/standalone/x11_platform.cpp<br />
plugins/platforms/x11/standalone/x11_platform.h</div></div></div><br /><div><strong>EMAIL PREFERENCES</strong><div><a href="https://phabricator.kde.org/settings/panel/emailpreferences/" rel="noreferrer">https://phabricator.kde.org/settings/panel/emailpreferences/</a></div></div><br /><div><strong>To: </strong>graesslin, KWin, Plasma<br /><strong>Cc: </strong>plasma-devel, kwin, lesliezhai, ali-mohamed, hardening, jensreuterberg, abetts, sebas<br /></div>