Optimise use of RootedVec in ScriptTask::handle_event()

This commit is contained in:
Anthony Ramine 2015-05-19 20:05:28 +02:00
parent 22931145ab
commit 178f696df3

View file

@ -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) => {