mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Prevent moving CanGc values between threads/tasks (#33902)
* Make CanGc non-sendable, and add documentation. Signed-off-by: Josh Matthews <josh@joshmatthews.net> * Update CanGc usage to fix usages that were moved between threads/tasks. Signed-off-by: Josh Matthews <josh@joshmatthews.net> --------- Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
parent
a58da5aa83
commit
b85093ad74
10 changed files with 69 additions and 89 deletions
|
@ -516,12 +516,7 @@ impl HTMLImageElement {
|
|||
});
|
||||
self.pending_request.borrow_mut().final_url = Some(url);
|
||||
self.pending_request.borrow_mut().image = Some(image);
|
||||
self.finish_reacting_to_environment_change(
|
||||
src,
|
||||
generation,
|
||||
selected_pixel_density,
|
||||
can_gc,
|
||||
);
|
||||
self.finish_reacting_to_environment_change(src, generation, selected_pixel_density);
|
||||
},
|
||||
ImageResponse::MetadataLoaded(meta) => {
|
||||
self.pending_request.borrow_mut().metadata = Some(meta);
|
||||
|
@ -1067,7 +1062,6 @@ impl HTMLImageElement {
|
|||
elem: &HTMLImageElement,
|
||||
selected_source: String,
|
||||
selected_pixel_density: f64,
|
||||
can_gc: CanGc,
|
||||
) -> IpcSender<PendingImageResponse> {
|
||||
let trusted_node = Trusted::new(elem);
|
||||
let (responder_sender, responder_receiver) = ipc::channel().unwrap();
|
||||
|
@ -1094,7 +1088,7 @@ impl HTMLImageElement {
|
|||
if generation == element.generation.get() {
|
||||
element.process_image_response_for_environment_change(image.response,
|
||||
USVString::from(selected_source_clone), generation,
|
||||
selected_pixel_density, can_gc);
|
||||
selected_pixel_density, CanGc::note());
|
||||
}
|
||||
}),
|
||||
&canceller,
|
||||
|
@ -1160,7 +1154,6 @@ impl HTMLImageElement {
|
|||
self,
|
||||
selected_source.0.clone(),
|
||||
selected_pixel_density,
|
||||
can_gc,
|
||||
);
|
||||
let cache_result = image_cache.track_image(
|
||||
img_url.clone(),
|
||||
|
@ -1177,7 +1170,6 @@ impl HTMLImageElement {
|
|||
selected_source,
|
||||
generation,
|
||||
selected_pixel_density,
|
||||
can_gc,
|
||||
)
|
||||
},
|
||||
ImageCacheResult::Available(ImageOrMetadataAvailable::MetadataAvailable(m)) => {
|
||||
|
@ -1251,7 +1243,6 @@ impl HTMLImageElement {
|
|||
src: USVString,
|
||||
generation: u32,
|
||||
selected_pixel_density: f64,
|
||||
can_gc: CanGc,
|
||||
) {
|
||||
let this = Trusted::new(self);
|
||||
let window = window_from_node(self);
|
||||
|
@ -1262,7 +1253,7 @@ impl HTMLImageElement {
|
|||
let relevant_mutation = this.generation.get() != generation;
|
||||
// Step 15.1
|
||||
if relevant_mutation {
|
||||
this.abort_request(State::Unavailable, ImageRequestPhase::Pending, can_gc);
|
||||
this.abort_request(State::Unavailable, ImageRequestPhase::Pending, CanGc::note());
|
||||
return;
|
||||
}
|
||||
// Step 15.2
|
||||
|
@ -1280,7 +1271,7 @@ impl HTMLImageElement {
|
|||
|
||||
// Step 15.5
|
||||
mem::swap(&mut this.current_request.borrow_mut(), &mut pending_request);
|
||||
this.abort_request(State::Unavailable, ImageRequestPhase::Pending, can_gc);
|
||||
this.abort_request(State::Unavailable, ImageRequestPhase::Pending, CanGc::note());
|
||||
}
|
||||
|
||||
// Step 15.6
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue