| Index: android_webview/native/aw_contents.cc
|
| diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc
|
| index cc65cd7a3fa094106181e48da69d96678c93d6e3..c7af67fb7f51d095989becbfe15a2c361f37295c 100644
|
| --- a/android_webview/native/aw_contents.cc
|
| +++ b/android_webview/native/aw_contents.cc
|
| @@ -108,6 +108,8 @@ namespace {
|
|
|
| bool g_should_download_favicons = false;
|
|
|
| +bool g_force_auxiliary_bitmap_rendering = false;
|
| +
|
| const void* kAwContentsUserDataKey = &kAwContentsUserDataKey;
|
|
|
| class AwContentsUserData : public base::SupportsUserData::Data {
|
| @@ -310,6 +312,13 @@ static jlong Init(JNIEnv* env, jclass, jobject browser_context) {
|
| return reinterpret_cast<intptr_t>(new AwContents(web_contents.Pass()));
|
| }
|
|
|
| +static void SetForceAuxiliaryBitmapRendering(
|
| + JNIEnv* env,
|
| + jclass,
|
| + jboolean force_auxiliary_bitmap_rendering) {
|
| + g_force_auxiliary_bitmap_rendering = force_auxiliary_bitmap_rendering;
|
| +}
|
| +
|
| static void SetAwDrawSWFunctionTable(JNIEnv* env, jclass,
|
| jlong function_table) {
|
| RasterHelperSetAwDrawSWFunctionTable(
|
| @@ -876,7 +885,8 @@ bool AwContents::OnDraw(JNIEnv* env,
|
| browser_view_renderer_.PrepareToDraw(
|
| scroll, gfx::Rect(visible_left, visible_top, visible_right - visible_left,
|
| visible_bottom - visible_top));
|
| - if (is_hardware_accelerated && browser_view_renderer_.attached_to_window()) {
|
| + if (is_hardware_accelerated && browser_view_renderer_.attached_to_window() &&
|
| + !g_force_auxiliary_bitmap_rendering) {
|
| return browser_view_renderer_.OnDrawHardware();
|
| }
|
|
|
| @@ -892,8 +902,8 @@ bool AwContents::OnDraw(JNIEnv* env,
|
| // bitmap). For better performance, get global visible rect, transform it
|
| // from screen space to view space, then intersect with the webview in
|
| // viewspace. Use the resulting rect as the auxiliary bitmap.
|
| - scoped_ptr<SoftwareCanvasHolder> canvas_holder =
|
| - SoftwareCanvasHolder::Create(canvas, scroll, view_size);
|
| + scoped_ptr<SoftwareCanvasHolder> canvas_holder = SoftwareCanvasHolder::Create(
|
| + canvas, scroll, view_size, g_force_auxiliary_bitmap_rendering);
|
| if (!canvas_holder || !canvas_holder->GetCanvas()) {
|
| TRACE_EVENT_INSTANT0("android_webview", "EarlyOut_EmptySize",
|
| TRACE_EVENT_SCOPE_THREAD);
|
|
|