From 178f696df341e12e373217bae2c5673192b89c6e Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Tue, 19 May 2015 20:05:28 +0200 Subject: Optimise use of RootedVec in ScriptTask::handle_event() --- components/script/script_task.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'components/script/script_task.rs') diff --git a/components/script/script_task.rs b/components/script/script_task.rs index b114819c613..5d26ef23010 100644 --- a/components/script/script_task.rs +++ b/components/script/script_task.rs @@ -88,6 +88,7 @@ use std::any::Any; use std::borrow::ToOwned; use std::cell::{Cell, RefCell}; use std::collections::HashSet; +use std::mem; use std::option::Option; use std::ptr; use std::rc::Rc; @@ -1340,11 +1341,12 @@ impl ScriptTask { } let page = get_page(&self.root_page(), pipeline_id); let document = page.document().root(); + // We temporarily steal the list of targets over which the mouse is to pass it to + // handle_mouse_move_event() in a safe RootedVec container. let mut mouse_over_targets = RootedVec::new(); - mouse_over_targets.append(&mut *self.mouse_over_targets.borrow_mut()); - + mem::swap(&mut *self.mouse_over_targets.borrow_mut(), &mut *mouse_over_targets); document.r().handle_mouse_move_event(self.js_runtime.rt(), point, &mut mouse_over_targets); - *self.mouse_over_targets.borrow_mut() = mouse_over_targets.clone(); + mem::swap(&mut *self.mouse_over_targets.borrow_mut(), &mut *mouse_over_targets); } KeyEvent(key, state, modifiers) => { -- cgit v1.2.3