| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/renderer/webplugin_delegate_proxy.h" | 5 #include "content/renderer/webplugin_delegate_proxy.h" |
| 6 | 6 |
| 7 #if defined(TOOLKIT_GTK) | 7 #if defined(TOOLKIT_GTK) |
| 8 #include <gtk/gtk.h> | 8 #include <gtk/gtk.h> |
| 9 #elif defined(USE_X11) | 9 #elif defined(USE_X11) |
| 10 #include <cairo/cairo.h> | 10 #include <cairo/cairo.h> |
| (...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 622 transport_stores_[1].dib.reset(); | 622 transport_stores_[1].dib.reset(); |
| 623 | 623 |
| 624 transport_stores_[0].canvas.reset(); | 624 transport_stores_[0].canvas.reset(); |
| 625 transport_stores_[1].canvas.reset(); | 625 transport_stores_[1].canvas.reset(); |
| 626 transport_store_painted_ = gfx::Rect(); | 626 transport_store_painted_ = gfx::Rect(); |
| 627 front_buffer_diff_ = gfx::Rect(); | 627 front_buffer_diff_ = gfx::Rect(); |
| 628 } | 628 } |
| 629 | 629 |
| 630 static size_t BitmapSizeForPluginRect(const gfx::Rect& plugin_rect) { | 630 static size_t BitmapSizeForPluginRect(const gfx::Rect& plugin_rect) { |
| 631 const size_t stride = | 631 const size_t stride = |
| 632 skia::PlatformCanvas::StrideForWidth(plugin_rect.width()); | 632 skia::PlatformCanvasStrideForWidth(plugin_rect.width()); |
| 633 return stride * plugin_rect.height(); | 633 return stride * plugin_rect.height(); |
| 634 } | 634 } |
| 635 | 635 |
| 636 #if !defined(OS_WIN) | 636 #if !defined(OS_WIN) |
| 637 bool WebPluginDelegateProxy::CreateLocalBitmap( | 637 bool WebPluginDelegateProxy::CreateLocalBitmap( |
| 638 std::vector<uint8>* memory, | 638 std::vector<uint8>* memory, |
| 639 scoped_ptr<skia::PlatformCanvas>* canvas) { | 639 scoped_ptr<skia::PlatformCanvas>* canvas) { |
| 640 const size_t size = BitmapSizeForPluginRect(plugin_rect_); | 640 const size_t size = BitmapSizeForPluginRect(plugin_rect_); |
| 641 memory->resize(size); | 641 memory->resize(size); |
| 642 if (memory->size() != size) | 642 if (memory->size() != size) |
| 643 return false; | 643 return false; |
| 644 canvas->reset(new skia::PlatformCanvas( | 644 canvas->reset(skia::CreatePlatformCanvas( |
| 645 plugin_rect_.width(), plugin_rect_.height(), true, &((*memory)[0]))); | 645 plugin_rect_.width(), plugin_rect_.height(), true, &((*memory)[0]), |
| 646 skia::CRASH_ON_FAILURE)); |
| 646 return true; | 647 return true; |
| 647 } | 648 } |
| 648 #endif | 649 #endif |
| 649 | 650 |
| 650 bool WebPluginDelegateProxy::CreateSharedBitmap( | 651 bool WebPluginDelegateProxy::CreateSharedBitmap( |
| 651 scoped_ptr<TransportDIB>* memory, | 652 scoped_ptr<TransportDIB>* memory, |
| 652 scoped_ptr<skia::PlatformCanvas>* canvas) { | 653 scoped_ptr<skia::PlatformCanvas>* canvas) { |
| 653 const size_t size = BitmapSizeForPluginRect(plugin_rect_); | 654 const size_t size = BitmapSizeForPluginRect(plugin_rect_); |
| 654 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 655 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
| 655 memory->reset(TransportDIB::Create(size, 0)); | 656 memory->reset(TransportDIB::Create(size, 0)); |
| (...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1032 webkit::PaintSadPlugin(native_context, plugin_rect_, *sad_plugin_); | 1033 webkit::PaintSadPlugin(native_context, plugin_rect_, *sad_plugin_); |
| 1033 } | 1034 } |
| 1034 | 1035 |
| 1035 void WebPluginDelegateProxy::CopyFromBackBufferToFrontBuffer( | 1036 void WebPluginDelegateProxy::CopyFromBackBufferToFrontBuffer( |
| 1036 const gfx::Rect& rect) { | 1037 const gfx::Rect& rect) { |
| 1037 #if defined(OS_MACOSX) | 1038 #if defined(OS_MACOSX) |
| 1038 // Blitting the bits directly is much faster than going through CG, and since | 1039 // Blitting the bits directly is much faster than going through CG, and since |
| 1039 // the goal is just to move the raw pixels between two bitmaps with the same | 1040 // the goal is just to move the raw pixels between two bitmaps with the same |
| 1040 // pixel format (no compositing, color correction, etc.), it's safe. | 1041 // pixel format (no compositing, color correction, etc.), it's safe. |
| 1041 const size_t stride = | 1042 const size_t stride = |
| 1042 skia::PlatformCanvas::StrideForWidth(plugin_rect_.width()); | 1043 skia::PlatformCanvasStrideForWidth(plugin_rect_.width()); |
| 1043 const size_t chunk_size = 4 * rect.width(); | 1044 const size_t chunk_size = 4 * rect.width(); |
| 1044 DCHECK(back_buffer_dib() != NULL); | 1045 DCHECK(back_buffer_dib() != NULL); |
| 1045 uint8* source_data = static_cast<uint8*>(back_buffer_dib()->memory()) + | 1046 uint8* source_data = static_cast<uint8*>(back_buffer_dib()->memory()) + |
| 1046 rect.y() * stride + 4 * rect.x(); | 1047 rect.y() * stride + 4 * rect.x(); |
| 1047 DCHECK(front_buffer_dib() != NULL); | 1048 DCHECK(front_buffer_dib() != NULL); |
| 1048 uint8* target_data = static_cast<uint8*>(front_buffer_dib()->memory()) + | 1049 uint8* target_data = static_cast<uint8*>(front_buffer_dib()->memory()) + |
| 1049 rect.y() * stride + 4 * rect.x(); | 1050 rect.y() * stride + 4 * rect.x(); |
| 1050 for (int row = 0; row < rect.height(); ++row) { | 1051 for (int row = 0; row < rect.height(); ++row) { |
| 1051 memcpy(target_data, source_data, chunk_size); | 1052 memcpy(target_data, source_data, chunk_size); |
| 1052 source_data += stride; | 1053 source_data += stride; |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1299 | 1300 |
| 1300 void WebPluginDelegateProxy::OnURLRedirectResponse(bool allow, | 1301 void WebPluginDelegateProxy::OnURLRedirectResponse(bool allow, |
| 1301 int resource_id) { | 1302 int resource_id) { |
| 1302 if (!plugin_) | 1303 if (!plugin_) |
| 1303 return; | 1304 return; |
| 1304 | 1305 |
| 1305 plugin_->URLRedirectResponse(allow, resource_id); | 1306 plugin_->URLRedirectResponse(allow, resource_id); |
| 1306 } | 1307 } |
| 1307 | 1308 |
| 1308 } // namespace content | 1309 } // namespace content |
| OLD | NEW |