mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
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/
This commit is contained in:
parent
a259bb38b1
commit
0d963f5bf8
4 changed files with 56 additions and 0 deletions
|
@ -37,6 +37,17 @@ use servo::util::opts::{self, ArgumentParsingResult};
|
||||||
use servo::util::panicking::initiate_panic_hook;
|
use servo::util::panicking::initiate_panic_hook;
|
||||||
use std::rc::Rc;
|
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() {
|
fn main() {
|
||||||
// Parse the command line options and store them globally
|
// Parse the command line options and store them globally
|
||||||
let opts_result = opts::from_cmdline_args(&*args());
|
let opts_result = opts::from_cmdline_args(&*args());
|
||||||
|
@ -82,6 +93,8 @@ fn main() {
|
||||||
};
|
};
|
||||||
|
|
||||||
unregister_glutin_resize_handler(&window);
|
unregister_glutin_resize_handler(&window);
|
||||||
|
|
||||||
|
platform::deinit()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn register_glutin_resize_handler(window: &Rc<app::window::Window>,
|
fn register_glutin_resize_handler(window: &Rc<app::window::Window>,
|
||||||
|
|
21
components/servo/platform/macos/Info.plist
Normal file
21
components/servo/platform/macos/Info.plist
Normal file
|
@ -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>
|
||||||
|
|
19
components/servo/platform/macos/mod.rs
Normal file
19
components/servo/platform/macos/mod.rs
Normal file
|
@ -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");
|
||||||
|
|
|
@ -41,6 +41,9 @@ ignored_files = [
|
||||||
os.path.join(".", "tests", "wpt", "metadata", "MANIFEST.json"),
|
os.path.join(".", "tests", "wpt", "metadata", "MANIFEST.json"),
|
||||||
os.path.join(".", "tests", "wpt", "metadata-css", "MANIFEST.json"),
|
os.path.join(".", "tests", "wpt", "metadata-css", "MANIFEST.json"),
|
||||||
os.path.join(".", "components", "script", "dom", "webidls", "ForceTouchEvent.webidl"),
|
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
|
# Hidden files
|
||||||
os.path.join(".", "."),
|
os.path.join(".", "."),
|
||||||
]
|
]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue