diff options
author | Josh Matthews <josh@joshmatthews.net> | 2016-07-14 13:05:01 -0400 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2016-07-14 13:27:41 -0400 |
commit | 2aef518ce672b8037913fb1a33980475e02259f8 (patch) | |
tree | e0d1a1286ce653115c661867ad286ece6a138b43 /components/script/task_source/user_interaction.rs | |
parent | 0e4865ea1ada7294d89581704f047b521f985c69 (diff) | |
download | servo-2aef518ce672b8037913fb1a33980475e02259f8.tar.gz servo-2aef518ce672b8037913fb1a33980475e02259f8.zip |
Make task queue API usable from non-main threads.
Diffstat (limited to 'components/script/task_source/user_interaction.rs')
-rw-r--r-- | components/script/task_source/user_interaction.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/components/script/task_source/user_interaction.rs b/components/script/task_source/user_interaction.rs index 2f4c0923801..cddafb80ee4 100644 --- a/components/script/task_source/user_interaction.rs +++ b/components/script/task_source/user_interaction.rs @@ -2,11 +2,12 @@ * 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 dom::bindings::global::GlobalRef; use dom::bindings::refcounted::Trusted; use dom::event::{EventBubbles, EventCancelable, EventRunnable}; use dom::eventtarget::EventTarget; use dom::window::Window; -use script_thread::{MainThreadScriptMsg, Runnable, ScriptThread}; +use script_thread::{MainThreadScriptMsg, Runnable, RunnableWrapper, ScriptThread}; use std::result::Result; use std::sync::mpsc::Sender; use string_cache::Atom; @@ -16,8 +17,12 @@ use task_source::TaskSource; pub struct UserInteractionTaskSource(pub Sender<MainThreadScriptMsg>); impl TaskSource for UserInteractionTaskSource { - fn queue<T: Runnable + Send + 'static>(&self, msg: Box<T>, window: &Window) -> Result<(), ()> { - let msg = UserInteractionTask(window.get_runnable_wrapper().wrap_runnable(msg)); + fn queue_with_wrapper<T>(&self, + msg: Box<T>, + wrapper: &RunnableWrapper) + -> Result<(), ()> + where T: Runnable + Send + 'static { + let msg = UserInteractionTask(wrapper.wrap_runnable(msg)); self.0.send(MainThreadScriptMsg::UserInteraction(msg)).map_err(|_| ()) } } @@ -36,7 +41,7 @@ impl UserInteractionTaskSource { bubbles: bubbles, cancelable: cancelable, }; - let _ = self.queue(runnable, window); + let _ = self.queue(runnable, GlobalRef::Window(window)); } } |