diff options
author | Jason Sams <rjsams@android.com> | 2009-10-26 15:19:28 -0700 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2009-10-26 15:20:43 -0700 |
commit | 83f1c63c56ed73e0dfcc4de67bc58a4df5b3fe69 (patch) | |
tree | 3295906c8047a0eab55cfeed2765cf7bacb2ee46 /libs/rs/rsProgram.cpp | |
parent | 52c931b7dd0c5f82f409dea85a62c1e6c9e17c35 (diff) | |
download | frameworks_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.cpp | 16 |
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; - } -} |