37 lines
1.4 KiB
Diff
37 lines
1.4 KiB
Diff
|
|
# HG changeset patch
|
|
# User Martin Stransky <stransky@redhat.com>
|
|
# Date 1526647470 -7200
|
|
# Node ID d41fee41e38400fab5da0689c1f49e30f80e2d1b
|
|
# Parent d2b91476bebc48f9e89f9d3e6c7b33decb2ae941
|
|
Bug 1462622 - [Gtk/Linux] Don't use GLXVsyncSource() on non-X11 displays, r=lsalzman
|
|
|
|
MozReview-Commit-ID: BBtnNLWqSiq
|
|
|
|
diff --git a/gfx/thebes/gfxPlatformGtk.cpp b/gfx/thebes/gfxPlatformGtk.cpp
|
|
--- a/gfx/thebes/gfxPlatformGtk.cpp
|
|
+++ b/gfx/thebes/gfxPlatformGtk.cpp
|
|
@@ -736,18 +736,20 @@ private:
|
|
};
|
|
|
|
already_AddRefed<gfx::VsyncSource>
|
|
gfxPlatformGtk::CreateHardwareVsyncSource()
|
|
{
|
|
// Only use GLX vsync when the OpenGL compositor is being used.
|
|
// The extra cost of initializing a GLX context while blocking the main
|
|
// thread is not worth it when using basic composition.
|
|
+ // Also don't use it on non-X11 displays.
|
|
if (gfxConfig::IsEnabled(Feature::HW_COMPOSITING)) {
|
|
- if (gl::sGLXLibrary.SupportsVideoSync()) {
|
|
+ if (GDK_IS_X11_DISPLAY(gdk_display_get_default()) &&
|
|
+ gl::sGLXLibrary.SupportsVideoSync()) {
|
|
RefPtr<VsyncSource> vsyncSource = new GLXVsyncSource();
|
|
VsyncSource::Display& display = vsyncSource->GetGlobalDisplay();
|
|
if (!static_cast<GLXVsyncSource::GLXDisplay&>(display).Setup()) {
|
|
NS_WARNING("Failed to setup GLContext, falling back to software vsync.");
|
|
return gfxPlatform::CreateHardwareVsyncSource();
|
|
}
|
|
return vsyncSource.forget();
|
|
}
|
|
|