@@ -895,12 +895,6 @@ void OpenGLRenderer::composeLayer(sp<Snapshot> current, sp<Snapshot> previous) {
895895void OpenGLRenderer::drawTextureLayer (Layer* layer, const Rect& rect) {
896896 float alpha = layer->getAlpha () / 255 .0f ;
897897
898- mat4& transform = layer->getTransform ();
899- if (!transform.isIdentity ()) {
900- save (0 );
901- mSnapshot ->transform ->multiply (transform);
902- }
903-
904898 setupDraw ();
905899 if (layer->getRenderTarget () == GL_TEXTURE_2D) {
906900 setupDrawWithTexture ();
@@ -937,10 +931,6 @@ void OpenGLRenderer::drawTextureLayer(Layer* layer, const Rect& rect) {
937931 glDrawArrays (GL_TRIANGLE_STRIP, 0 , gMeshCount );
938932
939933 finishDrawTexture ();
940-
941- if (!transform.isIdentity ()) {
942- restore ();
943- }
944934}
945935
946936void OpenGLRenderer::composeLayerRect (Layer* layer, const Rect& rect, bool swap) {
@@ -2792,12 +2782,24 @@ status_t OpenGLRenderer::drawLayer(Layer* layer, float x, float y, SkPaint* pain
27922782 return DrawGlInfo::kStatusDone ;
27932783 }
27942784
2785+ mat4* transform = NULL ;
2786+ if (layer->isTextureLayer ()) {
2787+ transform = &layer->getTransform ();
2788+ if (!transform->isIdentity ()) {
2789+ save (0 );
2790+ mSnapshot ->transform ->multiply (*transform);
2791+ }
2792+ }
2793+
27952794 Rect transformed;
27962795 Rect clip;
27972796 const bool rejected = quickRejectNoScissor (x, y,
27982797 x + layer->layer .getWidth (), y + layer->layer .getHeight (), transformed, clip);
27992798
28002799 if (rejected) {
2800+ if (transform && !transform->isIdentity ()) {
2801+ restore ();
2802+ }
28012803 return DrawGlInfo::kStatusDone ;
28022804 }
28032805
@@ -2858,6 +2860,10 @@ status_t OpenGLRenderer::drawLayer(Layer* layer, float x, float y, SkPaint* pain
28582860 }
28592861 }
28602862
2863+ if (transform && !transform->isIdentity ()) {
2864+ restore ();
2865+ }
2866+
28612867 return DrawGlInfo::kStatusDrew ;
28622868}
28632869
0 commit comments