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

Commit 0b8f647e authored by Jeongik Cha's avatar Jeongik Cha
Browse files

Remove the lock in ParcelableHolder

As we removed the lock for ParcelableHolder in Java(aosp/1458065), the
lock both in NDK and c++ side will be removed as well. Instead the lock is provided
as default, the users should use their own lock if necessary.

Bug: 146611855
Test: CtsNdkBinderTest
Change-Id: I334796ecd49d30b53e05da5fcef7d2cfe65164b9
parent 1b7f7628
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@
namespace android {
namespace os {
status_t ParcelableHolder::writeToParcel(Parcel* p) const {
    std::lock_guard<std::mutex> l(mMutex);
    RETURN_ON_FAILURE(p->writeInt32(static_cast<int32_t>(this->getStability())));
    if (this->mParcelPtr) {
        RETURN_ON_FAILURE(p->writeInt32(this->mParcelPtr->dataSize()));
@@ -53,7 +52,6 @@ status_t ParcelableHolder::writeToParcel(Parcel* p) const {
}

status_t ParcelableHolder::readFromParcel(const Parcel* p) {
    std::lock_guard<std::mutex> l(mMutex);
    this->mStability = static_cast<Stability>(p->readInt32());
    this->mParcelable = nullptr;
    this->mParcelableName = std::nullopt;
+0 −3
Original line number Diff line number Diff line
@@ -59,7 +59,6 @@ public:

    template <typename T>
    bool setParcelable(std::shared_ptr<T> p) {
        std::lock_guard<std::mutex> l(mMutex);
        static_assert(std::is_base_of<Parcelable, T>::value, "T must be derived from Parcelable");
        if (p && this->getStability() > p->getStability()) {
            return false;
@@ -73,7 +72,6 @@ public:
    template <typename T>
    std::shared_ptr<T> getParcelable() const {
        static_assert(std::is_base_of<Parcelable, T>::value, "T must be derived from Parcelable");
        std::lock_guard<std::mutex> l(mMutex);
        const std::string& parcelableDesc = T::getParcelableDescriptor();
        if (!this->mParcelPtr) {
            if (!this->mParcelable || !this->mParcelableName) {
@@ -135,7 +133,6 @@ private:
    mutable std::optional<std::string> mParcelableName;
    mutable std::unique_ptr<Parcel> mParcelPtr;
    Stability mStability;
    mutable std::mutex mMutex;
};
} // namespace os
} // namespace android
+0 −6
Original line number Diff line number Diff line
@@ -50,7 +50,6 @@ class AParcelableHolder {
    virtual ~AParcelableHolder() = default;

    binder_status_t writeToParcel(AParcel* parcel) const {
        std::lock_guard<std::mutex> l(mMutex);
        RETURN_ON_FAILURE(AParcel_writeInt32(parcel, static_cast<int32_t>(this->mStability)));
        RETURN_ON_FAILURE(AParcel_writeInt32(parcel, AParcel_getDataSize(this->mParcel.get())));
        RETURN_ON_FAILURE(AParcel_appendFrom(this->mParcel.get(), parcel, 0,
@@ -59,8 +58,6 @@ class AParcelableHolder {
    }

    binder_status_t readFromParcel(const AParcel* parcel) {
        std::lock_guard<std::mutex> l(mMutex);

        AParcel_reset(mParcel.get());

        RETURN_ON_FAILURE(AParcel_readInt32(parcel, &this->mStability));
@@ -86,7 +83,6 @@ class AParcelableHolder {

    template <typename T>
    bool setParcelable(T* p) {
        std::lock_guard<std::mutex> l(mMutex);
        if (p && this->mStability > T::_aidl_stability) {
            return false;
        }
@@ -98,7 +94,6 @@ class AParcelableHolder {

    template <typename T>
    std::unique_ptr<T> getParcelable() const {
        std::lock_guard<std::mutex> l(mMutex);
        const std::string parcelableDesc(T::descriptor);
        AParcel_setDataPosition(mParcel.get(), 0);
        if (AParcel_getDataSize(mParcel.get()) == 0) {
@@ -119,7 +114,6 @@ class AParcelableHolder {

   private:
    mutable ndk::ScopedAParcel mParcel;
    mutable std::mutex mMutex;
    parcelable_stability_t mStability;
};