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}