diff --git a/src/rust-core-graphics b/src/rust-core-graphics index f971c917bae..9cb470e8089 160000 --- a/src/rust-core-graphics +++ b/src/rust-core-graphics @@ -1 +1 @@ -Subproject commit f971c917baeb3bc5e6dfb1442bfa35a10261b650 +Subproject commit 9cb470e80897a854096bc07b88857e379945f421 diff --git a/src/rust-core-text b/src/rust-core-text index c1450887c2e..aa6fb82a739 160000 --- a/src/rust-core-text +++ b/src/rust-core-text @@ -1 +1 @@ -Subproject commit c1450887c2e21a4cddfa57c4d3fc4d4eb02da425 +Subproject commit aa6fb82a7390f4ef1dd596b67cec130ab33519ff diff --git a/src/servo/gfx/font.rs b/src/servo/gfx/font.rs index 432d0768aba..34e93751d07 100644 --- a/src/servo/gfx/font.rs +++ b/src/servo/gfx/font.rs @@ -34,7 +34,7 @@ pub type FontHandle/& = freetype::font::FreeTypeFontHandle; impl FontHandle { #[cfg(target_os = "macos")] static pub fn new(fctx: &native::FontContextHandle, buf: @~[u8], pt_size: float) -> Result { - quartz::font::QuartzFontHandle::new(fctx, buf, pt_size) + quartz::font::QuartzFontHandle::new_from_buffer(fctx, buf, pt_size) } #[cfg(target_os = "linux")] diff --git a/src/servo/gfx/quartz/font.rs b/src/servo/gfx/quartz/font.rs index 961c1b912dd..0df325c2fdf 100644 --- a/src/servo/gfx/quartz/font.rs +++ b/src/servo/gfx/quartz/font.rs @@ -20,9 +20,7 @@ use cf::string::UniChar; use cg = core_graphics; use cg::base::{CGFloat, CGAffineTransform}; use cg::data_provider::{ - CGDataProviderCreateWithData, - CGDataProviderRef, - CGDataProviderRelease, + CGDataProviderRef, CGDataProvider }; use cg::font::{ CGFontCreateWithDataProvider, @@ -52,43 +50,36 @@ use ct::font_descriptor::{ }; pub struct QuartzFontHandle { - fontprov: CGDataProviderRef, cgfont: CGFontRef, ctfont: CTFontRef, drop { assert self.ctfont.is_not_null(); assert self.cgfont.is_not_null(); - assert self.fontprov.is_not_null(); CFRelease(self.ctfont as CFTypeRef); CGFontRelease(self.cgfont); - CGDataProviderRelease(self.fontprov); } } pub impl QuartzFontHandle { - static pub fn new(_fctx: &QuartzFontContextHandle, buf: @~[u8], pt_size: float) -> Result { + static pub fn new_from_buffer(_fctx: &QuartzFontContextHandle, buf: @~[u8], pt_size: float) -> Result { let fontprov = vec::as_imm_buf(*buf, |cbuf, len| { - CGDataProviderCreateWithData( - ptr::null(), - unsafe { cast::transmute(copy cbuf) }, - len as size_t, - ptr::null()) + CGDataProvider::new_from_buffer(cbuf, len) }); - if fontprov.is_null() { return Err(()); } - let cgfont = CGFontCreateWithDataProvider(fontprov); + let cgfont = CGFontCreateWithDataProvider(fontprov.get_ref()); if cgfont.is_null() { return Err(()); } let ctfont = ctfont_from_cgfont(cgfont, pt_size); if ctfont.is_null() { return Err(()); } - Ok(QuartzFontHandle { - fontprov : fontprov, + let result = Ok(QuartzFontHandle { cgfont : cgfont, ctfont : ctfont, - }) + }); + + return move result; } fn glyph_index(codepoint: char) -> Option {