shutting down IPC router thread when a process shuts down.

This commit is contained in:
Gregory Terzian 2020-03-26 00:34:48 +08:00
parent 67b433648c
commit 53497fe87f
3 changed files with 12 additions and 2 deletions

4
Cargo.lock generated
View file

@ -2748,9 +2748,9 @@ dependencies = [
[[package]] [[package]]
name = "ipc-channel" name = "ipc-channel"
version = "0.14.0" version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55162cbe44dacbc0b4a66d1067c885a9d5975f068a432801bba0493e1ece7a51" checksum = "3698b8affd5656032a074a7d40b3c2a29b71971f3e1ff6042b9d40724e20d97c"
dependencies = [ dependencies = [
"bincode", "bincode",
"crossbeam-channel", "crossbeam-channel",

View file

@ -2833,6 +2833,9 @@ where
debug!("Asking compositor to complete shutdown."); debug!("Asking compositor to complete shutdown.");
self.compositor_proxy self.compositor_proxy
.send(ToCompositorMsg::ShutdownComplete); .send(ToCompositorMsg::ShutdownComplete);
debug!("Shutting-down IPC router thread in constellation.");
ROUTER.shutdown();
} }
fn handle_pipeline_exited(&mut self, pipeline_id: PipelineId) { fn handle_pipeline_exited(&mut self, pipeline_id: PipelineId) {

View file

@ -145,6 +145,7 @@ use script_traits::{ScriptToConstellationChan, TimerSchedulerMsg};
use script_traits::{TouchEventType, TouchId, UntrustedNodeAddress, WheelDelta}; use script_traits::{TouchEventType, TouchId, UntrustedNodeAddress, WheelDelta};
use script_traits::{UpdatePipelineIdReason, WebrenderIpcSender, WindowSizeData, WindowSizeType}; use script_traits::{UpdatePipelineIdReason, WebrenderIpcSender, WindowSizeData, WindowSizeType};
use servo_atoms::Atom; use servo_atoms::Atom;
use servo_config::opts;
use servo_url::{ImmutableOrigin, MutableOrigin, ServoUrl}; use servo_url::{ImmutableOrigin, MutableOrigin, ServoUrl};
use std::borrow::Cow; use std::borrow::Cow;
use std::cell::Cell; use std::cell::Cell;
@ -2908,6 +2909,12 @@ impl ScriptThread {
.as_ref() .as_ref()
.map(|bhm| bhm.unregister()); .map(|bhm| bhm.unregister());
// If we're in multiprocess mode, shut-down the IPC router for this process.
if opts::multiprocess() {
debug!("Exiting IPC router thread in script thread.");
ROUTER.shutdown();
}
debug!("Exited script thread."); debug!("Exited script thread.");
} }