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

Commit a448378e authored by Steven Moreland's avatar Steven Moreland
Browse files

libbinder_ndk: backwards compatible include_cpp

These internal C++ binder APIs are shipped with the SDK out of
convenience, but they still need to work when used with old versions of
the AIDL compiler. Until we have a better solution, making them
backwards compatible.

Bug: 160624671
Test: build success, but when either of the two branches is hit, it's
  the expected build failure.
Change-Id: I62d68696d86e43c35f2006f59a007299eb096d91
parent 52e3b47c
Loading
Loading
Loading
Loading
+12 −4
Original line number Original line Diff line number Diff line
@@ -88,13 +88,21 @@ class SharedRefBase {


    static void operator delete(void* p) { std::free(p); }
    static void operator delete(void* p) { std::free(p); }


   private:
    // Once minSdkVersion is 30, we are guaranteed to be building with the
    std::once_flag mFlagThis;
    // Android 11 AIDL compiler which supports the SharedRefBase::make API.
    std::weak_ptr<SharedRefBase> mThis;
    //

    // Use 'SharedRefBase::make<T>(...)' to make. SharedRefBase has implicit
    // Use 'SharedRefBase::make<T>(...)' to make. SharedRefBase has implicit
    // ownership. Making this operator private to avoid double-ownership.
    // ownership. Making this operator private to avoid double-ownership.
#if !defined(__ANDROID_API__) || __ANDROID_API__ >= 30
   private:
#else
    [[deprecated("Prefer SharedRefBase::make<T>(...) if possible.")]]
#endif
    static void* operator new(size_t s) { return std::malloc(s); }
    static void* operator new(size_t s) { return std::malloc(s); }

   private:
    std::once_flag mFlagThis;
    std::weak_ptr<SharedRefBase> mThis;
};
};


/**
/**