diff --git a/CHANGELOG.md b/CHANGELOG.md index de3246ea..0f5a2799 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Prevent feedback loops in SentryLogger ([#275](https://github.com/getsentry/sentry-godot/pull/275)) - Fix `release` option not honored if set to a custom value in the project settings, and fix parsing of `app_name`/`app_version` replacement tokens if set via a configuration script. ([#276](https://github.com/getsentry/sentry-godot/pull/276)) +- Remove `libatomic.so.1` dependency on Linux ([#278](https://github.com/getsentry/sentry-godot/pull/278)) ## 1.0.0-alpha.2 diff --git a/modules/SConstruct b/modules/SConstruct index 323bd5fc..1cd97833 100644 --- a/modules/SConstruct +++ b/modules/SConstruct @@ -74,7 +74,6 @@ elif platform == "linux": env.Append( LIBS=[ "curl", - "atomic" ] ) elif platform == "macos": diff --git a/src/sentry/native/native_sdk.cpp b/src/sentry/native/native_sdk.cpp index d1ee5c22..ddd0ed1c 100644 --- a/src/sentry/native/native_sdk.cpp +++ b/src/sentry/native/native_sdk.cpp @@ -185,12 +185,20 @@ String NativeSDK::capture_message(const String &p_message, Level p_level) { p_message.utf8().get_data()); sentry_uuid_t uuid = sentry_capture_event(event); - last_uuid.store(uuid, std::memory_order_release); + + last_uuid_mutex->lock(); + last_uuid = uuid; + last_uuid_mutex->unlock(); + return _uuid_as_string(uuid); } String NativeSDK::get_last_event_id() { - return _uuid_as_string(last_uuid.load(std::memory_order_acquire)); + last_uuid_mutex->lock(); + String uuid_str = _uuid_as_string(last_uuid); + last_uuid_mutex->unlock(); + + return uuid_str; } Ref NativeSDK::create_event() { @@ -206,7 +214,11 @@ String NativeSDK::capture_event(const Ref &p_event) { sentry_value_t event = native_event->get_native_value(); sentry_value_incref(event); // Keep ownership. sentry_uuid_t uuid = sentry_capture_event(event); - last_uuid.store(uuid, std::memory_order_release); + + last_uuid_mutex->lock(); + last_uuid = uuid; + last_uuid_mutex->unlock(); + return _uuid_as_string(uuid); } @@ -318,6 +330,11 @@ void NativeSDK::initialize(const PackedStringArray &p_global_attachments) { } } +NativeSDK::NativeSDK() { + last_uuid_mutex.instantiate(); + last_uuid = sentry_uuid_nil(); +} + NativeSDK::~NativeSDK() { sentry_close(); } diff --git a/src/sentry/native/native_sdk.h b/src/sentry/native/native_sdk.h index fa4e988e..7c7bc958 100644 --- a/src/sentry/native/native_sdk.h +++ b/src/sentry/native/native_sdk.h @@ -4,14 +4,15 @@ #include "sentry/internal_sdk.h" #include -#include +#include namespace sentry { // Internal SDK utilizing sentry-native. class NativeSDK : public InternalSDK { private: - std::atomic last_uuid; + sentry_uuid_t last_uuid; + Ref last_uuid_mutex; bool initialized = false; public: @@ -37,6 +38,7 @@ class NativeSDK : public InternalSDK { virtual void initialize(const PackedStringArray &p_global_attachments) override; + NativeSDK(); virtual ~NativeSDK() override; };