From 0bf1f2793b3d56ef79268ea74beff958062b5842 Mon Sep 17 00:00:00 2001 From: Cameron McCormack Date: Tue, 7 Jun 2016 17:37:35 +1000 Subject: [PATCH] Look at nsIAtom.mHash directly rather than call Gecko_HashAtom. --- ports/geckolib/gecko_bindings/bindings.rs | 2 +- ports/geckolib/gecko_bindings/tools/regen_bindings.sh | 2 +- ports/geckolib/glue.rs | 4 ++-- ports/geckolib/string_cache/atom_macro.rs | 2 +- ports/geckolib/string_cache/lib.rs | 5 ++--- ports/geckolib/string_cache/regen_atom_macro.py | 2 +- ports/geckolib/wrapper.rs | 2 +- 7 files changed, 9 insertions(+), 10 deletions(-) diff --git a/ports/geckolib/gecko_bindings/bindings.rs b/ports/geckolib/gecko_bindings/bindings.rs index d9ce707dc81..8c7ba81c02a 100644 --- a/ports/geckolib/gecko_bindings/bindings.rs +++ b/ports/geckolib/gecko_bindings/bindings.rs @@ -35,6 +35,7 @@ use structs::nscolor; use structs::nsFont; use structs::FontFamilyList; use structs::FontFamilyType; +use structs::nsIAtom; use heapsize::HeapSizeOf; unsafe impl Send for nsStyleFont {} unsafe impl Sync for nsStyleFont {} @@ -121,7 +122,6 @@ unsafe impl Send for nsStyleGradientStop {} unsafe impl Sync for nsStyleGradientStop {} impl HeapSizeOf for nsStyleGradientStop { fn heap_size_of_children(&self) -> usize { 0 } } -pub enum nsIAtom { } pub enum nsINode { } pub type RawGeckoNode = nsINode; pub enum nsIPrincipal { } diff --git a/ports/geckolib/gecko_bindings/tools/regen_bindings.sh b/ports/geckolib/gecko_bindings/tools/regen_bindings.sh index 401ae785a3a..73da1e1399c 100755 --- a/ports/geckolib/gecko_bindings/tools/regen_bindings.sh +++ b/ports/geckolib/gecko_bindings/tools/regen_bindings.sh @@ -52,7 +52,7 @@ done # Other mapped types. for TYPE in SheetParsingMode nsMainThreadPtrHandle nsMainThreadPtrHolder nscolor nsFont \ - FontFamilyList FontFamilyType + FontFamilyList FontFamilyType nsIAtom do MAP_GECKO_TYPES=$MAP_GECKO_TYPES"-blacklist-type $TYPE " MAP_GECKO_TYPES=$MAP_GECKO_TYPES"-raw-line 'use structs::$TYPE;' " diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index 38f4827bea0..c55e6154b23 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -10,9 +10,9 @@ use env_logger; use euclid::Size2D; use gecko_bindings::bindings::{RawGeckoDocument, RawGeckoElement, RawGeckoNode}; use gecko_bindings::bindings::{RawServoStyleSet, RawServoStyleSheet, ServoComputedValues, ServoNodeData}; -use gecko_bindings::bindings::{ThreadSafePrincipalHolder, ThreadSafeURIHolder, nsIAtom}; +use gecko_bindings::bindings::{ThreadSafePrincipalHolder, ThreadSafeURIHolder}; use gecko_bindings::ptr::{GeckoArcPrincipal, GeckoArcURI}; -use gecko_bindings::structs::SheetParsingMode; +use gecko_bindings::structs::{SheetParsingMode, nsIAtom}; use properties::GeckoComputedValues; use selector_impl::{GeckoSelectorImpl, PseudoElement, SharedStyleContext, Stylesheet}; use std::marker::PhantomData; diff --git a/ports/geckolib/string_cache/atom_macro.rs b/ports/geckolib/string_cache/atom_macro.rs index ba498c902b5..abf59a208f2 100644 --- a/ports/geckolib/string_cache/atom_macro.rs +++ b/ports/geckolib/string_cache/atom_macro.rs @@ -1,4 +1,4 @@ -use gecko_bindings::bindings::nsIAtom; +use gecko_bindings::structs::nsIAtom; use Atom; diff --git a/ports/geckolib/string_cache/lib.rs b/ports/geckolib/string_cache/lib.rs index de98f3d2c68..91f81697dbf 100644 --- a/ports/geckolib/string_cache/lib.rs +++ b/ports/geckolib/string_cache/lib.rs @@ -10,9 +10,8 @@ use gecko_bindings::bindings::Gecko_AddRefAtom; use gecko_bindings::bindings::Gecko_AtomEqualsUTF8IgnoreCase; use gecko_bindings::bindings::Gecko_Atomize; use gecko_bindings::bindings::Gecko_GetAtomAsUTF16; -use gecko_bindings::bindings::Gecko_HashAtom; use gecko_bindings::bindings::Gecko_ReleaseAtom; -use gecko_bindings::bindings::nsIAtom; +use gecko_bindings::structs::nsIAtom; use heapsize::HeapSizeOf; use serde::{Deserialize, Deserializer, Serialize, Serializer}; use std::borrow::Cow; @@ -100,7 +99,7 @@ unsafe impl Sync for Atom {} impl Atom { pub fn get_hash(&self) -> u32 { unsafe { - Gecko_HashAtom(self.0) + (*self.0).mHash } } diff --git a/ports/geckolib/string_cache/regen_atom_macro.py b/ports/geckolib/string_cache/regen_atom_macro.py index d40f97db243..f667c515abb 100755 --- a/ports/geckolib/string_cache/regen_atom_macro.py +++ b/ports/geckolib/string_cache/regen_atom_macro.py @@ -24,7 +24,7 @@ with open(objdir_path + "/dist/include/nsGkAtomList.h") as f: atoms = [line_to_atom(line) for line in lines] with open("atom_macro.rs", "w") as f: - f.write("use gecko_bindings::bindings::nsIAtom;\n\n") + f.write("use gecko_bindings::structs::nsIAtom;\n\n") f.write("use Atom;\n\n") f.write("pub fn unsafe_atom_from_static(ptr: *mut nsIAtom) -> Atom { unsafe { Atom::from_static(ptr) } }\n\n") for atom in atoms: diff --git a/ports/geckolib/wrapper.rs b/ports/geckolib/wrapper.rs index 7a4125717c5..cb0d0faf405 100644 --- a/ports/geckolib/wrapper.rs +++ b/ports/geckolib/wrapper.rs @@ -9,7 +9,6 @@ use gecko_bindings::bindings::Gecko_ClassOrClassList; use gecko_bindings::bindings::Gecko_GetElementId; use gecko_bindings::bindings::Gecko_GetNodeData; use gecko_bindings::bindings::ServoNodeData; -use gecko_bindings::bindings::nsIAtom; use gecko_bindings::bindings::{Gecko_ElementState, Gecko_GetAttrAsUTF8, Gecko_GetDocumentElement}; use gecko_bindings::bindings::{Gecko_GetFirstChild, Gecko_GetFirstChildElement}; use gecko_bindings::bindings::{Gecko_GetLastChild, Gecko_GetLastChildElement}; @@ -21,6 +20,7 @@ use gecko_bindings::bindings::{Gecko_IsUnvisitedLink, Gecko_IsVisitedLink}; #[allow(unused_imports)] // Used in commented-out code. use gecko_bindings::bindings::{Gecko_LocalName, Gecko_Namespace, Gecko_NodeIsElement, Gecko_SetNodeData}; use gecko_bindings::bindings::{RawGeckoDocument, RawGeckoElement, RawGeckoNode}; +use gecko_bindings::structs::nsIAtom; use libc::uintptr_t; use properties::GeckoComputedValues; use selector_impl::{GeckoSelectorImpl, NonTSPseudoClass, PrivateStyleData};