compositing/
render_notifier.rs1use base::id::PainterId;
6use compositing_traits::{CompositorMsg, CompositorProxy};
7use webrender_api::{DocumentId, FramePublishId, FrameReadyParams};
8
9#[derive(Clone)]
10pub(crate) struct RenderNotifier {
11 painter_id: PainterId,
12 compositor_proxy: CompositorProxy,
13}
14
15impl RenderNotifier {
16 pub(crate) fn new(painter_id: PainterId, compositor_proxy: CompositorProxy) -> RenderNotifier {
17 RenderNotifier {
18 painter_id,
19 compositor_proxy,
20 }
21 }
22}
23
24impl webrender_api::RenderNotifier for RenderNotifier {
25 fn clone(&self) -> Box<dyn webrender_api::RenderNotifier> {
26 Box::new(RenderNotifier::new(
27 self.painter_id,
28 self.compositor_proxy.clone(),
29 ))
30 }
31
32 fn wake_up(&self, _composite_needed: bool) {}
33
34 fn new_frame_ready(
35 &self,
36 document_id: DocumentId,
37 _: FramePublishId,
38 frame_ready_params: &FrameReadyParams,
39 ) {
40 self.compositor_proxy
41 .send(CompositorMsg::NewWebRenderFrameReady(
42 self.painter_id,
43 document_id,
44 frame_ready_params.render,
45 ));
46 }
47}