Showing the changes to libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp (1 of 25 files). Show all
Unified · Split
| @@ -1157,6 +1157,9 @@ ScriptSignalV8Proxy::ScriptSignalV8Proxy(ScriptEngineV8* engine, QObject* object · 1156 unmodified lines | |||
| 1157 | _objectLifetime.Reset(isolate, lifetime.get()); | 1157 | _objectLifetime.Reset(isolate, lifetime.get()); |
| 1158 | _objectLifetime.SetWeak(this, weakHandleCallback, v8::WeakCallbackType::kParameter); | 1158 | _objectLifetime.SetWeak(this, weakHandleCallback, v8::WeakCallbackType::kParameter); |
| 1159 | _v8Context.Reset(isolate, _engine->getContext()); | 1159 | _v8Context.Reset(isolate, _engine->getContext()); |
| 1160 | _engine->_signalProxySetLock.lockForWrite(); | ||
| 1161 | _engine->_signalProxySet.insert(this); | ||
| 1162 | _engine->_signalProxySetLock.unlock(); | ||
| 1160 | } | 1163 | } |
| 1161 | 1164 | ||
| 1162 | ScriptSignalV8Proxy::~ScriptSignalV8Proxy() { | 1165 | ScriptSignalV8Proxy::~ScriptSignalV8Proxy() { |
| @@ -1166,6 +1169,12 @@ ScriptSignalV8Proxy::~ScriptSignalV8Proxy() { · 3 unmodified lines | |||
| 1166 | v8::HandleScope handleScope(isolate); | 1169 | v8::HandleScope handleScope(isolate); |
| 1167 | _objectLifetime.Reset(); | 1170 | _objectLifetime.Reset(); |
| 1168 | _v8Context.Reset(); | 1171 | _v8Context.Reset(); |
| 1172 | #ifdef OVERTE_SCRIPT_USE_AFTER_DELETE_GUARD | ||
| 1173 | Q_ASSERT(!_engine->_wasDestroyed); | ||
| 1174 | #endif | ||
| 1175 | _engine->_signalProxySetLock.lockForWrite(); | ||
| 1176 | _engine->_signalProxySet.remove(this); | ||
| 1177 | _engine->_signalProxySetLock.unlock(); | ||
| 1169 | } | 1178 | } |
| 1170 | 1179 | ||
| 1171 | void ScriptSignalV8Proxy::weakHandleCallback(const v8::WeakCallbackInfo<ScriptSignalV8Proxy>& info) { | 1180 | void ScriptSignalV8Proxy::weakHandleCallback(const v8::WeakCallbackInfo<ScriptSignalV8Proxy>& info) { |