diff --git a/src/rust-azure b/src/rust-azure index 8db099ac74d..55b0d15f154 160000 --- a/src/rust-azure +++ b/src/rust-azure @@ -1 +1 @@ -Subproject commit 8db099ac74ddb4e416eef8f2d237d4ec47787fbe +Subproject commit 55b0d15f154986d85a53893e198ab6c750c0b728 diff --git a/src/rust-core-foundation b/src/rust-core-foundation index 04c0856f7d3..eec9e9f417d 160000 --- a/src/rust-core-foundation +++ b/src/rust-core-foundation @@ -1 +1 @@ -Subproject commit 04c0856f7d3e3c600463c0a205556c65bf74bdf3 +Subproject commit eec9e9f417d2efad4710e6fa601030810fe92a4e diff --git a/src/rust-core-graphics b/src/rust-core-graphics index 55de520630e..c413a96a8c6 160000 --- a/src/rust-core-graphics +++ b/src/rust-core-graphics @@ -1 +1 @@ -Subproject commit 55de520630efbaef7de03832b6d3621d2b4b4d29 +Subproject commit c413a96a8c6b70815b4d5ad7469c7983af417728 diff --git a/src/rust-core-text b/src/rust-core-text index ea18d1d4738..2b306ea65aa 160000 --- a/src/rust-core-text +++ b/src/rust-core-text @@ -1 +1 @@ -Subproject commit ea18d1d47385d64f6a7938c4a9e68423084c9657 +Subproject commit 2b306ea65aaa348ec3158588fa78779fd4a1629b diff --git a/src/servo-gfx/font.rs b/src/servo-gfx/font.rs index 3a6e68b67d9..2b44ef9535d 100644 --- a/src/servo-gfx/font.rs +++ b/src/servo-gfx/font.rs @@ -355,9 +355,9 @@ impl Font { #[cfg(target_os="macos")] priv fn create_azure_font() -> ScaledFont { - let ct_font = &self.handle.ctfont; + let cg_font = self.handle.get_CGFont(); let size = self.style.pt_size as AzFloat; - ScaledFont::new(self.backend, ct_font, size) + ScaledFont::new(self.backend, &cg_font, size) } #[cfg(target_os="linux")] diff --git a/src/servo-gfx/quartz/font.rs b/src/servo-gfx/quartz/font.rs index 4bc6e5bf0c1..8951e46d6f9 100644 --- a/src/servo-gfx/quartz/font.rs +++ b/src/servo-gfx/quartz/font.rs @@ -6,6 +6,7 @@ use cf = core_foundation; use cf::base::{ CFIndex, CFTypeRef, + CFWrapper, }; use cf::data::{CFData, CFDataRef}; use cf::string::UniChar; @@ -13,7 +14,7 @@ use cg = core_graphics; use cg::base::{CGFloat, CGAffineTransform}; use cg::data_provider::{CGDataProviderRef, CGDataProvider}; -use cg::font::{CGFontCreateWithDataProvider, CGFontRef, CGFontRelease, CGGlyph}; +use cg::font::{CGFont, CGFontRef, CGGlyph}; use cg::geometry::CGRect; use ct = core_text; @@ -65,32 +66,24 @@ pub impl QuartzFontTable : FontTableMethods { } pub struct QuartzFontHandle { - priv mut cgfont: Option, + priv mut cgfont: Option, ctfont: CTFont, - drop { - // TODO(Issue #152): use a wrapped CGFont. - do (copy self.cgfont).iter |cgfont| { - assert cgfont.is_not_null(); - CGFontRelease(*cgfont); - } - } + drop { } } pub impl QuartzFontHandle { static fn new_from_buffer(_fctx: &QuartzFontContextHandle, buf: ~[u8], style: &SpecifiedFontStyle) -> Result { - let fontprov = vec::as_imm_buf(buf, |cbuf, len| { + let fontprov : CGDataProvider = vec::as_imm_buf(buf, |cbuf, len| { cg::data_provider::new_from_buffer(cbuf, len) }); - let cgfont = CGFontCreateWithDataProvider(*fontprov.borrow_ref()); - if cgfont.is_null() { return Err(()); } - - let ctfont = ct::font::new_from_CGFont(cgfont, style.pt_size); + let cgfont = cg::font::create_with_data_provider(&fontprov); + let ctfont = ct::font::new_from_CGFont(&cgfont, style.pt_size); let result = Ok(QuartzFontHandle { - cgfont : Some(cgfont), + cgfont : Some(move cgfont), ctfont : move ctfont, }); @@ -106,13 +99,13 @@ pub impl QuartzFontHandle { return move result; } - fn get_CGFont() -> CGFontRef { + fn get_CGFont() -> CGFont { match self.cgfont { - Some(cg) => cg, + Some(ref font) => move CFWrapper::wrap_shared(*font.borrow_ref()), None => { let cgfont = self.ctfont.copy_to_CGFont(); - self.cgfont = Some(cgfont); - cgfont + self.cgfont = Some(CFWrapper::clone(&cgfont)); + move cgfont } } }