From 53780568d08f07cd576c389e5953fbdf0164e9e2 Mon Sep 17 00:00:00 2001 From: Joonas Javanainen Date: Wed, 23 Dec 2015 14:56:09 +0000 Subject: [PATCH] Remove legacy ImDrawData state passing Since 1.45 the current ImDrawData is available using igGetDrawData() so no callback is needed at all. --- src/lib.rs | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index a2bb526..459b9a2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -122,9 +122,6 @@ pub fn get_version() -> &'static str { impl ImGui { pub fn init() -> ImGui { - let io: &mut imgui_sys::ImGuiIO = unsafe { mem::transmute(imgui_sys::igGetIO()) }; - io.render_draw_lists_fn = Some(render_draw_lists); - ImGui { ini_filename: None, log_filename: None @@ -333,12 +330,10 @@ impl<'ui> Ui<'ui> { pub fn render(self, mut f: F) -> Result<(), E> where F: FnMut(DrawList<'ui>) -> Result<(), E> { unsafe { - let mut im_draw_data = mem::zeroed(); - RENDER_DRAW_LISTS_STATE.0 = &mut im_draw_data; imgui_sys::igRender(); - RENDER_DRAW_LISTS_STATE.0 = ptr::null_mut(); - for &cmd_list in im_draw_data.cmd_lists() { + let draw_data = imgui_sys::igGetDrawData(); + for &cmd_list in (*draw_data).cmd_lists() { let draw_list = DrawList { cmd_buffer: (*cmd_list).cmd_buffer.as_slice(), @@ -495,15 +490,3 @@ impl<'ui> Ui<'ui> { pub fn menu<'p>(&self, label: ImStr<'p>) -> Menu<'ui, 'p> { Menu::new(label) } pub fn menu_item<'p>(&self, label: ImStr<'p>) -> MenuItem<'ui, 'p> { MenuItem::new(label) } } - -struct RenderDrawListsState(*mut imgui_sys::ImDrawData); -unsafe impl Sync for RenderDrawListsState {} - -static mut RENDER_DRAW_LISTS_STATE: RenderDrawListsState = - RenderDrawListsState(0 as *mut imgui_sys::ImDrawData); - -extern "C" fn render_draw_lists(data: *mut imgui_sys::ImDrawData) { - unsafe { - ptr::copy_nonoverlapping(data, RENDER_DRAW_LISTS_STATE.0, 1); - } -}