Simulate: fixes for windows version

This commit is contained in:
Levi Burner
2022-06-02 17:11:24 -04:00
parent 1d4461fce6
commit ed82f055e8
3 changed files with 27 additions and 2 deletions
+7 -1
View File
@@ -82,6 +82,7 @@ target_link_options(uitools PRIVATE ${MUJOCO_SIMULATE_LINK_OPTIONS})
add_library(mjsimulate SHARED)
target_sources(mjsimulate PUBLIC simulate.h array_safety.h simulate.cc)
target_include_directories(mjsimulate PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_definitions(mjsimulate PUBLIC MJSIMULATE_DLL_EXPORTS)
target_compile_options(mjsimulate PUBLIC ${MUJOCO_SIMULATE_COMPILE_OPTIONS})
target_link_libraries(mjsimulate PUBLIC glfw uitools mujoco::mujoco) # TODO is that right
target_link_options(mjsimulate PRIVATE ${MUJOCO_SIMULATE_LINK_OPTIONS})
@@ -117,7 +118,12 @@ target_link_libraries(
glfw
Threads::Threads
)
target_link_options(simulate PRIVATE ${MUJOCO_SAMPLE_LINK_OPTIONS})
if(WIN32)
target_link_options(simulate PRIVATE ${MUJOCO_SIMULATE_LINK_OPTIONS} /STACK:8000000)
else()
target_link_options(simulate PRIVATE ${MUJOCO_SIMULATE_LINK_OPTIONS})
endif()
if(APPLE)
target_sources(simulate PRIVATE macos_save.mm)
+6
View File
@@ -1901,6 +1901,12 @@ void Simulate::renderthread(void) {
this->clearcallback();
mjv_freeScene(&this->scn);
mjr_freeContext(&this->con);
// terminate GLFW (crashes with Linux NVidia drivers)
// Must call terminate in this thread on Windows with NVidia drivers (Intel is fine)
#if defined(__APPLE__) || defined(_WIN32)
glfwTerminate();
#endif
}
} // namespace mujoco
+14 -1
View File
@@ -20,12 +20,25 @@
#include "uitools.h"
#ifdef MJSIMULATE_STATIC
// static library
#define MJSIMULATEAPI
#define MJSIMULATELOCAL
#else
#ifdef MJSIMULATE_DLL_EXPORTS
#define MJSIMULATEAPI MUJOCO_HELPER_DLL_EXPORT
#else
#define MJSIMULATEAPI MUJOCO_HELPER_DLL_IMPORT
#endif
#define MJSIMULATELOCAL MUJOCO_HELPER_DLL_LOCAL
#endif
namespace mujoco {
//-------------------------------- global -----------------------------------------------
// Simulate states not contained in MuJoCo structures
class Simulate {
class MJSIMULATEAPI Simulate {
public:
// create object and initialize the simulate ui
Simulate(void);