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

Commit 13f4350a authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Remove the lock in ParcelableHolder"

parents 1b7f7628 0b8f647e
Loading
Loading
Loading
Loading
+0 −2
Original line number Original line Diff line number Diff line
@@ -27,7 +27,6 @@
namespace android {
namespace android {
namespace os {
namespace os {
status_t ParcelableHolder::writeToParcel(Parcel* p) const {
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())));
    RETURN_ON_FAILURE(p->writeInt32(static_cast<int32_t>(this->getStability())));
    if (this->mParcelPtr) {
    if (this->mParcelPtr) {
        RETURN_ON_FAILURE(p->writeInt32(this->mParcelPtr->dataSize()));
        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) {
status_t ParcelableHolder::readFromParcel(const Parcel* p) {
    std::lock_guard<std::mutex> l(mMutex);
    this->mStability = static_cast<Stability>(p->readInt32());
    this->mStability = static_cast<Stability>(p->readInt32());
    this->mParcelable = nullptr;
    this->mParcelable = nullptr;
    this->mParcelableName = std::nullopt;
    this->mParcelableName = std::nullopt;
+0 −3
Original line number Original line Diff line number Diff line
@@ -59,7 +59,6 @@ public:


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


    binder_status_t writeToParcel(AParcel* parcel) const {
    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, static_cast<int32_t>(this->mStability)));
        RETURN_ON_FAILURE(AParcel_writeInt32(parcel, AParcel_getDataSize(this->mParcel.get())));
        RETURN_ON_FAILURE(AParcel_writeInt32(parcel, AParcel_getDataSize(this->mParcel.get())));
        RETURN_ON_FAILURE(AParcel_appendFrom(this->mParcel.get(), parcel, 0,
        RETURN_ON_FAILURE(AParcel_appendFrom(this->mParcel.get(), parcel, 0,
@@ -59,8 +58,6 @@ class AParcelableHolder {
    }
    }


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

        AParcel_reset(mParcel.get());
        AParcel_reset(mParcel.get());


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


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


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


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