|
|
@ -108,25 +108,22 @@ pub fn set_panic_hook(use_stderr: bool) { |
|
|
|
|
|
|
|
|
|
|
|
// If we get a `WouldBlock` error, we know that the `Gfx` service has been initialized.
|
|
|
|
// If we get a `WouldBlock` error, we know that the `Gfx` service has been initialized.
|
|
|
|
// Otherwise fallback to printing over stderr.
|
|
|
|
// Otherwise fallback to printing over stderr.
|
|
|
|
match GFX_ACTIVE.try_lock() { |
|
|
|
if let Err(TryLockError::WouldBlock) = GFX_ACTIVE.try_lock() { |
|
|
|
Err(TryLockError::WouldBlock) => { |
|
|
|
if use_stderr { |
|
|
|
if use_stderr { |
|
|
|
print_to_stderr(name, panic_info); |
|
|
|
print_to_stderr(name, panic_info); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let payload = format!("thread '{name}' {panic_info}"); |
|
|
|
let payload = format!("thread '{name}' {panic_info}"); |
|
|
|
|
|
|
|
|
|
|
|
let mut popup = PopUp::new(Kind::Top); |
|
|
|
let mut popup = PopUp::new(Kind::Top); |
|
|
|
|
|
|
|
|
|
|
|
popup.set_text(&payload); |
|
|
|
popup.set_text(&payload); |
|
|
|
|
|
|
|
|
|
|
|
unsafe { |
|
|
|
unsafe { |
|
|
|
popup.launch_unchecked(); |
|
|
|
popup.launch_unchecked(); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
_ => { |
|
|
|
|
|
|
|
print_to_stderr(name, panic_info); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
print_to_stderr(name, panic_info); |
|
|
|
} |
|
|
|
} |
|
|
|
})); |
|
|
|
})); |
|
|
|
|
|
|
|
|
|
|
|