From 59b262777c83d12608feaefaaa85f57762e73b2f Mon Sep 17 00:00:00 2001 From: Dynamitos Date: Wed, 13 Oct 2021 15:20:30 +0200 Subject: [PATCH] Fixing linux build kind of --- .vscode/c_cpp_properties.json | 4 +- CMakeLists.txt | 8 ++-- cmake/FindAftermath.cmake | 25 +++-------- cmake/FindAssimp.cmake | 17 +++++++- cmake/FindGLFW.cmake | 29 ++++++------- cmake/FindKTX.cmake | 11 +++++ cmake/FindSLANG.cmake | 43 +++++++++++-------- cmake/SuperBuild.cmake | 27 +++++------- .../Graphics/RenderPass/LightCullingPass.h | 6 +-- src/Engine/Graphics/RenderPass/RenderPass.h | 2 +- src/Engine/Graphics/Vulkan/CMakeLists.txt | 5 --- .../Vulkan/NsightAftermathGpuCrashTracker.cpp | 18 ++++---- src/Engine/Graphics/Vulkan/VulkanGraphics.cpp | 2 +- src/Engine/Graphics/Vulkan/VulkanGraphics.h | 3 +- src/Engine/ThreadPool.h | 1 + src/Engine/UI/RenderHierarchy.cpp | 2 +- src/Engine/UI/RenderHierarchy.h | 7 +++ test/Engine/EngineTest.h | 1 - 18 files changed, 111 insertions(+), 100 deletions(-) diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 2c29662..277db7f 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -4,7 +4,7 @@ "name": "Win32", "includePath": [ "${workspaceFolder}/**", - "${VULKAN_SDK}\\Include" + "external/**" ], "defines": [ "_DEBUG", @@ -16,7 +16,7 @@ "cppStandard": "c++20", "browse": { "path": [ - "${VULKAN_SDK}/**" + "external/**" ] } } diff --git a/CMakeLists.txt b/CMakeLists.txt index 268ce05..b3da341 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,6 @@ set(CMAKE_CXX_STANDARD 20) # Handle superbuild first option (USE_SUPERBUILD "Whether or not a superbuild should be invoked" ON) - set(ENGINE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/src/Engine) set(EXTERNAL_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/external) set(ASSIMP_ROOT ${EXTERNAL_ROOT}/assimp) @@ -22,7 +21,6 @@ set(NSAM_ROOT ${EXTERNAL_ROOT}/aftermath) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/) set(Boost_USE_STATIC_LIBS OFF) -set(Boost_LIB_PREFIX lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}) #Workaround for vs, because it places artifacts into an additional subfolder @@ -81,8 +79,10 @@ target_link_libraries(SeeleEngine ${SLANG_LIBRARIES}) target_link_libraries(SeeleEngine ${ASSIMP_LIBRARIES}) target_link_libraries(SeeleEngine ${NSAM_LIBRARIES}) target_link_libraries(SeeleEngine ${KTX_LIBRARIES}) -#target_link_libraries(SeeleEngine ${SPIRV_LIBRARIES}) - +if(UNIX) + target_link_libraries(SeeleEngine Threads::Threads) + target_link_libraries(SeeleEngine dl) +endif() target_precompile_headers(SeeleEngine PRIVATE diff --git a/cmake/FindAftermath.cmake b/cmake/FindAftermath.cmake index a0c5119..1de1c66 100644 --- a/cmake/FindAftermath.cmake +++ b/cmake/FindAftermath.cmake @@ -62,33 +62,18 @@ else() # Find include files find_path( NSAM_INCLUDE_DIR - NAMES NSAM/nsam3.h + NAMES GFSDK_Aftermath.h PATHS /usr/include /usr/local/include /sw/include /opt/local/include + ${NSAM_ROOT}/include DOC "The directory where GL/nsam.h resides") - # Find library files - # Try to use static libraries - #find_library( - # NSAM_LIBRARY - # NAMES nsam3 - # PATHS - # /usr/lib64 - # /usr/lib - # /usr/local/lib64 - # /usr/local/lib - # /sw/lib - # /opt/local/lib - # ${NSAM_ROOT}/lib - # DOC "The NSAM library") - set(NSAM_LIBRARY "") - find_file( NSAM_BINARY - NAMES libnsam${CMAKE_DEBUG_POSTFIX}.so + NAMES libGFSDK_Aftermath_Lib.${CMAKE_PLATFORM}.so PATHS /usr/lib64 /usr/lib @@ -96,8 +81,8 @@ else() /usr/local/lib /sw/lib /opt/local/lib - ${NSAM_ROOT}/src - ) + ${NSAM_ROOT}/lib + PATH_SUFFIXES x64 x86) endif() # Handle REQUIRD argument, define *_FOUND variable diff --git a/cmake/FindAssimp.cmake b/cmake/FindAssimp.cmake index a321eac..ea544d5 100644 --- a/cmake/FindAssimp.cmake +++ b/cmake/FindAssimp.cmake @@ -55,6 +55,19 @@ else() # Find library files find_library( ASSIMP_LIBRARY + NAMES libassimp${CMAKE_DEBUG_POSTFIX}.a + PATHS + /usr/lib64 + /usr/lib + /usr/local/lib64 + /usr/local/lib + /sw/lib + /opt/local/lib + ${ASSIMP_ROOT}/code + DOC "Assimp library file") + + find_file( + ASSIMP_BINARY NAMES libassimp${CMAKE_DEBUG_POSTFIX}.so PATHS /usr/lib64 @@ -63,12 +76,12 @@ else() /usr/local/lib /sw/lib /opt/local/lib - ${ASSIMP_ROOT}/bin + ${ASSIMP_ROOT}/code DOC "The Assimp library") endif() # Handle REQUIRD argument, define *_FOUND variable -find_package_handle_standard_args(assimp DEFAULT_MSG ASSIMP_INCLUDE_DIR ASSIMP_LIBRARY) +find_package_handle_standard_args(assimp DEFAULT_MSG ASSIMP_INCLUDE_DIR ASSIMP_BINARY) # Define GLFW_LIBRARIES and GLFW_INCLUDE_DIRS if (ASSIMP_FOUND) diff --git a/cmake/FindGLFW.cmake b/cmake/FindGLFW.cmake index 73a4d2f..c7a44d6 100644 --- a/cmake/FindGLFW.cmake +++ b/cmake/FindGLFW.cmake @@ -70,20 +70,19 @@ else() # Find library files # Try to use static libraries - #find_library( - # GLFW_LIBRARY - # NAMES glfw3 - # PATHS - # /usr/lib64 - # /usr/lib - # /usr/local/lib64 - # /usr/local/lib - # /sw/lib - # /opt/local/lib - # ${GLFW_ROOT}/lib - # DOC "The GLFW library") - set(GLFW_LIBRARY "") - + find_library( + GLFW_LIBRARY + NAMES libglfw3${CMAKE_DEBUG_POSTFIX}.a + PATHS + /usr/lib64 + /usr/lib + /usr/local/lib64 + /usr/local/lib + /sw/lib + /opt/local/lib + ${GLFW_ROOT}/src + DOC "The GLFW library") + find_file( GLFW_BINARY NAMES libglfw${CMAKE_DEBUG_POSTFIX}.so @@ -99,7 +98,7 @@ else() endif() # Handle REQUIRD argument, define *_FOUND variable -find_package_handle_standard_args(GLFW DEFAULT_MSG GLFW_INCLUDE_DIR GLFW_BINARY) +find_package_handle_standard_args(GLFW DEFAULT_MSG GLFW_INCLUDE_DIR GLFW_LIBRARY GLFW_BINARY) # Define GLFW_LIBRARIES and GLFW_INCLUDE_DIRS if (GLFW_FOUND) diff --git a/cmake/FindKTX.cmake b/cmake/FindKTX.cmake index 048e258..9bc9d4b 100644 --- a/cmake/FindKTX.cmake +++ b/cmake/FindKTX.cmake @@ -47,6 +47,17 @@ else() /opt/local/include ${KTX_ROOT} DOC "The directory where KTX/ktx.h resides") + + find_library( + KTX_LIBRARY + NAMES libktx${CMAKE_DEBUG_POSTFIX}.so + PATHS + /usr/include + /usr/local/include + /sw/include + /opt/local/include + ${KTX_ROOT} + DOC "The directory where KTX/libktx.so resides") endif() # Handle REQUIRD argument, define *_FOUND variable diff --git a/cmake/FindSLANG.cmake b/cmake/FindSLANG.cmake index f25e21d..f4bd60e 100644 --- a/cmake/FindSLANG.cmake +++ b/cmake/FindSLANG.cmake @@ -49,7 +49,7 @@ if (WIN32) PATHS ${SLANG_BINARY_PATH}) else() - set(SLANG_BINARY_PATH ${SLANG_ROOT}/bin/linux-${CMAKE_PLATFORM}/release/) + set(SLANG_BINARY_PATH ${SLANG_ROOT}/bin/linux-${CMAKE_PLATFORM}/debug/) # Find include files find_path( SLANG_INCLUDE_DIR @@ -62,9 +62,29 @@ else() ${SLANG_ROOT} DOC "The directory where GL/glfw.h resides") + find_library( + SLANG_LIBRARY + NAMES libcore.a + PATHS + /usr/include + /usr/local/include + /sw/include + /opt/local/include + ${SLANG_BINARY_PATH} + DOC "The directory where GL/glfw.h resides") + + find_library( + SLANG_COMPILER + NAMES libcompiler-core.a + PATHS + /usr/include + /usr/local/include + /sw/include + /opt/local/include + ${SLANG_BINARY_PATH} + DOC "The directory where GL/glfw.h resides") + # Find library files - # Try to use static libraries - set(SLANG_LIBRARY "") find_library( SLANG_BINARY NAMES libslang.so @@ -77,28 +97,15 @@ else() /opt/local/lib ${SLANG_BINARY_PATH} DOC "The SLANG library") - - find_file( - SLANG_GLSLANG - NAMES libslang-glslang.so - PATHS - /usr/lib64 - /usr/lib - /usr/local/lib64 - /usr/local/lib - /sw/lib - /opt/local/lib - ${SLANG_BINARY_PATH} - ) endif() # Handle REQUIRD argument, define *_FOUND variable -find_package_handle_standard_args(SLANG DEFAULT_MSG SLANG_INCLUDE_DIR SLANG_BINARY SLANG_GLSLANG) +find_package_handle_standard_args(SLANG DEFAULT_MSG SLANG_INCLUDE_DIR SLANG_LIBRARY SLANG_BINARY) # Define SLANG_LIBRARIES and SLANG_INCLUDE_DIRS if (SLANG_FOUND) set(SLANG_BINARIES ${SLANG_BINARY} ${SLANG_GLSLANG}) - set(SLANG_LIBRARIES ${SLANG_LIBRARY}) + set(SLANG_LIBRARIES ${SLANG_LIBRARY} ${SLANG_COMPILER}) set(SLANG_INCLUDE_DIRS ${SLANG_INCLUDE_DIR}) endif() diff --git a/cmake/SuperBuild.cmake b/cmake/SuperBuild.cmake index 97bf76b..d899fc2 100644 --- a/cmake/SuperBuild.cmake +++ b/cmake/SuperBuild.cmake @@ -10,15 +10,15 @@ set(ASSIMP_BUILD_OVERALLS OFF CACHE INTERNAL "") set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE INTERNAL "") set(ASSIMP_INSTALL OFF CACHE INTERNAL "") set(ASSIMP_BUILD_ZLIB OFF CACHE INTERNAL "") -set(BUILD_SHARED_LIBS ON CACHE INTERNAL "") +set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "") add_subdirectory(${ASSIMP_ROOT} ${ASSIMP_ROOT}) target_compile_definitions(assimp PRIVATE _SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING) -#if(WIN32) -# target_compile_options(assimp PRIVATE /WX-) -#else() -# target_compile_options(assimp PRIVATE -Wno-error) -#endif() +if(WIN32) + target_compile_options(assimp PRIVATE /WX-) +else() + target_compile_options(assimp PRIVATE -Wno-error -fPIC) +endif() #-------------BOOST---------------- list(APPEND DEPENDENCIES boost) if(WIN32) @@ -30,7 +30,7 @@ ExternalProject_Add(boost SOURCE_DIR ${BOOST_ROOT} UPDATE_COMMAND "" CONFIGURE_COMMAND ./bootstrap.${BOOTSTRAP_EXTENSION} --with-libraries=serialization,test - BUILD_COMMAND ./b2 link=static -d0 + BUILD_COMMAND ./b2 -d0 BUILD_IN_SOURCE 1 INSTALL_COMMAND "") @@ -59,12 +59,13 @@ set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "GLFW lib only" ) set(GLFW_BUILD_TESTS OFF CACHE BOOL "GLFW lib only" ) set(GLFW_BUILD_DOCS OFF CACHE BOOL "GLFW lib only" ) set(GLFW_BUILD_INSTALL OFF CACHE BOOL "GLFW lib only" ) +set(GLFW_VULKAN_STATIC ON CACHE BOOL "GLFW vulkan static") add_subdirectory(${GLFW_ROOT} ${GLFW_ROOT}) #--------------SLang------------------------------ list(APPEND DEPENDENCIES slang) -string(TOLOWER release_${CMAKE_PLATFORM} SLANG_CONFIG) +string(TOLOWER debug_${CMAKE_PLATFORM} SLANG_CONFIG) if(WIN32) ExternalProject_Add(slang SOURCE_DIR ${SLANG_ROOT} @@ -72,19 +73,13 @@ ExternalProject_Add(slang CONFIGURE_COMMAND "" BUILD_COMMAND msbuild slang.sln -p:Configuration=Release -p:Platform=${CMAKE_PLATFORM} INSTALL_COMMAND "") - - set(SLANG_LIB_PATH ${SLANG_ROOT}/${SLANG_LIB_PATH}) elseif(UNIX) ExternalProject_Add(slang SOURCE_DIR ${SLANG_ROOT} BINARY_DIR ${SLANG_ROOT}/lib - CONFIGURE_COMMAND ${CMAKE_SOURCE_DIR}/premake5 --file=${CMAKE_SOURCE_DIR}/external/slang/premake5.lua gmake2 --build-location=build.linux - BUILD_COMMAND make -C ${CMAKE_SOURCE_DIR}/external/slang/build.linux config=${SLANG_CONFIG} + CONFIGURE_COMMAND ${CMAKE_SOURCE_DIR}/premake5 --file=${CMAKE_SOURCE_DIR}/external/slang/premake5.lua gmake2 --build-location=build/linux + BUILD_COMMAND make -C ${CMAKE_SOURCE_DIR}/external/slang/build/linux config=${SLANG_CONFIG} INSTALL_COMMAND "") - - string(TOLOWER bin/linux-${CMAKE_PLATFORM}/Release/libslang.so SLANG_BINARY) - string(TOLOWER bin/linux-${CMAKE_PLATFORM}/Release/libslang-glslang.so SLANG_GLSLANG) - set(SLANG_LIB_PATH) endif() diff --git a/src/Engine/Graphics/RenderPass/LightCullingPass.h b/src/Engine/Graphics/RenderPass/LightCullingPass.h index 5eb6b77..fd10e17 100644 --- a/src/Engine/Graphics/RenderPass/LightCullingPass.h +++ b/src/Engine/Graphics/RenderPass/LightCullingPass.h @@ -28,14 +28,14 @@ private: void setupFrustums(); static constexpr uint32 BLOCK_SIZE = 8; static constexpr uint32 INDEX_LIGHT_ENV = 1; - _declspec(align(16)) struct DispatchParams + struct DispatchParams { glm::uvec3 numThreadGroups; uint32_t pad0; glm::uvec3 numThreads; uint32_t pad1; } dispatchParams; - __declspec(align(16)) struct Plane + struct Plane { Vector n; float d; @@ -43,7 +43,7 @@ private: Vector p1; Vector p2; }; - __declspec(align(16)) struct Frustum + struct Frustum { Plane planes[4]; }; diff --git a/src/Engine/Graphics/RenderPass/RenderPass.h b/src/Engine/Graphics/RenderPass/RenderPass.h index 66318e9..e562629 100644 --- a/src/Engine/Graphics/RenderPass/RenderPass.h +++ b/src/Engine/Graphics/RenderPass/RenderPass.h @@ -28,7 +28,7 @@ public: virtual void createRenderPass() = 0; void setResources(PRenderGraphResources resources) { this->resources = resources; } protected: - _declspec(align(16)) struct ViewParameter + struct ViewParameter { Matrix4 viewMatrix; Matrix4 projectionMatrix; diff --git a/src/Engine/Graphics/Vulkan/CMakeLists.txt b/src/Engine/Graphics/Vulkan/CMakeLists.txt index c151a8b..cbe8ba1 100644 --- a/src/Engine/Graphics/Vulkan/CMakeLists.txt +++ b/src/Engine/Graphics/Vulkan/CMakeLists.txt @@ -1,10 +1,5 @@ target_sources(SeeleEngine PRIVATE - NsightAftermathGpuCrashTracker.h - NsightAftermathGpuCrashTracker.cpp - NsightAftermathHelpers.h - NsightAftermathShaderDatabase.h - NsightAftermathShaderDatabase.cpp VulkanAllocator.h VulkanAllocator.cpp VulkanBuffer.cpp diff --git a/src/Engine/Graphics/Vulkan/NsightAftermathGpuCrashTracker.cpp b/src/Engine/Graphics/Vulkan/NsightAftermathGpuCrashTracker.cpp index 7eb32e4..28b6428 100644 --- a/src/Engine/Graphics/Vulkan/NsightAftermathGpuCrashTracker.cpp +++ b/src/Engine/Graphics/Vulkan/NsightAftermathGpuCrashTracker.cpp @@ -45,7 +45,7 @@ GpuCrashTracker::~GpuCrashTracker() // If initialized, disable GPU crash dumps if (m_initialized) { - GFSDK_Aftermath_DisableGpuCrashDumps(); + AFTERMATH_CHECK_ERROR(GFSDK_Aftermath_DisableGpuCrashDumps()); } } @@ -91,7 +91,7 @@ void GpuCrashTracker::OnShaderDebugInfo(const void* pShaderDebugInfo, const uint // Get shader debug information identifier GFSDK_Aftermath_ShaderDebugInfoIdentifier identifier = {}; - AFTERMATH_CHECK_ERROR(GFSDK_Aftermath_GetShaderDebugInfoIdentifier( + AFTERMATH_CHECK_ERROR(PFN_GFSDK_Aftermath_GetShaderDebugInfoIdentifier( GFSDK_Aftermath_Version_API, pShaderDebugInfo, shaderDebugInfoSize, @@ -124,7 +124,7 @@ void GpuCrashTracker::WriteGpuCrashDumpToFile(const void* pGpuCrashDump, const u { // Create a GPU crash dump decoder object for the GPU crash dump. GFSDK_Aftermath_GpuCrashDump_Decoder decoder = {}; - AFTERMATH_CHECK_ERROR(GFSDK_Aftermath_GpuCrashDump_CreateDecoder( + AFTERMATH_CHECK_ERROR(PFN_GFSDK_Aftermath_GpuCrashDump_CreateDecoder( GFSDK_Aftermath_Version_API, pGpuCrashDump, gpuCrashDumpSize, @@ -133,19 +133,19 @@ void GpuCrashTracker::WriteGpuCrashDumpToFile(const void* pGpuCrashDump, const u // Use the decoder object to read basic information, like application // name, PID, etc. from the GPU crash dump. GFSDK_Aftermath_GpuCrashDump_BaseInfo baseInfo = {}; - AFTERMATH_CHECK_ERROR(GFSDK_Aftermath_GpuCrashDump_GetBaseInfo(decoder, &baseInfo)); + AFTERMATH_CHECK_ERROR(PFN_GFSDK_Aftermath_GpuCrashDump_GetBaseInfo(decoder, &baseInfo)); // Use the decoder object to query the application name that was set // in the GPU crash dump description. uint32_t applicationNameLength = 0; - AFTERMATH_CHECK_ERROR(GFSDK_Aftermath_GpuCrashDump_GetDescriptionSize( + AFTERMATH_CHECK_ERROR(PFN_GFSDK_Aftermath_GpuCrashDump_GetDescriptionSize( decoder, GFSDK_Aftermath_GpuCrashDumpDescriptionKey_ApplicationName, &applicationNameLength)); std::vector applicationName(applicationNameLength, '\0'); - AFTERMATH_CHECK_ERROR(GFSDK_Aftermath_GpuCrashDump_GetDescription( + AFTERMATH_CHECK_ERROR(PFN_GFSDK_Aftermath_GpuCrashDump_GetDescription( decoder, GFSDK_Aftermath_GpuCrashDumpDescriptionKey_ApplicationName, uint32_t(applicationName.size()), @@ -176,7 +176,7 @@ void GpuCrashTracker::WriteGpuCrashDumpToFile(const void* pGpuCrashDump, const u // Decode the crash dump to a JSON string. // Step 1: Generate the JSON and get the size. uint32_t jsonSize = 0; - AFTERMATH_CHECK_ERROR(GFSDK_Aftermath_GpuCrashDump_GenerateJSON( + AFTERMATH_CHECK_ERROR(PFN_GFSDK_Aftermath_GpuCrashDump_GenerateJSON( decoder, GFSDK_Aftermath_GpuCrashDumpDecoderFlags_ALL_INFO, GFSDK_Aftermath_GpuCrashDumpFormatterFlags_NONE, @@ -188,7 +188,7 @@ void GpuCrashTracker::WriteGpuCrashDumpToFile(const void* pGpuCrashDump, const u &jsonSize)); // Step 2: Allocate a buffer and fetch the generated JSON. std::vector json(jsonSize); - AFTERMATH_CHECK_ERROR(GFSDK_Aftermath_GpuCrashDump_GetJSON( + AFTERMATH_CHECK_ERROR(PFN_GFSDK_Aftermath_GpuCrashDump_GetJSON( decoder, uint32_t(json.size()), json.data())); @@ -203,7 +203,7 @@ void GpuCrashTracker::WriteGpuCrashDumpToFile(const void* pGpuCrashDump, const u } // Destroy the GPU crash dump decoder object. - AFTERMATH_CHECK_ERROR(GFSDK_Aftermath_GpuCrashDump_DestroyDecoder(decoder)); + AFTERMATH_CHECK_ERROR(PFN_GFSDK_Aftermath_GpuCrashDump_DestroyDecoder(decoder)); } // Helper for writing shader debug information to a file diff --git a/src/Engine/Graphics/Vulkan/VulkanGraphics.cpp b/src/Engine/Graphics/Vulkan/VulkanGraphics.cpp index c28f714..6d7e259 100644 --- a/src/Engine/Graphics/Vulkan/VulkanGraphics.cpp +++ b/src/Engine/Graphics/Vulkan/VulkanGraphics.cpp @@ -414,7 +414,7 @@ void Graphics::setupDebugCallback() VK_CHECK(CreateDebugReportCallbackEXT(instance, &createInfo, nullptr, &callback)); - crashTracker.Initialize(); + //crashTracker.Initialize(); } void Graphics::pickPhysicalDevice() diff --git a/src/Engine/Graphics/Vulkan/VulkanGraphics.h b/src/Engine/Graphics/Vulkan/VulkanGraphics.h index e578bf0..958738f 100644 --- a/src/Engine/Graphics/Vulkan/VulkanGraphics.h +++ b/src/Engine/Graphics/Vulkan/VulkanGraphics.h @@ -1,7 +1,6 @@ #pragma once #include "VulkanGraphicsResources.h" #include "Graphics/Graphics.h" -#include "NsightAftermathGpuCrashTracker.h" namespace Seele { @@ -99,7 +98,7 @@ protected: Map allocatedFramebuffers; PAllocator allocator; PStagingManager stagingManager; - GpuCrashTracker crashTracker; + //GpuCrashTracker crashTracker; friend class Window; }; diff --git a/src/Engine/ThreadPool.h b/src/Engine/ThreadPool.h index b245610..5ff03b5 100644 --- a/src/Engine/ThreadPool.h +++ b/src/Engine/ThreadPool.h @@ -58,6 +58,7 @@ public: } private: Array workers; + Map> jobs; void threadLoop(); }; static ThreadPool& getGlobalThreadPool(); diff --git a/src/Engine/UI/RenderHierarchy.cpp b/src/Engine/UI/RenderHierarchy.cpp index 4c7cb06..069f972 100644 --- a/src/Engine/UI/RenderHierarchy.cpp +++ b/src/Engine/UI/RenderHierarchy.cpp @@ -60,7 +60,7 @@ void RenderHierarchy::moveElement(PElement elementToMove, PElement newParent) void RenderHierarchy::updateHierarchy() { - Array localUpdates; + List localUpdates; { // make a local copy of the updates so we dont hold the lock for too long std::lock_guard lock(updateLock); localUpdates = updates; diff --git a/src/Engine/UI/RenderHierarchy.h b/src/Engine/UI/RenderHierarchy.h index 6f4c275..b0d0374 100644 --- a/src/Engine/UI/RenderHierarchy.h +++ b/src/Engine/UI/RenderHierarchy.h @@ -26,12 +26,19 @@ struct AddElementRenderHierarchyUpdate : public RenderHierarchyUpdate { Element* addedElement; Element* parent; + AddElementRenderHierarchyUpdate(Element* addedElement, Element* parent) + : addedElement(addedElement) + , parent(parent) + {} virtual void apply(Array& elements) override; }; struct RemoveElementRenderHierarchyUpdate : public RenderHierarchyUpdate { Element* element; + RemoveElementRenderHierarchyUpdate(Element* elementToRemove) + : element(elementToRemove) + {} virtual void apply(Array& elements) override; }; diff --git a/test/Engine/EngineTest.h b/test/Engine/EngineTest.h index ccf4582..a927a0a 100644 --- a/test/Engine/EngineTest.h +++ b/test/Engine/EngineTest.h @@ -1,5 +1,4 @@ #pragma once -#include "Fibers/JobQueue.h" namespace Seele {