From 23724e35b21c949fa8188b77071c7f3d05457a4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= Date: Fri, 12 Sep 2008 10:26:19 +0000 Subject: [PATCH] Add an advanced option to override kwin's compositing checks (i.e. currently it allows to enable compositing even if self-check fails). Not recommended of course, and it's be still nice to get self-check work reliably. CCBUG: 170085 svn path=/trunk/KDE/kdebase/workspace/; revision=860196 --- kcmkwin/kwincompositing/advanced.cpp | 6 +++++- kcmkwin/kwincompositing/advanced.ui | 11 +++++++++++ options.cpp | 1 + options.h | 1 + scene_opengl.cpp | 5 +++++ 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/kcmkwin/kwincompositing/advanced.cpp b/kcmkwin/kwincompositing/advanced.cpp index d119388682..ea53093eb9 100644 --- a/kcmkwin/kwincompositing/advanced.cpp +++ b/kcmkwin/kwincompositing/advanced.cpp @@ -50,6 +50,7 @@ KWinAdvancedCompositingOptions::KWinAdvancedCompositingOptions(QWidget* parent, connect(ui.compositingType, SIGNAL(currentIndexChanged(int)), this, SLOT(changed())); connect(ui.windowThumbnails, SIGNAL(activated(int)), this, SLOT(changed())); + connect(ui.disableChecks, SIGNAL(toggled(bool)), this, SLOT(changed())); connect(ui.glMode, SIGNAL(currentIndexChanged(int)), this, SLOT(changed())); connect(ui.glTextureFilter, SIGNAL(currentIndexChanged(int)), this, SLOT(changed())); connect(ui.glDirect, SIGNAL(toggled(bool)), this, SLOT(changed())); @@ -131,6 +132,7 @@ void KWinAdvancedCompositingOptions::load() ui.windowThumbnails->setCurrentIndex( 2 ); else // shown, or default ui.windowThumbnails->setCurrentIndex( 1 ); + ui.disableChecks->setChecked( config.readEntry( "DisableChecks", false )); QString glMode = config.readEntry("GLMode", "TFP"); ui.glMode->setCurrentIndex((glMode == "TFP") ? 0 : ((glMode == "SHM") ? 1 : 2)); @@ -160,7 +162,8 @@ void KWinAdvancedCompositingOptions::save() || config.readEntry("GLMode", "TFP") != glModes[ui.glMode->currentIndex()] || config.readEntry("GLDirect", mDefaultPrefs->enableDirectRendering()) != ui.glDirect->isChecked() - || config.readEntry("GLVSync", mDefaultPrefs->enableVSync()) != ui.glVSync->isChecked()) + || config.readEntry("GLVSync", mDefaultPrefs->enableVSync()) != ui.glVSync->isChecked() + || config.readEntry("DisableChecks", false ) != ui.disableChecks->isChecked()) { showConfirm = true; } @@ -168,6 +171,7 @@ void KWinAdvancedCompositingOptions::save() config.writeEntry("Backend", (ui.compositingType->currentIndex() == 0) ? "OpenGL" : "XRender"); static const int hps[] = { 1 /*always*/, 3 /*shown*/, 0 /*never*/ }; config.writeEntry("HiddenPreviews", hps[ ui.windowThumbnails->currentIndex() ] ); + config.writeEntry("DisableChecks", ui.disableChecks->isChecked()); config.writeEntry("GLMode", glModes[ui.glMode->currentIndex()]); config.writeEntry("GLTextureFilter", ui.glTextureFilter->currentIndex()); diff --git a/kcmkwin/kwincompositing/advanced.ui b/kcmkwin/kwincompositing/advanced.ui index fc81711c10..bb2956b041 100644 --- a/kcmkwin/kwincompositing/advanced.ui +++ b/kcmkwin/kwincompositing/advanced.ui @@ -65,6 +65,17 @@ + + + + Enabling this option allows compositing to be activated even if some of the internal checks fail. Doing so may make the whole desktop unusable and its use is not recommened. Use only if KWin refuses to activate compositing on a system that should be capable of compositing. + + + + Disable functionality checks + + + diff --git a/options.cpp b/options.cpp index b092b98707..d6b71183eb 100644 --- a/options.cpp +++ b/options.cpp @@ -211,6 +211,7 @@ void Options::reloadCompositingSettings(const CompositingPrefs& prefs) compositingMode = XRenderCompositing; else compositingMode = OpenGLCompositing; + disableCompositingChecks = config.readEntry("DisableChecks", false); QString glmode = config.readEntry("GLMode", "TFP" ).toUpper(); if( glmode == "TFP" ) glMode = GLTFP; diff --git a/options.h b/options.h index e31885c668..c7bcd5f21b 100644 --- a/options.h +++ b/options.h @@ -295,6 +295,7 @@ class Options : public KDecorationOptions CompositingType compositingMode; HiddenPreviews hiddenPreviews; bool unredirectFullscreen; + bool disableCompositingChecks; uint refreshRate; // This is for OpenGL mode diff --git a/scene_opengl.cpp b/scene_opengl.cpp index 0c2de9c42d..2b3cedbc5d 100644 --- a/scene_opengl.cpp +++ b/scene_opengl.cpp @@ -696,6 +696,11 @@ bool SceneOpenGL::selfCheck() wspace->hideOverlay(); if( ok ) kDebug( 1212 ) << "Compositing self-check passed."; + if( !ok && options->disableCompositingChecks ) + { + kWarning( 1212 ) << "Compositing checks disabled, proceeding regardless of self-check failure."; + return true; + } return ok; }