summaryrefslogtreecommitdiffstats
path: root/libs/rs
diff options
context:
space:
mode:
authorAlex Sakhartchouk <alexst@google.com>2011-08-24 14:25:25 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-08-24 14:25:25 -0700
commit0806d5183278e3a5e7f5904c1bbd07ca2a1b35fd (patch)
tree2ccdb4a2c9ef78f23facd1c898dbe8a1642c7570 /libs/rs
parent1c424f86c634a8c27ef1bbb82938ae64b4f3a385 (diff)
parenta8bb921c8b50dd4b9c000b9bb6a438a7faf9539a (diff)
downloadframeworks_base-0806d5183278e3a5e7f5904c1bbd07ca2a1b35fd.zip
frameworks_base-0806d5183278e3a5e7f5904c1bbd07ca2a1b35fd.tar.gz
frameworks_base-0806d5183278e3a5e7f5904c1bbd07ca2a1b35fd.tar.bz2
Merge "Fixing the lockless fifo destory bug. Removing unused code from element. build."
Diffstat (limited to 'libs/rs')
-rw-r--r--libs/rs/rsElement.cpp38
-rw-r--r--libs/rs/rsElement.h10
-rw-r--r--libs/rs/rsLocklessFifo.cpp5
-rw-r--r--libs/rs/rsLocklessFifo.h1
4 files changed, 14 insertions, 40 deletions
diff --git a/libs/rs/rsElement.cpp b/libs/rs/rsElement.cpp
index 36bbdf0..d6ab0da 100644
--- a/libs/rs/rsElement.cpp
+++ b/libs/rs/rsElement.cpp
@@ -284,6 +284,15 @@ void Element::decRefs(const void *ptr) const {
}
}
+Element::Builder::Builder() {
+ const uint32_t initialCapacity = 32;
+ mBuilderElementRefs.setCapacity(initialCapacity);
+ mBuilderElements.setCapacity(initialCapacity);
+ mBuilderNameStrings.setCapacity(initialCapacity);
+ mBuilderNameLengths.setCapacity(initialCapacity);
+ mBuilderArrays.setCapacity(initialCapacity);
+}
+
void Element::Builder::add(const Element *e, const char *nameStr, uint32_t arraySize) {
mBuilderElementRefs.push(ObjectBaseRef<const Element>(e));
mBuilderElements.push(e);
@@ -303,41 +312,12 @@ ObjectBaseRef<const Element> Element::Builder::create(Context *rsc) {
ElementState::ElementState() {
- const uint32_t initialCapacity = 32;
- mBuilderElements.setCapacity(initialCapacity);
- mBuilderNameStrings.setCapacity(initialCapacity);
- mBuilderNameLengths.setCapacity(initialCapacity);
- mBuilderArrays.setCapacity(initialCapacity);
}
ElementState::~ElementState() {
rsAssert(!mElements.size());
}
-void ElementState::elementBuilderBegin() {
- mBuilderElements.clear();
- mBuilderNameStrings.clear();
- mBuilderNameLengths.clear();
- mBuilderArrays.clear();
-}
-
-void ElementState::elementBuilderAdd(const Element *e, const char *nameStr, uint32_t arraySize) {
- mBuilderElements.push(e);
- mBuilderNameStrings.push(nameStr);
- mBuilderNameLengths.push(strlen(nameStr));
- mBuilderArrays.push(arraySize);
-
-}
-
-const Element *ElementState::elementBuilderCreate(Context *rsc) {
- return Element::create(rsc, mBuilderElements.size(),
- &(mBuilderElements.editArray()[0]),
- &(mBuilderNameStrings.editArray()[0]),
- mBuilderNameLengths.editArray(),
- mBuilderArrays.editArray());
-}
-
-
/////////////////////////////////////////
//
diff --git a/libs/rs/rsElement.h b/libs/rs/rsElement.h
index c3ef250..bfdec53 100644
--- a/libs/rs/rsElement.h
+++ b/libs/rs/rsElement.h
@@ -30,6 +30,7 @@ class Element : public ObjectBase {
public:
class Builder {
public:
+ Builder();
void add(const Element *e, const char *nameStr, uint32_t arraySize);
ObjectBaseRef<const Element> create(Context *rsc);
private:
@@ -135,17 +136,8 @@ public:
ElementState();
~ElementState();
- void elementBuilderBegin();
- void elementBuilderAdd(const Element *e, const char *nameStr, uint32_t arraySize);
- const Element *elementBuilderCreate(Context *rsc);
-
// Cache of all existing elements.
Vector<Element *> mElements;
-private:
- Vector<const Element *> mBuilderElements;
- Vector<const char*> mBuilderNameStrings;
- Vector<size_t> mBuilderNameLengths;
- Vector<uint32_t> mBuilderArrays;
};
diff --git a/libs/rs/rsLocklessFifo.cpp b/libs/rs/rsLocklessFifo.cpp
index 02a76ab..4d02269 100644
--- a/libs/rs/rsLocklessFifo.cpp
+++ b/libs/rs/rsLocklessFifo.cpp
@@ -21,11 +21,11 @@
using namespace android;
using namespace android::renderscript;
-LocklessCommandFifo::LocklessCommandFifo() : mBuffer(0) {
+LocklessCommandFifo::LocklessCommandFifo() : mBuffer(0), mInitialized(false) {
}
LocklessCommandFifo::~LocklessCommandFifo() {
- if (!mInShutdown) {
+ if (!mInShutdown && mInitialized) {
shutdown();
}
if (mBuffer) {
@@ -58,6 +58,7 @@ bool LocklessCommandFifo::init(uint32_t sizeInBytes) {
mGet = mBuffer;
mEnd = mBuffer + (sizeInBytes) - 1;
//dumpState("init");
+ mInitialized = true;
return true;
}
diff --git a/libs/rs/rsLocklessFifo.h b/libs/rs/rsLocklessFifo.h
index 4962ef6..fa53d40 100644
--- a/libs/rs/rsLocklessFifo.h
+++ b/libs/rs/rsLocklessFifo.h
@@ -47,6 +47,7 @@ protected:
uint8_t * mEnd;
uint8_t mSize;
bool mInShutdown;
+ bool mInitialized;
Signal mSignalToWorker;
Signal mSignalToControl;