summaryrefslogtreecommitdiffstats
path: root/libs/rs/rsProgram.cpp
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2009-10-26 15:19:28 -0700
committerJason Sams <rjsams@android.com>2009-10-26 15:20:43 -0700
commit83f1c63c56ed73e0dfcc4de67bc58a4df5b3fe69 (patch)
tree3295906c8047a0eab55cfeed2765cf7bacb2ee46 /libs/rs/rsProgram.cpp
parent52c931b7dd0c5f82f409dea85a62c1e6c9e17c35 (diff)
downloadframeworks_base-83f1c63c56ed73e0dfcc4de67bc58a4df5b3fe69.zip
frameworks_base-83f1c63c56ed73e0dfcc4de67bc58a4df5b3fe69.tar.gz
frameworks_base-83f1c63c56ed73e0dfcc4de67bc58a4df5b3fe69.tar.bz2
Fix dirty state tracking of allocation attached to ProgramVertex objects when being updated while not attached.
Diffstat (limited to 'libs/rs/rsProgram.cpp')
-rw-r--r--libs/rs/rsProgram.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/libs/rs/rsProgram.cpp b/libs/rs/rsProgram.cpp
index 5f2a609..ed5918b 100644
--- a/libs/rs/rsProgram.cpp
+++ b/libs/rs/rsProgram.cpp
@@ -32,19 +32,23 @@ Program::Program(Context *rsc, Element *in, Element *out) : ObjectBase(rsc)
Program::~Program()
{
+ bindAllocation(NULL);
}
void Program::bindAllocation(Allocation *alloc)
{
+ if (mConstants.get() == alloc) {
+ return;
+ }
+ if (mConstants.get()) {
+ mConstants.get()->removeProgramToDirty(this);
+ }
mConstants.set(alloc);
+ if (alloc) {
+ alloc->addProgramToDirty(this);
+ }
mDirty = true;
}
-void Program::checkUpdatedAllocation(const Allocation *alloc)
-{
- if (mConstants.get() == alloc) {
- mDirty = true;
- }
-}