Index: ui/gfx/gl/gl_context_glx.cc |
diff --git a/ui/gfx/gl/gl_context_glx.cc b/ui/gfx/gl/gl_context_glx.cc |
index 12013b553dde7d0401fdfc8a756efc0a275929bb..e67400400550c327360a9fcab173b4e6fc65eb4e 100644 |
--- a/ui/gfx/gl/gl_context_glx.cc |
+++ b/ui/gfx/gl/gl_context_glx.cc |
@@ -119,12 +119,21 @@ void GLContextGLX::SetSwapInterval(int interval) { |
// manager. At the moment, compositing window managers don't |
// respect this setting anyway (tearing still occurs) and it |
// dramatically increases latency. |
- if (!IsCompositingWindowManagerActive(GLSurfaceGLX::GetDisplay())) { |
- glXSwapIntervalEXT( |
- GLSurfaceGLX::GetDisplay(), |
- glXGetCurrentDrawable(), |
- interval); |
+ if (interval == 1 && |
+ IsCompositingWindowManagerActive(GLSurfaceGLX::GetDisplay())) { |
+ LOG(INFO) << |
+ "Forcing vsync off because compositing window manager was detected."; |
+ interval = 0; |
} |
+ glXSwapIntervalEXT( |
+ GLSurfaceGLX::GetDisplay(), |
+ glXGetCurrentDrawable(), |
+ interval); |
+ } else { |
+ if(interval == 0) |
+ LOG(WARNING) << |
+ "Could not disable vsync: driver does not " |
+ "support GLX_EXT_swap_control"; |
} |
} |