From 2accabd554a4d34e1d5fe2cbc112c85763e7ac3e Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Tue, 23 Dec 2014 08:32:53 +1000 Subject: [PATCH 1/2] Use event polling instead of blocking when outputting to a file. This stops some ref tests on linux blocking while waiting for user input events and never outputting the file. Also mark vertical writing test as flaky on all platforms. Due to unrelated timing reasons, this fails reliably on mac when glutin is enabled. The related bug with details on the root cause is #3926. --- ports/glutin/window.rs | 22 ++++++++++++++++++---- tests/ref/basic.list | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/ports/glutin/window.rs b/ports/glutin/window.rs index 270cc1adcf2..f463d42483d 100644 --- a/ports/glutin/window.rs +++ b/ports/glutin/window.rs @@ -27,6 +27,7 @@ use std::num::Float; use std::rc::Rc; use time::{mod, Timespec}; use util::geometry::ScreenPx; +use util::opts; use util::opts::{RenderApi, Mesa, OpenGL}; use gleam::gl; use glutin; @@ -521,10 +522,23 @@ impl Window { match self.glutin { WindowHandle::Windowed(ref window) => { let mut close_event = false; - for event in window.wait_events() { - close_event = self.handle_window_event(event); - if close_event { - break; + + // When writing to a file then exiting, use event + // polling so that we don't block on a GUI event + // such as mouse click. + if opts::get().output_file.is_some() { + for event in window.poll_events() { + close_event = self.handle_window_event(event); + if close_event { + break; + } + } + } else { + for event in window.wait_events() { + close_event = self.handle_window_event(event); + if close_event { + break; + } } } diff --git a/tests/ref/basic.list b/tests/ref/basic.list index 9864cb0bfa0..3a56c0ad94d 100644 --- a/tests/ref/basic.list +++ b/tests/ref/basic.list @@ -95,7 +95,7 @@ flaky_cpu == linebreak_simple_a.html linebreak_simple_b.html == overflow_simple_a.html overflow_simple_b.html == noscript.html noscript_ref.html == pseudo_inherit.html pseudo_inherit_ref.html -flaky_linux,experimental == vertical-lr-blocks.html vertical-lr-blocks_ref.html +flaky_cpu,experimental == vertical-lr-blocks.html vertical-lr-blocks_ref.html == float_intrinsic_height.html float_intrinsic_height_ref.html == table_auto_width.html table_auto_width_ref.html == inline_whitespace_b.html inline_whitespace_ref.html From 8e32ba9de97f3152ce1f89d5940b9e8077d5f1bf Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Tue, 23 Dec 2014 10:13:36 +1000 Subject: [PATCH 2/2] Update glutin to get mac visibility fix. --- components/servo/Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index 068350ccd01..b5831595e21 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -329,7 +329,7 @@ dependencies = [ [[package]] name = "glutin" version = "0.0.2" -source = "git+https://github.com/servo/glutin?ref=servo#936519a44f77f6b646c504eff38fe7d57a17b1f4" +source = "git+https://github.com/servo/glutin?ref=servo#4b1039622fab13fed23e111a35e65e5186540808" dependencies = [ "android_glue 0.0.1 (git+https://github.com/servo/android-rs-glue?ref=servo)", "cocoa 0.1.1 (git+https://github.com/servo/rust-cocoa)",