diff --git a/kcmkwin/kwincompositing/main.cpp b/kcmkwin/kwincompositing/main.cpp index f23436e0de..0131b582cb 100644 --- a/kcmkwin/kwincompositing/main.cpp +++ b/kcmkwin/kwincompositing/main.cpp @@ -127,6 +127,12 @@ KWinCompositingConfig::KWinCompositingConfig(QWidget *parent, const QVariantList connect(ui.compositingStateButton, SIGNAL(clicked(bool)), kwinInterface, SLOT(toggleCompositing())); connect(kwinInterface, SIGNAL(compositingToggled(bool)), this, SLOT(setupCompositingState(bool))); + // NOTICE: this is intended to workaround broken GL implementations that succesfully segfault on glXQuery :-( + KConfigGroup gl_workaround_config(mKWinConfig, "Compositing"); + bool checkIsSave = gl_workaround_config.readEntry("CheckIsSafe", true); + gl_workaround_config.writeEntry("CheckIsSafe", false); + gl_workaround_config.sync(); + // Open the temporary config file // Temporary conf file is used to synchronize effect checkboxes with effect // selector by loading/saving effects from/to temp config when active tab @@ -134,12 +140,11 @@ KWinCompositingConfig::KWinCompositingConfig(QWidget *parent, const QVariantList mTmpConfigFile.open(); mTmpConfig = KSharedConfig::openConfig(mTmpConfigFile.fileName()); - if( CompositingPrefs::compositingPossible() ) + if( checkIsSave && CompositingPrefs::compositingPossible() ) { // Driver-specific config detection mDefaultPrefs.detect(); initEffectSelector(); - // Initialize the user interface with the config loaded from kwinrc. load(); } @@ -159,6 +164,9 @@ KWinCompositingConfig::KWinCompositingConfig(QWidget *parent, const QVariantList setupCompositingState( false, false ); } + gl_workaround_config.writeEntry("CheckIsSafe", checkIsSave); + gl_workaround_config.sync(); + KAboutData *about = new KAboutData(I18N_NOOP("kcmkwincompositing"), 0, ki18n("KWin Desktop Effects Configuration Module"), 0, KLocalizedString(), KAboutData::License_GPL, ki18n("(c) 2007 Rivo Laks"));