summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Matthew Bouyack <mbouyack@google.com> 2016-10-10 18:11:30 +0000
committer android-build-merger <android-build-merger@google.com> 2016-10-10 18:11:30 +0000
commitc7d352eb17bc507d9e28ec878895bd888166e514 (patch)
tree7a22b31d5f452c19367a82a130dfe91c8b9437ad
parentc1b0c52f4fee28a9d109d28b037faac2798d8f6b (diff)
parentfd4c8c38051f9dad028e4e43e0eb39ba412b2c0a (diff)
Use snprintf for SurfaceFlinger fence name
am: fd4c8c3805 Change-Id: I16d3eb7cde318f2078be36acea22b9bc84975b63
-rw-r--r--include/ui/Fence.h3
-rw-r--r--libs/gui/ConsumerBase.cpp5
-rw-r--r--libs/ui/Fence.cpp15
3 files changed, 16 insertions, 7 deletions
diff --git a/include/ui/Fence.h b/include/ui/Fence.h
index a4c1df72bc..d45ad762da 100644
--- a/include/ui/Fence.h
+++ b/include/ui/Fence.h
@@ -79,6 +79,9 @@ public:
// 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
// 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,
const sp<Fence>& f2);
diff --git a/libs/gui/ConsumerBase.cpp b/libs/gui/ConsumerBase.cpp
index 805a10d1b6..5546d5416c 100644
--- a/libs/gui/ConsumerBase.cpp
+++ b/libs/gui/ConsumerBase.cpp
@@ -315,9 +315,10 @@ status_t ConsumerBase::addReleaseFenceLocked(int slot,
if (!mSlots[slot].mFence.get()) {
mSlots[slot].mFence = fence;
} else {
+ char fenceName[32] = {};
+ snprintf(fenceName, 32, "%.28s:%d", mName.string(), slot);
sp<Fence> mergedFence = Fence::merge(
- String8::format("%.28s:%d", mName.string(), slot),
- mSlots[slot].mFence, fence);
+ fenceName, mSlots[slot].mFence, fence);
if (!mergedFence.get()) {
CB_LOGE("failed to merge release fences");
// synchronization is broken, the best we can do is hope fences
diff --git a/libs/ui/Fence.cpp b/libs/ui/Fence.cpp
index bf24ffb7e0..7cf8233820 100644
--- a/libs/ui/Fence.cpp
+++ b/libs/ui/Fence.cpp
@@ -72,7 +72,7 @@ status_t Fence::waitForever(const char* logname) {
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) {
ATRACE_CALL();
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
// that a new fence with the given name is created.
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()) {
- result = sync_merge(name.string(), f1->mFenceFd, f1->mFenceFd);
+ result = sync_merge(name, f1->mFenceFd, f1->mFenceFd);
} else if (f2->isValid()) {
- result = sync_merge(name.string(), f2->mFenceFd, f2->mFenceFd);
+ result = sync_merge(name, f2->mFenceFd, f2->mFenceFd);
} else {
return NO_FENCE;
}
if (result == -1) {
status_t err = -errno;
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);
return NO_FENCE;
}
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 {
return ::dup(mFenceFd);
}