From ca9ed7410856f8131344a71d35d5ad2d43e20452 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Wed, 16 Jan 2019 22:41:48 +0100 Subject: [PATCH] fix xcode __block error --- src/node_panel_brush.cpp | 2 +- src/node_panel_grid.cpp | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/node_panel_brush.cpp b/src/node_panel_brush.cpp index eafba21..08ab7ca 100644 --- a/src/node_panel_brush.cpp +++ b/src/node_panel_brush.cpp @@ -80,7 +80,7 @@ kEventResult NodePanelBrush::handle_event(Event* e) if (!m_mouse_inside) { mouse_release(); - destroy(); + parent->remove_child(this); } break; default: diff --git a/src/node_panel_grid.cpp b/src/node_panel_grid.cpp index 4e3a3e1..f2a5eca 100644 --- a/src/node_panel_grid.cpp +++ b/src/node_panel_grid.cpp @@ -252,13 +252,13 @@ void NodePanelGrid::bake_uvs() // bake normal ShaderManager::u_int(kShaderUniform::Mode, 0); m_hm_plane.draw_fill(); - __block std::unique_ptr data_nor(fb.readTextureDataFloat()); + std::unique_ptr data_nor(fb.readTextureDataFloat()); //stbi_write_png("bake-nor.png", fb.getWidth(), fb.getHeight(), 4, fb.readTextureData(), 0); // bake position ShaderManager::u_int(kShaderUniform::Mode, 1); m_hm_plane.draw_fill(); - __block std::unique_ptr data_pos(fb.readTextureDataFloat()); + std::unique_ptr data_pos(fb.readTextureDataFloat()); //stbi_write_png("bake-pos.png", fb.getWidth(), fb.getHeight(), 4, fb.readTextureData(), 0); fb.unbindFramebuffer(); @@ -289,9 +289,12 @@ void NodePanelGrid::bake_uvs() std::atomic_int pb_value(0); - __block auto data_out = std::make_unique(fb.getWidth() * fb.getHeight() * 4); + auto data_out = std::make_unique(fb.getWidth() * fb.getHeight() * 4); std::thread worker([&] { + __block float* d_pos = data_pos.get(); + __block float* d_nor = data_nor.get(); + __block glm::i8vec4* d_out = reinterpret_cast(data_out.get()); #if _WIN32 concurrency::parallel_for(int(0), fb.getHeight(), [&](int y) #elif __IOS__ || __OSX__ @@ -304,9 +307,9 @@ void NodePanelGrid::bake_uvs() for (int x = 0; x < fb.getWidth(); x++) { int i = y * fb.getHeight() + x; - auto nor = glm::make_vec3(&data_nor[i * 4]); - auto pos = glm::make_vec3(&data_pos[i * 4]); - auto& out = *reinterpret_cast(&data_out[i * 4]); + auto nor = glm::make_vec3(&d_nor[i * 4]); + auto pos = glm::make_vec3(&d_pos[i * 4]); + auto& out = d_out[i]; if (glm::dot(nor, light_dir) <= 0.f) { @@ -355,4 +358,5 @@ void NodePanelGrid::bake_uvs() //stbi_write_jpg("bake-out.jpg", fb.getWidth(), fb.getHeight(), 4, data_out.get(), 75); m_texture.update(data_out.get()); m_texture.create_mipmaps(); + App::I.async_redraw(); }