diff --git a/eglonxbackend.cpp b/eglonxbackend.cpp index 9af3c0d507..ab692d7cb5 100644 --- a/eglonxbackend.cpp +++ b/eglonxbackend.cpp @@ -177,7 +177,6 @@ bool EglOnXBackend::initRenderingContext() const EGLint context_attribs_31_core[] = { EGL_CONTEXT_MAJOR_VERSION_KHR, 3, EGL_CONTEXT_MINOR_VERSION_KHR, 1, - EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR, EGL_NONE }; diff --git a/glxbackend.cpp b/glxbackend.cpp index 11f7017bf5..545dedf6cf 100644 --- a/glxbackend.cpp +++ b/glxbackend.cpp @@ -155,7 +155,7 @@ bool GlxBackend::initRenderingContext() const int attribs_31_core_robustness[] = { GLX_CONTEXT_MAJOR_VERSION_ARB, 3, GLX_CONTEXT_MINOR_VERSION_ARB, 1, - GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB | GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB, + GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB, GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB, GLX_LOSE_CONTEXT_ON_RESET_ARB, 0 }; @@ -163,7 +163,6 @@ bool GlxBackend::initRenderingContext() const int attribs_31_core[] = { GLX_CONTEXT_MAJOR_VERSION_ARB, 3, GLX_CONTEXT_MINOR_VERSION_ARB, 1, - GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB, 0 }; diff --git a/workspace.cpp b/workspace.cpp index 8237eeda9b..3ec6979500 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -420,8 +420,13 @@ Workspace::~Workspace() // TODO: grabXServer(); // Use stacking_order, so that kwin --replace keeps stacking order - for (ToplevelList::iterator it = stacking_order.begin(), end = stacking_order.end(); it != end; ++it) { - Client *c = qobject_cast(*it); + const ToplevelList stack = stacking_order; + // "mutex" the stackingorder, since anything trying to access it from now on will find + // many dangeling pointers and crash + stacking_order.clear(); + + for (ToplevelList::const_iterator it = stack.constBegin(), end = stack.constEnd(); it != end; ++it) { + Client *c = qobject_cast(const_cast(*it)); if (!c) { continue; }