[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kde-workspace] kwin: Improve multi-head detection for OpenGLIsUnsafe
From: Martin_Gräßlin <mgraesslin () kde ! org>
Date: 2013-05-27 6:16:49
Message-ID: 20130527061649.462B2A605B () git ! kde ! org
[Download RAW message or body]
Git commit e136ac4a4f4184da840df25ead926688892e9111 by Martin Gräßlin.
Committed on 24/05/2013 at 14:50.
Pushed by graesslin into branch 'master'.
Improve multi-head detection for OpenGLIsUnsafe
This was currently basically broken:
* Screen number got always attached
* openGLIsBroken did not check for screen number
-> KCM reported "everything is fine" while it wasn't
Now changed to:
* only attach screen number if it is a multi-head setup
* use same logic in both Composite and CompositingPrefs
Still problematic:
* kcm is not multi-head aware so it will report everything is fine in
case of a broken multi-head setup
REVIEW: 110631
M +2 -1 kwin/composite.cpp
M +9 -3 kwin/compositingprefs.cpp
http://commits.kde.org/kde-workspace/e136ac4a4f4184da840df25ead926688892e9111
diff --git a/kwin/composite.cpp b/kwin/composite.cpp
index eddd663..bb00d5f 100644
--- a/kwin/composite.cpp
+++ b/kwin/composite.cpp
@@ -162,6 +162,7 @@ void Compositor::setup()
}
extern int screen_number; // main.cpp
+extern bool is_multihead;
void Compositor::slotCompositingOptionsInitialized()
{
@@ -182,7 +183,7 @@ void Compositor::slotCompositingOptionsInitialized()
// Some broken drivers crash on glXQuery() so to prevent constant KWin \
crashes: KSharedConfigPtr unsafeConfigPtr = KGlobal::config();
KConfigGroup unsafeConfig(unsafeConfigPtr, "Compositing");
- const QString openGLIsUnsafe = "OpenGLIsUnsafe" + \
QString::number(screen_number); + const QString openGLIsUnsafe = \
"OpenGLIsUnsafe" + (is_multihead ? QString::number(screen_number) : ""); if \
(unsafeConfig.readEntry(openGLIsUnsafe, false))
kWarning(1212) << "KWin has detected that your OpenGL library is unsafe \
to use"; else {
diff --git a/kwin/compositingprefs.cpp b/kwin/compositingprefs.cpp
index 729c2f2..b79106c 100644
--- a/kwin/compositingprefs.cpp
+++ b/kwin/compositingprefs.cpp
@@ -38,6 +38,9 @@ along with this program. If not, see \
<http://www.gnu.org/licenses/>. namespace KWin
{
+extern int screen_number; // main.cpp
+extern bool is_multihead;
+
CompositingPrefs::CompositingPrefs()
: mEnableDirectRendering(true)
{
@@ -49,15 +52,17 @@ CompositingPrefs::~CompositingPrefs()
bool CompositingPrefs::openGlIsBroken()
{
- return KConfigGroup(KGlobal::config(), \
"Compositing").readEntry("OpenGLIsUnsafe", false); + const QString \
unsafeKey("OpenGLIsUnsafe" + (is_multihead ? QString::number(screen_number) : "")); + \
return KConfigGroup(KGlobal::config(), "Compositing").readEntry(unsafeKey, false); }
bool CompositingPrefs::compositingPossible()
{
// first off, check whether we figured that we'll crash on detection because of \
a buggy driver KConfigGroup gl_workaround_group(KGlobal::config(), "Compositing");
+ const QString unsafeKey("OpenGLIsUnsafe" + (is_multihead ? \
QString::number(screen_number) : "")); if (gl_workaround_group.readEntry("Backend", \
"OpenGL") == "OpenGL" &&
- gl_workaround_group.readEntry("OpenGLIsUnsafe", false))
+ gl_workaround_group.readEntry(unsafeKey, false))
return false;
if (!Xcb::Extensions::self()->isCompositeAvailable()) {
@@ -85,8 +90,9 @@ QString CompositingPrefs::compositingNotPossibleReason()
{
// first off, check whether we figured that we'll crash on detection because of \
a buggy driver KConfigGroup gl_workaround_group(KGlobal::config(), "Compositing");
+ const QString unsafeKey("OpenGLIsUnsafe" + (is_multihead ? \
QString::number(screen_number) : "")); if (gl_workaround_group.readEntry("Backend", \
"OpenGL") == "OpenGL" &&
- gl_workaround_group.readEntry("OpenGLIsUnsafe", false))
+ gl_workaround_group.readEntry(unsafeKey, false))
return i18n("<b>OpenGL compositing (the default) has crashed KWin in the \
past.</b><br>" "This was most likely due to a driver bug."
"<p>If you think that you have meanwhile upgraded to a stable \
driver,<br>"
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic