stylo: Fix nsCOMPtr release bindings.

This commit is contained in:
Emilio Cobos Álvarez 2017-05-08 22:07:12 +02:00
parent 81f273b66f
commit 29c52cc61b
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
4 changed files with 13 additions and 9 deletions

View file

@ -1060,7 +1060,7 @@ impl<'le> ::selectors::Element for GeckoElement<'le> {
fn get_local_name(&self) -> &WeakAtom { fn get_local_name(&self) -> &WeakAtom {
unsafe { unsafe {
WeakAtom::new(self.as_node().node_info().mInner.mName.raw()) WeakAtom::new(self.as_node().node_info().mInner.mName.raw::<nsIAtom>())
} }
} }

View file

@ -6,18 +6,20 @@
use gecko_bindings::structs::nsCOMPtr; use gecko_bindings::structs::nsCOMPtr;
#[cfg(feature = "gecko_debug")]
impl<T> nsCOMPtr<T> { impl<T> nsCOMPtr<T> {
/// Get this pointer as a raw pointer. /// Get this pointer as a raw pointer.
#[cfg(feature = "gecko_debug")]
#[inline] #[inline]
pub fn raw(&self) -> *mut T { pub fn raw<U>(&self) -> *mut T {
self.mRawPtr self.mRawPtr
} }
}
#[cfg(not(feature = "gecko_debug"))]
impl nsCOMPtr {
/// Get this pointer as a raw pointer. /// Get this pointer as a raw pointer.
#[cfg(not(feature = "gecko_debug"))]
#[inline] #[inline]
pub fn raw(&self) -> *mut T { pub fn raw<T>(&self) -> *mut T {
self._base.mRawPtr as *mut _ self._base.mRawPtr as *mut _
} }
} }

View file

@ -2273,10 +2273,11 @@ fn static_assert() {
use gecko_bindings::structs::nsCSSPropertyID::eCSSPropertyExtra_no_properties; use gecko_bindings::structs::nsCSSPropertyID::eCSSPropertyExtra_no_properties;
use gecko_bindings::structs::nsCSSPropertyID::eCSSPropertyExtra_variable; use gecko_bindings::structs::nsCSSPropertyID::eCSSPropertyExtra_variable;
use gecko_bindings::structs::nsCSSPropertyID::eCSSProperty_UNKNOWN; use gecko_bindings::structs::nsCSSPropertyID::eCSSProperty_UNKNOWN;
use gecko_bindings::structs::nsIAtom;
let property = self.gecko.mTransitions[index].mProperty; let property = self.gecko.mTransitions[index].mProperty;
if property == eCSSProperty_UNKNOWN || property == eCSSPropertyExtra_variable { if property == eCSSProperty_UNKNOWN || property == eCSSPropertyExtra_variable {
let atom = self.gecko.mTransitions[index].mUnknownProperty.raw(); let atom = self.gecko.mTransitions[index].mUnknownProperty.raw::<nsIAtom>();
debug_assert!(!atom.is_null()); debug_assert!(!atom.is_null());
TransitionProperty::Unsupported(atom.into()) TransitionProperty::Unsupported(atom.into())
} else if property == eCSSPropertyExtra_no_properties { } else if property == eCSSPropertyExtra_no_properties {
@ -2295,6 +2296,7 @@ fn static_assert() {
pub fn copy_transition_property_from(&mut self, other: &Self) { pub fn copy_transition_property_from(&mut self, other: &Self) {
use gecko_bindings::structs::nsCSSPropertyID::eCSSPropertyExtra_variable; use gecko_bindings::structs::nsCSSPropertyID::eCSSPropertyExtra_variable;
use gecko_bindings::structs::nsCSSPropertyID::eCSSProperty_UNKNOWN; use gecko_bindings::structs::nsCSSPropertyID::eCSSProperty_UNKNOWN;
use gecko_bindings::structs::nsIAtom;
unsafe { self.gecko.mTransitions.ensure_len(other.gecko.mTransitions.len()) }; unsafe { self.gecko.mTransitions.ensure_len(other.gecko.mTransitions.len()) };
let count = other.gecko.mTransitionPropertyCount; let count = other.gecko.mTransitionPropertyCount;
@ -2304,7 +2306,7 @@ fn static_assert() {
transition.mProperty = other.gecko.mTransitions[index].mProperty; transition.mProperty = other.gecko.mTransitions[index].mProperty;
if transition.mProperty == eCSSProperty_UNKNOWN || if transition.mProperty == eCSSProperty_UNKNOWN ||
transition.mProperty == eCSSPropertyExtra_variable { transition.mProperty == eCSSPropertyExtra_variable {
let atom = other.gecko.mTransitions[index].mUnknownProperty.raw(); let atom = other.gecko.mTransitions[index].mUnknownProperty.raw::<nsIAtom>();
debug_assert!(!atom.is_null()); debug_assert!(!atom.is_null());
unsafe { Gecko_StyleTransition_SetUnsupportedProperty(transition, atom) }; unsafe { Gecko_StyleTransition_SetUnsupportedProperty(transition, atom) };
} }

View file

@ -695,7 +695,7 @@ ${helpers.single_keyword_system("font-variant-caps",
#[inline] #[inline]
fn to_computed_value(&self, cx: &Context) -> computed_value::T { fn to_computed_value(&self, cx: &Context) -> computed_value::T {
use gecko_bindings::bindings::Gecko_GetBaseSize; use gecko_bindings::bindings::Gecko_GetBaseSize;
use gecko_bindings::structs; use gecko_bindings::structs::{self, nsIAtom};
use values::specified::length::au_to_int_px; use values::specified::length::au_to_int_px;
// Data from nsRuleNode.cpp in Gecko // Data from nsRuleNode.cpp in Gecko
// Mapping from base size and HTML size to pixels // Mapping from base size and HTML size to pixels
@ -721,7 +721,7 @@ ${helpers.single_keyword_system("font-variant-caps",
// XXXManishearth handle quirks mode // XXXManishearth handle quirks mode
let ref gecko_font = cx.style().get_font().gecko(); let ref gecko_font = cx.style().get_font().gecko();
let base_size = unsafe { Atom::with(gecko_font.mLanguage.raw(), &mut |atom| { let base_size = unsafe { Atom::with(gecko_font.mLanguage.raw::<nsIAtom>(), &mut |atom| {
cx.font_metrics_provider.get_size(atom, gecko_font.mGenericID).0 cx.font_metrics_provider.get_size(atom, gecko_font.mGenericID).0
}) }; }) };