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

Commit 6a242bac authored by Matthew Bouyack's avatar Matthew Bouyack Committed by android-build-merger
Browse files

Use snprintf for SurfaceFlinger fence name am: fd4c8c38

am: c7d352eb

Change-Id: I41e5e4313af7784cb2ddbd4f278eb4e675cb3a08
parents 1c68b855 c7d352eb
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -79,6 +79,9 @@ public:
    // becomes signaled when both f1 and f2 are signaled (even if f1 or f2 is
    // becomes signaled when both f1 and f2 are signaled (even if f1 or f2 is
    // destroyed before it becomes signaled).  The name argument specifies the
    // destroyed before it becomes signaled).  The name argument specifies the
    // human-readable name to associated with the new Fence object.
    // human-readable name to associated with the new Fence object.
    static sp<Fence> merge(const char* name, const sp<Fence>& f1,
            const sp<Fence>& f2);

    static sp<Fence> merge(const String8& name, const sp<Fence>& f1,
    static sp<Fence> merge(const String8& name, const sp<Fence>& f1,
            const sp<Fence>& f2);
            const sp<Fence>& f2);


+3 −2
Original line number Original line Diff line number Diff line
@@ -315,9 +315,10 @@ status_t ConsumerBase::addReleaseFenceLocked(int slot,
    if (!mSlots[slot].mFence.get()) {
    if (!mSlots[slot].mFence.get()) {
        mSlots[slot].mFence = fence;
        mSlots[slot].mFence = fence;
    } else {
    } else {
        char fenceName[32] = {};
        snprintf(fenceName, 32, "%.28s:%d", mName.string(), slot);
        sp<Fence> mergedFence = Fence::merge(
        sp<Fence> mergedFence = Fence::merge(
                String8::format("%.28s:%d", mName.string(), slot),
                fenceName, mSlots[slot].mFence, fence);
                mSlots[slot].mFence, fence);
        if (!mergedFence.get()) {
        if (!mergedFence.get()) {
            CB_LOGE("failed to merge release fences");
            CB_LOGE("failed to merge release fences");
            // synchronization is broken, the best we can do is hope fences
            // synchronization is broken, the best we can do is hope fences
+10 −5
Original line number Original line Diff line number Diff line
@@ -72,7 +72,7 @@ status_t Fence::waitForever(const char* logname) {
    return err < 0 ? -errno : status_t(NO_ERROR);
    return err < 0 ? -errno : status_t(NO_ERROR);
}
}


sp<Fence> Fence::merge(const String8& name, const sp<Fence>& f1,
sp<Fence> Fence::merge(const char* name, const sp<Fence>& f1,
        const sp<Fence>& f2) {
        const sp<Fence>& f2) {
    ATRACE_CALL();
    ATRACE_CALL();
    int result;
    int result;
@@ -80,24 +80,29 @@ sp<Fence> Fence::merge(const String8& name, const sp<Fence>& f1,
    // valid fence (e.g. NO_FENCE) we merge the one valid fence with itself so
    // valid fence (e.g. NO_FENCE) we merge the one valid fence with itself so
    // that a new fence with the given name is created.
    // that a new fence with the given name is created.
    if (f1->isValid() && f2->isValid()) {
    if (f1->isValid() && f2->isValid()) {
        result = sync_merge(name.string(), f1->mFenceFd, f2->mFenceFd);
        result = sync_merge(name, f1->mFenceFd, f2->mFenceFd);
    } else if (f1->isValid()) {
    } else if (f1->isValid()) {
        result = sync_merge(name.string(), f1->mFenceFd, f1->mFenceFd);
        result = sync_merge(name, f1->mFenceFd, f1->mFenceFd);
    } else if (f2->isValid()) {
    } else if (f2->isValid()) {
        result = sync_merge(name.string(), f2->mFenceFd, f2->mFenceFd);
        result = sync_merge(name, f2->mFenceFd, f2->mFenceFd);
    } else {
    } else {
        return NO_FENCE;
        return NO_FENCE;
    }
    }
    if (result == -1) {
    if (result == -1) {
        status_t err = -errno;
        status_t err = -errno;
        ALOGE("merge: sync_merge(\"%s\", %d, %d) returned an error: %s (%d)",
        ALOGE("merge: sync_merge(\"%s\", %d, %d) returned an error: %s (%d)",
                name.string(), f1->mFenceFd, f2->mFenceFd,
                name, f1->mFenceFd, f2->mFenceFd,
                strerror(-err), err);
                strerror(-err), err);
        return NO_FENCE;
        return NO_FENCE;
    }
    }
    return sp<Fence>(new Fence(result));
    return sp<Fence>(new Fence(result));
}
}


sp<Fence> Fence::merge(const String8& name, const sp<Fence>& f1,
        const sp<Fence>& f2) {
    return merge(name.string(), f1, f2);
}

int Fence::dup() const {
int Fence::dup() const {
    return ::dup(mFenceFd);
    return ::dup(mFenceFd);
}
}