<table><tr><td style="">davidedmundson created this revision.<br />davidedmundson added a reviewer: Plasma.<br />Herald added a project: Frameworks.<br />Herald added a subscriber: kde-frameworks-devel.<br />davidedmundson requested review of this revision.
</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/D20656">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>Currently the QOpenGLProgram was static. This works when you only have<br />
one OpenGL context that is never invalidated.</p>

<p>Instead we shoul have a new program created for each context. There is<br />
no benefit of being static when we can use the cached shader loading.</p>

<p>As we need a program per context, we would need to handle windowChanged<br />
and sceneGraphInvalidated manually. Instead we can scope the program to<br />
the QSGNode which will be deleted and recreated on the render thread<br />
automatically by the scene graph backend.</p>

<p>We can also drop ManagedTextureNode and use<br />
QSGSimpleTextureNode::setOwnsTexture which does the same thing.</p>

<p>BUG: 403453</p></div></div><br /><div><strong>TEST PLAN</strong><div><p>Created a CPU load viewer on my panel<br />
Dragged it to my desktop<br />
Previously that didn't render anything<br />
Now it does</p>

<p>I am quite confident it will fix the crashes that we<br />
see on window moves and handling sceneGraphInvalidated</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R296 KDeclarative</div></div></div><br /><div><strong>BRANCH</strong><div><div>master</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D20656">https://phabricator.kde.org/D20656</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>src/qmlcontrols/kquickcontrolsaddons/plotter.cpp<br />
src/qmlcontrols/kquickcontrolsaddons/plotter.h</div></div></div><br /><div><strong>To: </strong>davidedmundson, Plasma<br /><strong>Cc: </strong>kde-frameworks-devel, michaelh, ngraham, bruns<br /></div>