Revert "compositor: Create a single cross-process compositor API (#33619)" (#33645)

This reverts commit f2f5614ad6.

This is causing intermittent crashes: 3104425501

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
Martin Robinson 2024-10-04 11:08:19 +02:00 committed by GitHub
parent 826e31eaa5
commit 48f8ff6236
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
28 changed files with 799 additions and 545 deletions

View file

@ -17,7 +17,7 @@ use headers::{ContentLength, ContentRange, HeaderMapExt};
use html5ever::{local_name, namespace_url, ns, LocalName, Prefix};
use http::header::{self, HeaderMap, HeaderValue};
use http::StatusCode;
use ipc_channel::ipc::{self, IpcSharedMemory};
use ipc_channel::ipc;
use ipc_channel::router::ROUTER;
use js::jsapi::JSAutoRealm;
use media::{glplayer_channel, GLPlayerMsg, GLPlayerMsgForward, WindowGLContext};
@ -35,10 +35,10 @@ use servo_media::player::{PlaybackState, Player, PlayerError, PlayerEvent, SeekL
use servo_media::{ClientContextId, ServoMedia, SupportsMediaType};
use servo_url::ServoUrl;
use webrender_api::{
ExternalImageData, ExternalImageId, ExternalImageType, ImageBufferKind, ImageDescriptor,
ImageDescriptorFlags, ImageFormat, ImageKey,
ExternalImageData, ExternalImageId, ExternalImageType, ImageBufferKind, ImageData,
ImageDescriptor, ImageDescriptorFlags, ImageFormat, ImageKey,
};
use webrender_traits::{CrossProcessCompositorApi, ImageUpdate, SerializableImageData};
use webrender_traits::{ImageUpdate, WebRenderScriptApi};
use crate::document_loader::{LoadBlocker, LoadType};
use crate::dom::attr::Attr;
@ -156,7 +156,7 @@ impl FrameHolder {
pub struct MediaFrameRenderer {
player_id: Option<u64>,
compositor_api: CrossProcessCompositorApi,
api: WebRenderScriptApi,
current_frame: Option<(ImageKey, i32, i32)>,
old_frame: Option<ImageKey>,
very_old_frame: Option<ImageKey>,
@ -165,10 +165,10 @@ pub struct MediaFrameRenderer {
}
impl MediaFrameRenderer {
fn new(compositor_api: CrossProcessCompositorApi) -> Self {
fn new(render_api_sender: WebRenderScriptApi) -> Self {
Self {
player_id: None,
compositor_api,
api: render_api_sender,
current_frame: None,
old_frame: None,
very_old_frame: None,
@ -213,7 +213,7 @@ impl VideoFrameRenderer for MediaFrameRenderer {
updates.push(ImageUpdate::UpdateImage(
*image_key,
descriptor,
SerializableImageData::Raw(IpcSharedMemory::from_bytes(&frame.get_data())),
ImageData::Raw(frame.get_data()),
));
}
@ -228,7 +228,7 @@ impl VideoFrameRenderer for MediaFrameRenderer {
Some((ref mut image_key, ref mut width, ref mut height)) => {
self.old_frame = Some(*image_key);
let Some(new_image_key) = self.compositor_api.generate_image_key() else {
let Some(new_image_key) = self.api.generate_image_key() else {
return;
};
@ -244,13 +244,13 @@ impl VideoFrameRenderer for MediaFrameRenderer {
ImageBufferKind::Texture2D
};
SerializableImageData::External(ExternalImageData {
ImageData::External(ExternalImageData {
id: ExternalImageId(self.player_id.unwrap()),
channel_index: 0,
image_type: ExternalImageType::TextureHandle(texture_target),
})
} else {
SerializableImageData::Raw(IpcSharedMemory::from_bytes(&frame.get_data()))
ImageData::Raw(frame.get_data())
};
self.current_frame_holder
@ -260,7 +260,7 @@ impl VideoFrameRenderer for MediaFrameRenderer {
updates.push(ImageUpdate::AddImage(new_image_key, descriptor, image_data));
},
None => {
let Some(image_key) = self.compositor_api.generate_image_key() else {
let Some(image_key) = self.api.generate_image_key() else {
return;
};
self.current_frame = Some((image_key, frame.get_width(), frame.get_height()));
@ -272,13 +272,13 @@ impl VideoFrameRenderer for MediaFrameRenderer {
ImageBufferKind::Texture2D
};
SerializableImageData::External(ExternalImageData {
ImageData::External(ExternalImageData {
id: ExternalImageId(self.player_id.unwrap()),
channel_index: 0,
image_type: ExternalImageType::TextureHandle(texture_target),
})
} else {
SerializableImageData::Raw(IpcSharedMemory::from_bytes(&frame.get_data()))
ImageData::Raw(frame.get_data())
};
self.current_frame_holder = Some(FrameHolder::new(frame));
@ -286,7 +286,7 @@ impl VideoFrameRenderer for MediaFrameRenderer {
updates.push(ImageUpdate::AddImage(image_key, descriptor, image_data));
},
}
self.compositor_api.update_images(updates);
self.api.update_images(updates);
}
}
@ -445,7 +445,7 @@ impl HTMLMediaElement {
in_flight_play_promises_queue: Default::default(),
player: Default::default(),
video_renderer: Arc::new(Mutex::new(MediaFrameRenderer::new(
document.window().compositor_api().clone(),
document.window().get_webrender_api_sender(),
))),
audio_renderer: Default::default(),
show_poster: Cell::new(true),