mirror of
https://github.com/servo/servo.git
synced 2025-09-19 11:20:09 +01:00
Split servoshell into Desktop and common part (#32457)
* servoshell: Move desktop files Move files related to winit into a desktop module. This is a preparation to merge the android and ohos apps into servoshell. * servoshell: Format imports * servoshell: Move panic hook into separate file * servoshell: Move desktop main * Consider ohos as not desktop * servoshell: Adjust dependencies for shared code * servoshell: Remove native-bluetooth from default features There currently is no good way to have target specific default features. * Rename desktop_main.rs to cli.rs * Remove todo
This commit is contained in:
parent
bae9f6d844
commit
ff4cd4af96
18 changed files with 233 additions and 179 deletions
47
ports/servoshell/panic_hook.rs
Normal file
47
ports/servoshell/panic_hook.rs
Normal file
|
@ -0,0 +1,47 @@
|
|||
/* 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 https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use std::io::Write;
|
||||
use std::panic::PanicInfo;
|
||||
use std::{env, thread};
|
||||
|
||||
use log::{error, warn};
|
||||
use servo::config::opts;
|
||||
|
||||
pub(crate) fn panic_hook(info: &PanicInfo) {
|
||||
warn!("Panic hook called.");
|
||||
let msg = match info.payload().downcast_ref::<&'static str>() {
|
||||
Some(s) => *s,
|
||||
None => match info.payload().downcast_ref::<String>() {
|
||||
Some(s) => &**s,
|
||||
None => "Box<Any>",
|
||||
},
|
||||
};
|
||||
let current_thread = thread::current();
|
||||
let name = current_thread.name().unwrap_or("<unnamed>");
|
||||
let stderr = std::io::stderr();
|
||||
let mut stderr = stderr.lock();
|
||||
if let Some(location) = info.location() {
|
||||
let _ = writeln!(
|
||||
&mut stderr,
|
||||
"{} (thread {}, at {}:{})",
|
||||
msg,
|
||||
name,
|
||||
location.file(),
|
||||
location.line()
|
||||
);
|
||||
} else {
|
||||
let _ = writeln!(&mut stderr, "{} (thread {})", msg, name);
|
||||
}
|
||||
if env::var("RUST_BACKTRACE").is_ok() {
|
||||
let _ = crate::backtrace::print(&mut stderr);
|
||||
}
|
||||
drop(stderr);
|
||||
|
||||
if opts::get().hard_fail && !opts::get().multiprocess {
|
||||
std::process::exit(1);
|
||||
}
|
||||
|
||||
error!("{}", msg);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue