Bug 1612440 - Add BlobImageHandler::create_similar. r=gw

Differential Revision: https://phabricator.services.mozilla.com/D74297
This commit is contained in:
Nicolas Silva 2020-05-11 14:00:49 +00:00
parent ee478cb6d7
commit be515a3296
4 changed files with 20 additions and 0 deletions

View File

@ -656,6 +656,13 @@ fn rasterize_blob(job: Job) -> (BlobImageRequest, BlobImageResult) {
}
impl BlobImageHandler for Moz2dBlobImageHandler {
fn create_similar(&self) -> Box<dyn BlobImageHandler> {
Box::new(Self::new(
Arc::clone(&self.workers),
Arc::clone(&self.workers_low_priority),
))
}
fn add(&mut self, key: BlobImageKey, data: Arc<BlobImageData>, visible_rect: &DeviceIntRect, tile_size: TileSize) {
{
let index = BlobReader::new(&data);

View File

@ -133,6 +133,10 @@ impl CheckerboardRenderer {
}
impl api::BlobImageHandler for CheckerboardRenderer {
fn create_similar(&self) -> Box<dyn api::BlobImageHandler> {
Box::new(CheckerboardRenderer::new(Arc::clone(&self.workers)))
}
fn add(&mut self, key: api::BlobImageKey, cmds: Arc<api::BlobImageData>,
_visible_rect: &DeviceIntRect, _: api::TileSize) {
self.image_cmds

View File

@ -383,6 +383,11 @@ pub trait BlobImageHandler: Send {
/// Creates a snapshot of the current state of blob images in the handler.
fn create_blob_rasterizer(&mut self) -> Box<dyn AsyncBlobImageRasterizer>;
/// Creates an empty blob handler of the same type.
///
/// This is used to allow creating new API endpoints with blob handlers installed on them.
fn create_similar(&self) -> Box<dyn BlobImageHandler>;
/// A hook to let the blob image handler update any state related to resources that
/// are not bundled in the blob recording itself.
fn prepare_resources(

View File

@ -128,6 +128,10 @@ impl CheckerboardRenderer {
}
impl BlobImageHandler for CheckerboardRenderer {
fn create_similar(&self) -> Box<dyn BlobImageHandler> {
Box::new(CheckerboardRenderer::new(Arc::clone(&self.callbacks)))
}
fn add(&mut self, key: BlobImageKey, cmds: Arc<BlobImageData>,
_visible_rect: &DeviceIntRect, tile_size: TileSize) {
self.image_cmds