diff options
| author | Jason Sams <rjsams@android.com> | 2010-11-17 15:29:32 -0800 |
|---|---|---|
| committer | Jason Sams <rjsams@android.com> | 2010-11-17 15:29:32 -0800 |
| commit | a17af04e62a3f40f729e7ebb8bd868d192e18405 (patch) | |
| tree | 1cbd4b4e3fcb86d318b2825758fcf89733adf3e0 /libs/rs/rsFont.cpp | |
| parent | 81c4cea9ec4b08f8c06fdef86d51069adb739eb7 (diff) | |
| download | frameworks_base-a17af04e62a3f40f729e7ebb8bd868d192e18405.zip frameworks_base-a17af04e62a3f40f729e7ebb8bd868d192e18405.tar.gz frameworks_base-a17af04e62a3f40f729e7ebb8bd868d192e18405.tar.bz2 | |
Create holder inner class for pushing context state.
Fix bug with rsForEach corrupting parent context state.
Remove workaround from rsBalls.
Change-Id: I43a948536e70d44645d1c2ef7b97e1c5906f6943
Diffstat (limited to 'libs/rs/rsFont.cpp')
| -rw-r--r-- | libs/rs/rsFont.cpp | 26 |
1 files changed, 5 insertions, 21 deletions
diff --git a/libs/rs/rsFont.cpp b/libs/rs/rsFont.cpp index 96e350d..e4d77b2 100644 --- a/libs/rs/rsFont.cpp +++ b/libs/rs/rsFont.cpp @@ -613,18 +613,12 @@ void FontState::checkInit() { } void FontState::issueDrawCommand() { + Context::PushState ps(mRSC); - ObjectBaseRef<const ProgramVertex> tmpV(mRSC->getVertex()); - mRSC->setVertex(mRSC->getDefaultProgramVertex()); - - ObjectBaseRef<const ProgramRaster> tmpR(mRSC->getRaster()); - mRSC->setRaster(mRSC->getDefaultProgramRaster()); - - ObjectBaseRef<const ProgramFragment> tmpF(mRSC->getFragment()); - mRSC->setFragment(mFontShaderF.get()); - - ObjectBaseRef<const ProgramStore> tmpPS(mRSC->getFragmentStore()); - mRSC->setFragmentStore(mFontProgramStore.get()); + mRSC->setProgramVertex(mRSC->getDefaultProgramVertex()); + mRSC->setProgramRaster(mRSC->getDefaultProgramRaster()); + mRSC->setProgramFragment(mFontShaderF.get()); + mRSC->setProgramStore(mFontProgramStore.get()); if (mConstantsDirty) { mFontShaderFConstant->data(mRSC, &mConstants, sizeof(mConstants)); @@ -632,10 +626,6 @@ void FontState::issueDrawCommand() { } if (!mRSC->setupCheck()) { - mRSC->setVertex((ProgramVertex *)tmpV.get()); - mRSC->setRaster((ProgramRaster *)tmpR.get()); - mRSC->setFragment((ProgramFragment *)tmpF.get()); - mRSC->setFragmentStore((ProgramStore *)tmpPS.get()); return; } @@ -651,12 +641,6 @@ void FontState::issueDrawCommand() { mIndexBuffer->uploadCheck(mRSC); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mIndexBuffer->getBufferObjectID()); glDrawElements(GL_TRIANGLES, mCurrentQuadIndex * 6, GL_UNSIGNED_SHORT, (uint16_t *)(0)); - - // Reset the state - mRSC->setVertex((ProgramVertex *)tmpV.get()); - mRSC->setRaster((ProgramRaster *)tmpR.get()); - mRSC->setFragment((ProgramFragment *)tmpF.get()); - mRSC->setFragmentStore((ProgramStore *)tmpPS.get()); } void FontState::appendMeshQuad(float x1, float y1, float z1, |
