<table><tr><td style="">antlarr created this revision.<br />antlarr added reviewers: KWin, Plasma, davidedmundson.<br />antlarr added subscribers: davidedmundson, plasma-devel, kwin.<br />antlarr added a project: Plasma.<br />Restricted Application edited projects, added KWin; removed Plasma.
</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/D3132" 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>

<p>Check for freezes for the first n frames, not just the first</p>

<p>This patch changes the freeze detection code to detect freezes in the<br />
first 30 frames (by default, users can change that with the<br />
KWIN_MAX_FRAMES_TESTED environment variable). This detects<br />
successfully the freezes associated to nouveau drivers<br />
in <a href="https://bugzilla.suse.com/show_bug.cgi?id=1005323" class="remarkup-link" target="_blank" rel="noreferrer">https://bugzilla.suse.com/show_bug.cgi?id=1005323</a></p></div></div><br /><div><strong>REPOSITORY</strong><div><div>rKWIN KWin</div></div></div><br /><div><strong>BRANCH</strong><div><div>arcpatch-D3127_1</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D3132" rel="noreferrer">https://phabricator.kde.org/D3132</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>composite.cpp<br />
composite.h<br />
platform.h<br />
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>antlarr, KWin, Plasma, davidedmundson<br /><strong>Cc: </strong>kwin, plasma-devel, davidedmundson, lesliezhai, ali-mohamed, hardening, jensreuterberg, abetts, sebas<br /></div>