diff --git a/include/openspace/gui/guipropertycomponent.h b/include/openspace/gui/guipropertycomponent.h index c29a4b985c..22b41de2cb 100644 --- a/include/openspace/gui/guipropertycomponent.h +++ b/include/openspace/gui/guipropertycomponent.h @@ -30,6 +30,7 @@ #include #include #include +#include namespace openspace { diff --git a/include/openspace/util/syncbuffer.h b/include/openspace/util/syncbuffer.h index 05202aeac8..8571778fd1 100644 --- a/include/openspace/util/syncbuffer.h +++ b/include/openspace/util/syncbuffer.h @@ -44,6 +44,18 @@ public: _encodeOffset += size; } + template<> + void encode(const std::string& s) { + const size_t size = sizeof(char) * s.size() + sizeof(int32_t); + assert(_encodeOffset + size < _n); + + int32_t length = s.length(); + memcpy(_dataStream.data() + _encodeOffset, reinterpret_cast(&length), sizeof(int32_t)); + _encodeOffset += sizeof(int32_t); + memcpy(_dataStream.data() + _encodeOffset, s.c_str(), length); + _encodeOffset += length; + } + template T decode() { const size_t size = sizeof(T); @@ -54,6 +66,19 @@ public: return value; } + template<> + std::string decode() { + int32_t length; + memcpy(reinterpret_cast(&length), _dataStream.data() + _decodeOffset, sizeof(int32_t)); + char* tmp = new char[length + 1]; + _decodeOffset += sizeof(int32_t); + memcpy(tmp, _dataStream.data() + _decodeOffset, length); + _decodeOffset += length; + tmp[length] = '\0'; + std::string ret(tmp); + delete[] tmp; + return ret; + } template void decode(T& value) { @@ -63,6 +88,11 @@ public: _decodeOffset += size; } + template<> + void decode(std::string &s) { + s = decode(); + } + void write(); void read(); diff --git a/src/gui/guiperformancecomponent.cpp b/src/gui/guiperformancecomponent.cpp index b8aaf20756..44a9ced567 100644 --- a/src/gui/guiperformancecomponent.cpp +++ b/src/gui/guiperformancecomponent.cpp @@ -28,6 +28,7 @@ #include #include #include +#include namespace { const std::string _loggerCat = "GuiPerformanceComponent"; @@ -79,7 +80,8 @@ void GuiPerformanceComponent::render() { ghoul::SharedMemory::exists(RenderEngine::PerformanceMeasurementSharedData)) { ImGui::SliderFloat2("Min values, max Value", _minMaxValues, 0.f, 10000.f); - _minMaxValues[1] = std::max(_minMaxValues[0], _minMaxValues[1]); + _minMaxValues[1] = fmaxf(_minMaxValues[0], _minMaxValues[1]); + if (!_performanceMemory) _performanceMemory = new ghoul::SharedMemory(RenderEngine::PerformanceMeasurementSharedData); diff --git a/src/scripting/scriptengine.cpp b/src/scripting/scriptengine.cpp index 218aba783e..fc749696a7 100644 --- a/src/scripting/scriptengine.cpp +++ b/src/scripting/scriptengine.cpp @@ -184,7 +184,7 @@ ScriptEngine::ScriptEngine() } ScriptEngine::~ScriptEngine() { - deinitialize(); + //deinitialize(); } bool ScriptEngine::initialize() { @@ -615,15 +615,14 @@ void ScriptEngine::deserialize(SyncBuffer* syncBuffer){ } void ScriptEngine::postSynchronizationPreDraw(){ - -} - -void ScriptEngine::preSynchronization(){ if (!_currentSyncedScript.empty()){ runScript(_currentSyncedScript); _currentSyncedScript.clear(); } +} +void ScriptEngine::preSynchronization(){ + _mutex.lock(); if (!_queuedScripts.empty()){