Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0288e960 authored by Andy Hung's avatar Andy Hung Committed by Gerrit Code Review
Browse files

Merge "RefBase: update sp and wp to allow constinit" into main

parents 8687d25c 071880f5
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -300,8 +300,8 @@ private:
    std::atomic<int>* mDeleteCount;
};

static sp<Bar> buffer;
static std::atomic<bool> bufferFull(false);
[[clang::no_destroy]] static constinit sp<Bar> buffer;
static constinit std::atomic<bool> bufferFull(false);

// Wait until bufferFull has value val.
static inline void waitFor(bool val) {
@@ -380,8 +380,8 @@ TEST(RefBase, RacingDestructors) {
    }  // Otherwise this is slow and probably pointless on a uniprocessor.
}

static wp<Bar> wpBuffer;
static std::atomic<bool> wpBufferFull(false);
[[clang::no_destroy]] static constinit wp<Bar> wpBuffer;
static constinit std::atomic<bool> wpBufferFull(false);

// Wait until wpBufferFull has value val.
static inline void wpWaitFor(bool val) {
+1 −1
Original line number Diff line number Diff line
@@ -404,7 +404,7 @@ class wp
public:
    typedef typename RefBase::weakref_type weakref_type;

    inline wp() : m_ptr(nullptr), m_refs(nullptr) { }
    inline constexpr wp() : m_ptr(nullptr), m_refs(nullptr) { }

    // if nullptr, returns nullptr
    //
+1 −1
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ template<typename T> class wp;
template<typename T>
class sp {
public:
    inline sp() : m_ptr(nullptr) { }
    inline constexpr sp() : m_ptr(nullptr) { }

    // The old way of using sp<> was like this. This is bad because it relies
    // on implicit conversion to sp<>, which we would like to remove (if an