Skip to content

Commit

Permalink
servo: Add an Info.plist on the Mac and opt into integrated graphics.
Browse files Browse the repository at this point in the history
  • Loading branch information
pcwalton committed Jun 8, 2016
1 parent a259bb3 commit 0d963f5
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 0 deletions.
13 changes: 13 additions & 0 deletions components/servo/main.rs
Expand Up @@ -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());
Expand Down Expand Up @@ -82,6 +93,8 @@ fn main() {
};

unregister_glutin_resize_handler(&window);

platform::deinit()
}

fn register_glutin_resize_handler(window: &Rc<app::window::Window>,
Expand Down
21 changes: 21 additions & 0 deletions 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 &#169; 2016 The Servo Authors</string>
<key>CFBundleVersion</key>
<string>0.0.1</string>
<key>CFBundleIdentifier</key>
<string>org.servo.servo</string>
</dict>
</plist>

19 changes: 19 additions & 0 deletions 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");

3 changes: 3 additions & 0 deletions python/tidy/servo_tidy/tidy.py
Expand Up @@ -41,6 +41,9 @@
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(".", "."),
]
Expand Down

0 comments on commit 0d963f5

Please sign in to comment.