# HG changeset patch # User Sebastien Jodogne # Date 1557916138 -7200 # Node ID 419e5662d7a5cb886efba83a8e5f10980d8852fe # Parent 9631a10ed3af6ae48661a046bf2dda01d51b301c fix diff -r 9631a10ed3af -r 419e5662d7a5 Resources/CMake/OrthancStoneConfiguration.cmake --- a/Resources/CMake/OrthancStoneConfiguration.cmake Wed May 15 11:52:35 2019 +0200 +++ b/Resources/CMake/OrthancStoneConfiguration.cmake Wed May 15 12:28:58 2019 +0200 @@ -146,13 +146,19 @@ if (ENABLE_OPENGL) - include(FindOpenGL) - if (NOT OPENGL_FOUND) - message(FATAL_ERROR "Cannot find OpenGL on your system") + if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten") + # If including "FindOpenGL.cmake" using Emscripten (targetting + # WebAssembly), the "OPENGL_LIBRARIES" value incorrectly includes + # the "nul" library, which leads to warning message in Emscripten: + # 'shared:WARNING: emcc: cannot find library "nul"'. + include(FindOpenGL) + if (NOT OPENGL_FOUND) + message(FATAL_ERROR "Cannot find OpenGL on your system") + endif() + + link_libraries(${OPENGL_LIBRARIES}) endif() - link_libraries(${OPENGL_LIBRARIES}) - add_definitions( -DGL_GLEXT_PROTOTYPES=1 -DORTHANC_ENABLE_OPENGL=1 diff -r 9631a10ed3af -r 419e5662d7a5 Samples/WebAssembly/BasicScene.cpp --- a/Samples/WebAssembly/BasicScene.cpp Wed May 15 11:52:35 2019 +0200 +++ b/Samples/WebAssembly/BasicScene.cpp Wed May 15 12:28:58 2019 +0200 @@ -153,8 +153,10 @@ void SetupEvents(const std::string& canvas); public: - WebAssemblyViewport(const std::string& canvas) : + WebAssemblyViewport(MessageBroker& broker, + const std::string& canvas) : context_(canvas), + scene_(broker), compositor_(context_, scene_) { compositor_.SetFont(0, Orthanc::EmbeddedResources::UBUNTU_FONT, @@ -361,6 +363,7 @@ std::auto_ptr viewport1_; std::auto_ptr viewport2_; std::auto_ptr viewport3_; +OrthancStone::MessageBroker broker_; EM_BOOL OnWindowResize(int eventType, const EmscriptenUiEvent *uiEvent, void *userData) @@ -396,15 +399,15 @@ EMSCRIPTEN_KEEPALIVE void Initialize() { - viewport1_.reset(new OrthancStone::WebAssemblyViewport("mycanvas1")); + viewport1_.reset(new OrthancStone::WebAssemblyViewport(broker_, "mycanvas1")); PrepareScene(viewport1_->GetScene()); viewport1_->UpdateSize(); - viewport2_.reset(new OrthancStone::WebAssemblyViewport("mycanvas2")); + viewport2_.reset(new OrthancStone::WebAssemblyViewport(broker_, "mycanvas2")); PrepareScene(viewport2_->GetScene()); viewport2_->UpdateSize(); - viewport3_.reset(new OrthancStone::WebAssemblyViewport("mycanvas3")); + viewport3_.reset(new OrthancStone::WebAssemblyViewport(broker_, "mycanvas3")); PrepareScene(viewport3_->GetScene()); viewport3_->UpdateSize();