mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Use task! to post worker messages
This commit is contained in:
parent
56a546afcd
commit
76745699d2
2 changed files with 5 additions and 26 deletions
|
@ -17,7 +17,7 @@ use dom::bindings::str::DOMString;
|
||||||
use dom::bindings::structuredclone::StructuredCloneData;
|
use dom::bindings::structuredclone::StructuredCloneData;
|
||||||
use dom::globalscope::GlobalScope;
|
use dom::globalscope::GlobalScope;
|
||||||
use dom::messageevent::MessageEvent;
|
use dom::messageevent::MessageEvent;
|
||||||
use dom::worker::{TrustedWorkerAddress, WorkerErrorHandler, WorkerMessageHandler};
|
use dom::worker::{TrustedWorkerAddress, Worker, WorkerErrorHandler};
|
||||||
use dom::workerglobalscope::WorkerGlobalScope;
|
use dom::workerglobalscope::WorkerGlobalScope;
|
||||||
use dom_struct::dom_struct;
|
use dom_struct::dom_struct;
|
||||||
use ipc_channel::ipc::{self, IpcReceiver, IpcSender};
|
use ipc_channel::ipc::{self, IpcReceiver, IpcSender};
|
||||||
|
@ -375,10 +375,10 @@ impl DedicatedWorkerGlobalScopeMethods for DedicatedWorkerGlobalScope {
|
||||||
unsafe fn PostMessage(&self, cx: *mut JSContext, message: HandleValue) -> ErrorResult {
|
unsafe fn PostMessage(&self, cx: *mut JSContext, message: HandleValue) -> ErrorResult {
|
||||||
let data = StructuredCloneData::write(cx, message)?;
|
let data = StructuredCloneData::write(cx, message)?;
|
||||||
let worker = self.worker.borrow().as_ref().unwrap().clone();
|
let worker = self.worker.borrow().as_ref().unwrap().clone();
|
||||||
self.parent_sender
|
let task = box task!(post_worker_message: move || {
|
||||||
.send(CommonScriptMsg::Task(WorkerEvent,
|
Worker::handle_message(worker, data);
|
||||||
box WorkerMessageHandler::new(worker, data)))
|
});
|
||||||
.unwrap();
|
self.parent_sender.send(CommonScriptMsg::Task(WorkerEvent, task)).unwrap();
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -198,27 +198,6 @@ impl WorkerMethods for Worker {
|
||||||
event_handler!(error, GetOnerror, SetOnerror);
|
event_handler!(error, GetOnerror, SetOnerror);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct WorkerMessageHandler {
|
|
||||||
addr: TrustedWorkerAddress,
|
|
||||||
data: StructuredCloneData,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl WorkerMessageHandler {
|
|
||||||
pub fn new(addr: TrustedWorkerAddress, data: StructuredCloneData) -> WorkerMessageHandler {
|
|
||||||
WorkerMessageHandler {
|
|
||||||
addr: addr,
|
|
||||||
data: data,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Task for WorkerMessageHandler {
|
|
||||||
fn run(self: Box<Self>) {
|
|
||||||
let this = *self;
|
|
||||||
Worker::handle_message(this.addr, this.data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Task for SimpleWorkerErrorHandler<Worker> {
|
impl Task for SimpleWorkerErrorHandler<Worker> {
|
||||||
#[allow(unrooted_must_root)]
|
#[allow(unrooted_must_root)]
|
||||||
fn run(self: Box<Self>) {
|
fn run(self: Box<Self>) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue