Bug 1328602 - Expose Renderer through the c bindings. r=gfx?

This commit is contained in:
Nicolas Silva 2017-01-06 19:10:03 +01:00
Родитель cbfc9a8d28
Коммит a9829d0c64
2 изменённых файлов: 37 добавлений и 0 удалений

Просмотреть файл

@ -41,6 +41,37 @@ extern {
fn is_in_compositor_thread() -> bool;
}
#[no_mangle]
pub extern fn wr_renderer_update(renderer: &mut Renderer) {
renderer.update();
}
#[no_mangle]
pub extern fn wr_renderer_render(renderer: &mut Renderer, width: u32, height: u32) {
renderer.render(DeviceUintSize::new(width, height));
}
#[no_mangle]
pub extern fn wr_renderer_set_profiler_enabled(renderer: &mut Renderer, enabled: bool) {
renderer.set_profiler_enabled(enabled);
}
#[no_mangle]
pub extern fn wr_renderer_current_epoch(renderer: &mut Renderer,
pipeline_id: PipelineId,
out_epoch: &mut Epoch) -> bool {
if let Some(epoch) = renderer.current_epoch(pipeline_id) {
*out_epoch = epoch;
return true;
}
return false;
}
#[no_mangle]
pub unsafe extern fn wr_renderer_delete(renderer: *mut Renderer) {
let _ = Box::from_raw(renderer);
}
pub struct WebRenderFrameBuilder {
pub root_pipeline_id: PipelineId,
pub dl_builder: webrender_traits::DisplayListBuilder,

Просмотреть файл

@ -10,6 +10,12 @@ extern "C" {
bool is_in_compositor_thread();
void* get_proc_address_from_glcontext(void* glcontext_ptr, const char* procname);
struct WrRenderer;
void wr_renderer_update(WrRenderer* renderer);
void wr_renderer_render(WrRenderer* renderer, uint32_t width, uint32_t height);
void wr_renderer_set_profiler_enabled(WrRenderer* renderer, bool enabled);
bool wr_renderer_current_epoch(WrRenderer* renderer, uint64_t pipeline_id, uint32_t* out_epoch);
enum WRImageFormat {
Invalid,
A8,