mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Set the placeholder canvas element of offscreenCanvas to a weak reference in transferControlToOffscreen() (#37764)
Set the placeholder canvas element of offscreenCanvas to a weak reference in transferControlToOffscreen() Testing: I do not understand how to test it, suggestions appreciated Fixes: https://github.com/servo/servo/issues/35626 --------- Signed-off-by: Rodion Borovyk <rodion.borovyk@gmail.com>
This commit is contained in:
parent
4cd7c5196b
commit
60c10d710d
5 changed files with 52 additions and 27 deletions
|
@ -7,7 +7,7 @@
|
|||
use euclid::default::Size2D;
|
||||
use layout_api::HTMLCanvasData;
|
||||
use pixels::Snapshot;
|
||||
use script_bindings::root::Dom;
|
||||
use script_bindings::root::{Dom, DomRoot};
|
||||
use webrender_api::ImageKey;
|
||||
|
||||
use crate::dom::bindings::codegen::UnionTypes::HTMLCanvasElementOrOffscreenCanvas;
|
||||
|
@ -81,7 +81,7 @@ pub(crate) trait CanvasContext {
|
|||
|
||||
pub(crate) trait CanvasHelpers {
|
||||
fn size(&self) -> Size2D<u32>;
|
||||
fn canvas(&self) -> Option<&HTMLCanvasElement>;
|
||||
fn canvas(&self) -> Option<DomRoot<HTMLCanvasElement>>;
|
||||
}
|
||||
|
||||
impl CanvasHelpers for HTMLCanvasElementOrOffscreenCanvas {
|
||||
|
@ -94,9 +94,9 @@ impl CanvasHelpers for HTMLCanvasElementOrOffscreenCanvas {
|
|||
}
|
||||
}
|
||||
|
||||
fn canvas(&self) -> Option<&HTMLCanvasElement> {
|
||||
fn canvas(&self) -> Option<DomRoot<HTMLCanvasElement>> {
|
||||
match self {
|
||||
HTMLCanvasElementOrOffscreenCanvas::HTMLCanvasElement(canvas) => Some(canvas),
|
||||
HTMLCanvasElementOrOffscreenCanvas::HTMLCanvasElement(canvas) => Some(canvas.clone()),
|
||||
HTMLCanvasElementOrOffscreenCanvas::OffscreenCanvas(canvas) => canvas.placeholder(),
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue