diff --git a/glxbackend.cpp b/glxbackend.cpp
index b749e9c61d..c68bceeb36 100644
--- a/glxbackend.cpp
+++ b/glxbackend.cpp
@@ -96,7 +96,8 @@ void GlxBackend::init()
initGL(GlxPlatformInterface);
// Check whether certain features are supported
haveSwapInterval = glXSwapIntervalMESA || glXSwapIntervalEXT || glXSwapIntervalSGI;
- if (options->isGlVSync()) {
+ const bool wantSync = options->glPreferBufferSwap() != Options::NoSwapEncourage;
+ if (wantSync) {
if (glXGetVideoSync && haveSwapInterval && glXIsDirect(display(), ctx)) {
unsigned int sync;
if (glXGetVideoSync(&sync) == 0) {
@@ -108,14 +109,16 @@ void GlxBackend::init()
// swapinterval (as of today) seems completely unsupported
setHasWaitSync(true);
setSwapInterval(1);
- }
- else
+ } else
qWarning() << "NO VSYNC! glXWaitVideoSync(1,0,&uint) isn't 0 but" << glXWaitVideoSync(1, 0, &sync);
} else
qWarning() << "NO VSYNC! glXGetVideoSync(&uint) isn't 0 but" << glXGetVideoSync(&sync);
} else
qWarning() << "NO VSYNC! glXGetVideoSync, haveSwapInterval, glXIsDirect" <<
bool(glXGetVideoSync) << haveSwapInterval << glXIsDirect(display(), ctx);
+ } else {
+ // disable v-sync (if possible)
+ setSwapInterval(0);
}
if (glPlatform->isVirtualBox()) {
// VirtualBox does not support glxQueryDrawable
diff --git a/kwin.kcfg b/kwin.kcfg
index 3d254fbf05..42822e868e 100644
--- a/kwin.kcfg
+++ b/kwin.kcfg
@@ -235,9 +235,6 @@
true
-
- true
-
2
-1
diff --git a/options.cpp b/options.cpp
index 46a939667e..6abd3f0142 100644
--- a/options.cpp
+++ b/options.cpp
@@ -151,7 +151,6 @@ Options::Options(QObject *parent)
, m_hiddenPreviews(Options::defaultHiddenPreviews())
, m_unredirectFullscreen(Options::defaultUnredirectFullscreen())
, m_glSmoothScale(Options::defaultGlSmoothScale())
- , m_glVSync(Options::defaultGlVSync())
, m_colorCorrected(Options::defaultColorCorrected())
, m_xrenderSmoothScale(Options::defaultXrenderSmoothScale())
, m_maxFpsInterval(Options::defaultMaxFpsInterval())
@@ -679,15 +678,6 @@ void Options::setGlSmoothScale(int glSmoothScale)
emit glSmoothScaleChanged();
}
-void Options::setGlVSync(bool glVSync)
-{
- if (m_glVSync == glVSync) {
- return;
- }
- m_glVSync = glVSync;
- emit glVSyncChanged();
-}
-
void Options::setColorCorrected(bool colorCorrected)
{
if (m_colorCorrected == colorCorrected) {
@@ -968,7 +958,6 @@ void Options::reloadCompositingSettings(bool force)
KConfigGroup config(_config, "Compositing");
setGlDirect(prefs.enableDirectRendering());
- setGlVSync(config.readEntry("GLVSync", Options::defaultGlVSync()));
setGlSmoothScale(qBound(-1, config.readEntry("GLTextureFilter", Options::defaultGlSmoothScale()), 2));
setGlStrictBindingFollowsDriver(!config.hasKey("GLStrictBinding"));
if (!isGlStrictBindingFollowsDriver()) {
@@ -977,13 +966,11 @@ void Options::reloadCompositingSettings(bool force)
setGlLegacy(config.readEntry("GLLegacy", Options::defaultGlLegacy()));
char c = 0;
- if (isGlVSync()) { // buffer swap enforcement makes little sense without
- const QString s = config.readEntry("GLPreferBufferSwap", QString(Options::defaultGlPreferBufferSwap()));
- if (!s.isEmpty())
- c = s.at(0).toAscii();
- if (c != 'a' && c != 'c' && c != 'p' && c != 'e')
- c = 0;
- }
+ const QString s = config.readEntry("GLPreferBufferSwap", QString(Options::defaultGlPreferBufferSwap()));
+ if (!s.isEmpty())
+ c = s.at(0).toAscii();
+ if (c != 'a' && c != 'c' && c != 'p' && c != 'e')
+ c = 0;
setGlPreferBufferSwap(c);
setColorCorrected(config.readEntry("GLColorCorrection", Options::defaultColorCorrected()));
diff --git a/options.h b/options.h
index e816d4aca1..f61a66f475 100644
--- a/options.h
+++ b/options.h
@@ -170,7 +170,6 @@ class Options : public QObject, public KDecorationOptions
* -1 = auto
**/
Q_PROPERTY(int glSmoothScale READ glSmoothScale WRITE setGlSmoothScale NOTIFY glSmoothScaleChanged)
- Q_PROPERTY(bool glVSync READ isGlVSync WRITE setGlVSync NOTIFY glVSyncChanged)
Q_PROPERTY(bool colorCorrected READ isColorCorrected WRITE setColorCorrected NOTIFY colorCorrectedChanged)
Q_PROPERTY(bool xrenderSmoothScale READ isXrenderSmoothScale WRITE setXrenderSmoothScale NOTIFY xrenderSmoothScaleChanged)
Q_PROPERTY(uint maxFpsInterval READ maxFpsInterval WRITE setMaxFpsInterval NOTIFY maxFpsIntervalChanged)
@@ -517,9 +516,6 @@ public:
int glSmoothScale() const {
return m_glSmoothScale;
}
- bool isGlVSync() const {
- return m_glVSync;
- }
bool isColorCorrected() const {
return m_colorCorrected;
}
@@ -608,7 +604,6 @@ public:
void setHiddenPreviews(int hiddenPreviews);
void setUnredirectFullscreen(bool unredirectFullscreen);
void setGlSmoothScale(int glSmoothScale);
- void setGlVSync(bool glVSync);
void setXrenderSmoothScale(bool xrenderSmoothScale);
void setMaxFpsInterval(uint maxFpsInterval);
void setRefreshRate(uint refreshRate);
@@ -692,9 +687,6 @@ public:
static int defaultGlSmoothScale() {
return 2;
}
- static bool defaultGlVSync() {
- return true;
- }
static bool defaultColorCorrected() {
return false;
}
@@ -798,7 +790,6 @@ Q_SIGNALS:
void hiddenPreviewsChanged();
void unredirectFullscreenChanged();
void glSmoothScaleChanged();
- void glVSyncChanged();
void colorCorrectedChanged();
void xrenderSmoothScaleChanged();
void maxFpsIntervalChanged();
@@ -848,7 +839,6 @@ private:
HiddenPreviews m_hiddenPreviews;
bool m_unredirectFullscreen;
int m_glSmoothScale;
- bool m_glVSync;
bool m_colorCorrected;
bool m_xrenderSmoothScale;
uint m_maxFpsInterval;