Bug 1356105 - stylo: Disable font metrics ; r?heycam draft
authorManish Goregaokar <manishearth@gmail.com>
Thu, 13 Apr 2017 13:06:36 +0800
changeset 561741 7b4f69a408d5860a28c120f198b2f028627fe087
parent 561664 ff7729561efd16e7c3140d40337a84318730ab9c
child 624068 d87c2281c15e3cd066e6807df3987a53062e679a
push id53836
push userbmo:manishearth@gmail.com
push dateThu, 13 Apr 2017 05:06:50 +0000
reviewersheycam
bugs1356105
milestone55.0a1
Bug 1356105 - stylo: Disable font metrics ; r?heycam MozReview-Commit-ID: Am9pV7Fbvif
servo/components/style/gecko/wrapper.rs
--- a/servo/components/style/gecko/wrapper.rs
+++ b/servo/components/style/gecko/wrapper.rs
@@ -17,17 +17,17 @@
 use app_units::Au;
 use atomic_refcell::AtomicRefCell;
 use context::{SharedStyleContext, UpdateAnimationsTasks};
 use data::ElementData;
 use dom::{self, AnimationRules, DescendantsBit, LayoutIterator, NodeInfo, TElement, TNode, UnsafeNode};
 use dom::{OpaqueNode, PresentationalHintsSynthetizer};
 use element_state::ElementState;
 use error_reporting::StdoutErrorReporter;
-use font_metrics::{FontMetrics, FontMetricsProvider, FontMetricsQueryResult};
+use font_metrics::{FontMetricsProvider, FontMetricsQueryResult};
 use gecko::global_style_data::GLOBAL_STYLE_DATA;
 use gecko::selector_parser::{SelectorImpl, NonTSPseudoClass, PseudoElement};
 use gecko::snapshot_helpers;
 use gecko_bindings::bindings;
 use gecko_bindings::bindings::{Gecko_DropStyleChildrenIterator, Gecko_MaybeCreateStyleChildrenIterator};
 use gecko_bindings::bindings::{Gecko_ElementState, Gecko_GetLastChild, Gecko_GetNextStyleChild};
 use gecko_bindings::bindings::{Gecko_IsRootElement, Gecko_MatchesElement, Gecko_Namespace};
 use gecko_bindings::bindings::{Gecko_SetNodeFlags, Gecko_UnsetNodeFlags};
@@ -467,32 +467,35 @@ impl FontMetricsProvider for GeckoFontMe
         }
         let sizes = unsafe {
             Gecko_GetBaseSize(font_name.as_ptr())
         };
         cache.push((font_name.clone(), sizes));
         sizes.size_for_generic(font_family)
     }
 
-    fn query(&self, font: &Font, font_size: Au, wm: WritingMode,
-             in_media_query: bool, device: &Device) -> FontMetricsQueryResult {
-        use gecko_bindings::bindings::Gecko_GetFontMetrics;
-        let gecko_metrics = unsafe {
-            Gecko_GetFontMetrics(&*device.pres_context,
-                                 wm.is_vertical() && !wm.is_sideways(),
-                                 font.gecko(),
-                                 font_size.0,
-                                 // we don't use the user font set in a media query
-                                 !in_media_query)
-        };
-        let metrics = FontMetrics {
-            x_height: Au(gecko_metrics.mXSize),
-            zero_advance_measure: Au(gecko_metrics.mChSize),
-        };
-        FontMetricsQueryResult::Available(metrics)
+    fn query(&self, _font: &Font, _font_size: Au, _wm: WritingMode,
+             _in_media_query: bool, _device: &Device) -> FontMetricsQueryResult {
+        // Disabled until we can make font metrics thread safe (bug 1356105)
+        //
+        // use gecko_bindings::bindings::Gecko_GetFontMetrics;
+        // let gecko_metrics = unsafe {
+        //     Gecko_GetFontMetrics(&*device.pres_context,
+        //                          wm.is_vertical() && !wm.is_sideways(),
+        //                          font.gecko(),
+        //                          font_size.0,
+        //                          // we don't use the user font set in a media query
+        //                          !in_media_query)
+        // };
+        // let metrics = FontMetrics {
+        //     x_height: Au(gecko_metrics.mXSize),
+        //     zero_advance_measure: Au(gecko_metrics.mChSize),
+        // };
+        // FontMetricsQueryResult::Available(metrics)
+        FontMetricsQueryResult::NotAvailable
     }
 }
 
 impl structs::FontSizePrefs {
     fn size_for_generic(&self, font_family: u8) -> Au {
         Au(match font_family {
             structs::kPresContext_DefaultVariableFont_ID => self.mDefaultVariableSize,
             structs::kPresContext_DefaultFixedFont_ID => self.mDefaultFixedSize,