| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "android_webview/native/java_browser_view_renderer_helper.h" | 5 #include "android_webview/native/java_browser_view_renderer_helper.h" |
| 6 | 6 |
| 7 #include <android/bitmap.h> | 7 #include <android/bitmap.h> |
| 8 | 8 |
| 9 #include "android_webview/public/browser/draw_sw.h" | 9 #include "android_webview/public/browser/draw_sw.h" |
| 10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 | 76 |
| 77 JNIEnv* env = base::android::AttachCurrentThread(); | 77 JNIEnv* env = base::android::AttachCurrentThread(); |
| 78 ScopedPixelAccess auto_release_pixels(env, java_canvas); | 78 ScopedPixelAccess auto_release_pixels(env, java_canvas); |
| 79 AwPixelInfo* pixels = auto_release_pixels.pixels(); | 79 AwPixelInfo* pixels = auto_release_pixels.pixels(); |
| 80 if (pixels && pixels->state) { | 80 if (pixels && pixels->state) { |
| 81 skia::RefPtr<SkCanvas> canvas = skia::AdoptRef( | 81 skia::RefPtr<SkCanvas> canvas = skia::AdoptRef( |
| 82 SkCanvasStateUtils::CreateFromCanvasState(pixels->state)); | 82 SkCanvasStateUtils::CreateFromCanvasState(pixels->state)); |
| 83 | 83 |
| 84 // Workarounds for http://crbug.com/271096: SW draw only supports | 84 // Workarounds for http://crbug.com/271096: SW draw only supports |
| 85 // translate & scale transforms, and a simple rectangular clip. | 85 // translate & scale transforms, and a simple rectangular clip. |
| 86 if (canvas && (!canvas->getTotalClip().isRect() || | 86 if (canvas && (!canvas->isClipRect() || |
| 87 (canvas->getTotalMatrix().getType() & | 87 (canvas->getTotalMatrix().getType() & |
| 88 ~(SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask)))) { | 88 ~(SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask)))) { |
| 89 canvas.clear(); | 89 canvas.clear(); |
| 90 } | 90 } |
| 91 if (canvas) { | 91 if (canvas) { |
| 92 canvas->translate(scroll_correction.x(), scroll_correction.y()); | 92 canvas->translate(scroll_correction.x(), scroll_correction.y()); |
| 93 return render_source.Run(canvas.get()); | 93 return render_source.Run(canvas.get()); |
| 94 } | 94 } |
| 95 } | 95 } |
| 96 return RenderViaAuxilaryBitmap( | 96 return RenderViaAuxilaryBitmap( |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 | 167 |
| 168 if (AndroidBitmap_unlockPixels(env, jbitmap.obj()) < 0) { | 168 if (AndroidBitmap_unlockPixels(env, jbitmap.obj()) < 0) { |
| 169 LOG(ERROR) << "Error unlocking java bitmap pixels."; | 169 LOG(ERROR) << "Error unlocking java bitmap pixels."; |
| 170 return false; | 170 return false; |
| 171 } | 171 } |
| 172 | 172 |
| 173 return succeeded; | 173 return succeeded; |
| 174 } | 174 } |
| 175 | 175 |
| 176 } // namespace android_webview | 176 } // namespace android_webview |
| OLD | NEW |