diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-06-08 15:33:38 -0500 |
---|---|---|
committer | bors-servo <lbergstrom+bors@mozilla.com> | 2016-06-08 15:33:38 -0500 |
commit | e51ce5d1bac31afdadc9a4c86175fac00677b31a (patch) | |
tree | 8c905d76ac93de51c5284881da06d58aa55e523c | |
parent | 3804ca1ad7edce934065e697289bdbda06277085 (diff) | |
parent | 8d5ff5cae765ff9f7711c564685ebb15a52ee96f (diff) | |
download | servo-e51ce5d1bac31afdadc9a4c86175fac00677b31a.tar.gz servo-e51ce5d1bac31afdadc9a4c86175fac00677b31a.zip |
Auto merge of #11646 - pcwalton:real-info-plist, r=metajack
servo: Add an `Info.plist` on the Mac and opt into integrated graphics.
Discrete GPUs cause power use problems and tend to perform badly
with WebRender.
See:
* https://developer.apple.com/library/mac/qa/qa1734/_index.html
* https://reverse.put.as/2013/05/28/gimmedebugah-how-to-embedded-a-info-plist-into-arbitrary-binaries/
r? @metajack
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11646)
<!-- Reviewable:end -->
-rw-r--r-- | components/servo/Cargo.lock | 20 | ||||
-rw-r--r-- | components/servo/main.rs | 13 | ||||
-rw-r--r-- | components/servo/platform/macos/Info.plist | 21 | ||||
-rw-r--r-- | components/servo/platform/macos/mod.rs | 19 | ||||
-rw-r--r-- | ports/cef/Cargo.lock | 22 | ||||
-rw-r--r-- | python/servo/build_commands.py | 18 | ||||
-rw-r--r-- | python/tidy/servo_tidy/tidy.py | 3 |
7 files changed, 95 insertions, 21 deletions
diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index 4c9bc35de3e..ae10f535115 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -99,7 +99,7 @@ version = "0.4.5" source = "git+https://github.com/servo/rust-azure#a7177c8df81554352bc51de2f5b77cbb47ec2635" dependencies = [ "core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", @@ -273,11 +273,11 @@ dependencies = [ [[package]] name = "cocoa" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "objc 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -403,7 +403,7 @@ dependencies = [ [[package]] name = "core-graphics" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -417,7 +417,7 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -756,7 +756,7 @@ dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2056,9 +2056,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "android_glue 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "cgl 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cocoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cocoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "dwmapi-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "gl_generator 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2525,7 +2525,7 @@ source = "git+https://github.com/servo/webrender#3a6db793d0a2a1c0e55f78ba2ee8ec2 dependencies = [ "app_units 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2548,7 +2548,7 @@ source = "git+https://github.com/servo/webrender_traits#e4cbde9880d118e50de425d3 dependencies = [ "app_units 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.2.3 (git+https://github.com/servo/ipc-channel)", diff --git a/components/servo/main.rs b/components/servo/main.rs index 361e0f01a75..4622040fa44 100644 --- a/components/servo/main.rs +++ b/components/servo/main.rs @@ -37,6 +37,17 @@ use servo::util::opts::{self, ArgumentParsingResult}; use servo::util::panicking::initiate_panic_hook; use std::rc::Rc; +pub mod platform { + #[cfg(target_os = "macos")] + pub use platform::macos::deinit; + + #[cfg(target_os = "macos")] + pub mod macos; + + #[cfg(not(target_os = "macos"))] + pub fn deinit() {} +} + fn main() { // Parse the command line options and store them globally let opts_result = opts::from_cmdline_args(&*args()); @@ -82,6 +93,8 @@ fn main() { }; unregister_glutin_resize_handler(&window); + + platform::deinit() } fn register_glutin_resize_handler(window: &Rc<app::window::Window>, diff --git a/components/servo/platform/macos/Info.plist b/components/servo/platform/macos/Info.plist new file mode 100644 index 00000000000..c2855eb82b4 --- /dev/null +++ b/components/servo/platform/macos/Info.plist @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>NSSupportsAutomaticGraphicsSwitching</key> + <true/> + <key>CFBundleDisplayName</key> + <string>Servo</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleName</key> + <string>Servo</string> + <key>NSHumanReadableCopyright</key> + <string>Copyright © 2016 The Servo Authors</string> + <key>CFBundleVersion</key> + <string>0.0.1</string> + <key>CFBundleIdentifier</key> + <string>org.servo.servo</string> +</dict> +</plist> + diff --git a/components/servo/platform/macos/mod.rs b/components/servo/platform/macos/mod.rs new file mode 100644 index 00000000000..b980b83f5fb --- /dev/null +++ b/components/servo/platform/macos/mod.rs @@ -0,0 +1,19 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +use std::ptr; + +pub fn deinit() { + // An unfortunate hack to make sure the linker's dead code stripping doesn't strip our + // `Info.plist`. + unsafe { + ptr::read_volatile(&INFO_PLIST[0]); + } +} + +#[cfg(target_os = "macos")] +#[link_section = "__TEXT,__info_plist"] +#[no_mangle] +pub static INFO_PLIST: [u8; 619] = *include_bytes!("Info.plist"); + diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock index 194d9667567..4eb9f80b4a6 100644 --- a/ports/cef/Cargo.lock +++ b/ports/cef/Cargo.lock @@ -2,7 +2,7 @@ name = "embedding" version = "0.0.1" dependencies = [ - "cocoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cocoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "compositing 0.0.1", "devtools 0.0.1", "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -77,7 +77,7 @@ version = "0.4.5" source = "git+https://github.com/servo/rust-azure#a7177c8df81554352bc51de2f5b77cbb47ec2635" dependencies = [ "core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", @@ -251,11 +251,11 @@ dependencies = [ [[package]] name = "cocoa" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "objc 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -366,7 +366,7 @@ dependencies = [ [[package]] name = "core-graphics" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -380,7 +380,7 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -678,7 +678,7 @@ dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1941,9 +1941,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "android_glue 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "cgl 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cocoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cocoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "dwmapi-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "gl_generator 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2387,7 +2387,7 @@ source = "git+https://github.com/servo/webrender#3a6db793d0a2a1c0e55f78ba2ee8ec2 dependencies = [ "app_units 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2410,7 +2410,7 @@ source = "git+https://github.com/servo/webrender_traits#e4cbde9880d118e50de425d3 dependencies = [ "app_units 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.2.3 (git+https://github.com/servo/ipc-channel)", diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py index 7e2845b598f..1d4931dc78c 100644 --- a/python/servo/build_commands.py +++ b/python/servo/build_commands.py @@ -186,6 +186,10 @@ class MachCommands(CommandBase): if release: opts += ["--release"] + servo_path = release_path + else: + servo_path = dev_path + if jobs is not None: opts += ["-j", jobs] if verbose: @@ -241,6 +245,20 @@ class MachCommands(CommandBase): shutil.copy(path.join(self.get_top_dir(), "components", "servo", "servo.exe.manifest"), path.join(base_path, "debug" if dev else "release")) + # On the Mac, set a lovely icon. This makes it easier to pick out the Servo binary in tools + # like Instruments.app. + if sys.platform == "darwin": + try: + import Cocoa + icon_path = path.join(self.get_top_dir(), "resources", "servo.png") + icon = Cocoa.NSImage.alloc().initWithContentsOfFile_(icon_path) + if icon is not None: + Cocoa.NSWorkspace.sharedWorkspace().setIcon_forFile_options_(icon, + servo_path, + 0) + except ImportError: + pass + # Generate Desktop Notification if elapsed-time > some threshold value notify_build_done(elapsed) diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py index fcf51dbf3cb..5bc64956a15 100644 --- a/python/tidy/servo_tidy/tidy.py +++ b/python/tidy/servo_tidy/tidy.py @@ -41,6 +41,9 @@ ignored_files = [ os.path.join(".", "tests", "wpt", "metadata", "MANIFEST.json"), os.path.join(".", "tests", "wpt", "metadata-css", "MANIFEST.json"), os.path.join(".", "components", "script", "dom", "webidls", "ForceTouchEvent.webidl"), + # FIXME(pcwalton, #11679): This is a workaround for a tidy error on the quoted string + # `"__TEXT,_info_plist"` inside an attribute. + os.path.join(".", "components", "servo", "platform", "macos", "mod.rs"), # Hidden files os.path.join(".", "."), ] |