Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(214)

Side by Side Diff: content/renderer/webplugin_delegate_proxy.cc

Issue 12487003: Fix painting glitch with text and NPAPI plugins. This was a regression from r167042. The problem wa… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix silverlight Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/renderer/webplugin_delegate_proxy.h ('k') | webkit/plugins/npapi/plugin_instance.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 uses_compositor_(false), 207 uses_compositor_(false),
208 #elif defined(OS_WIN) 208 #elif defined(OS_WIN)
209 dummy_activation_window_(NULL), 209 dummy_activation_window_(NULL),
210 #endif 210 #endif
211 window_(gfx::kNullPluginWindow), 211 window_(gfx::kNullPluginWindow),
212 mime_type_(mime_type), 212 mime_type_(mime_type),
213 instance_id_(MSG_ROUTING_NONE), 213 instance_id_(MSG_ROUTING_NONE),
214 npobject_(NULL), 214 npobject_(NULL),
215 sad_plugin_(NULL), 215 sad_plugin_(NULL),
216 invalidate_pending_(false), 216 invalidate_pending_(false),
217 transparent_(false),
217 front_buffer_index_(0), 218 front_buffer_index_(0),
218 page_url_(render_view_->webview()->mainFrame()->document().url()) { 219 page_url_(render_view_->webview()->mainFrame()->document().url()) {
219 } 220 }
220 221
221 WebPluginDelegateProxy::~WebPluginDelegateProxy() { 222 WebPluginDelegateProxy::~WebPluginDelegateProxy() {
222 if (npobject_) 223 if (npobject_)
223 WebBindings::releaseObject(npobject_); 224 WebBindings::releaseObject(npobject_);
224 } 225 }
225 226
226 WebPluginDelegateProxy::SharedBitmap::SharedBitmap() {} 227 WebPluginDelegateProxy::SharedBitmap::SharedBitmap() {}
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 params.url = url; 367 params.url = url;
367 params.page_url = page_url_; 368 params.page_url = page_url_;
368 params.arg_names = arg_names; 369 params.arg_names = arg_names;
369 params.arg_values = arg_values; 370 params.arg_values = arg_values;
370 params.host_render_view_routing_id = render_view_->routing_id(); 371 params.host_render_view_routing_id = render_view_->routing_id();
371 params.load_manually = load_manually; 372 params.load_manually = load_manually;
372 373
373 plugin_ = plugin; 374 plugin_ = plugin;
374 375
375 result = false; 376 result = false;
376 Send(new PluginMsg_Init(instance_id_, params, &result)); 377 Send(new PluginMsg_Init(instance_id_, params, &transparent_, &result));
377 378
378 if (!result) 379 if (!result)
379 LOG(ERROR) << "PluginMsg_Init returned false"; 380 LOG(ERROR) << "PluginMsg_Init returned false";
380 381
381 render_view_->RegisterPluginDelegate(this); 382 render_view_->RegisterPluginDelegate(this);
382 383
383 return result; 384 return result;
384 } 385 }
385 386
386 bool WebPluginDelegateProxy::Send(IPC::Message* msg) { 387 bool WebPluginDelegateProxy::Send(IPC::Message* msg) {
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 // a chance that it will begin repainting the back-buffer before we complete 719 // a chance that it will begin repainting the back-buffer before we complete
719 // capturing the data. Buffer flipping would increase that risk because 720 // capturing the data. Buffer flipping would increase that risk because
720 // geometry update is asynchronous, so we don't want to use buffer flipping 721 // geometry update is asynchronous, so we don't want to use buffer flipping
721 // here. 722 // here.
722 UpdateFrontBuffer(offset_rect, false); 723 UpdateFrontBuffer(offset_rect, false);
723 } 724 }
724 725
725 const SkBitmap& bitmap = 726 const SkBitmap& bitmap =
726 front_buffer_canvas()->getDevice()->accessBitmap(false); 727 front_buffer_canvas()->getDevice()->accessBitmap(false);
727 SkPaint paint; 728 SkPaint paint;
728 paint.setXfermodeMode(SkXfermode::kSrcATop_Mode); 729 paint.setXfermodeMode(
730 transparent_ ? SkXfermode::kSrcATop_Mode : SkXfermode::kSrc_Mode);
729 SkIRect src_rect = gfx::RectToSkIRect(offset_rect); 731 SkIRect src_rect = gfx::RectToSkIRect(offset_rect);
730 canvas->drawBitmapRect(bitmap, 732 canvas->drawBitmapRect(bitmap,
731 &src_rect, 733 &src_rect,
732 gfx::RectToSkRect(rect), 734 gfx::RectToSkRect(rect),
733 &paint); 735 &paint);
734 736
735 if (invalidate_pending_) { 737 if (invalidate_pending_) {
736 // Only send the PaintAck message if this paint is in response to an 738 // Only send the PaintAck message if this paint is in response to an
737 // invalidate from the plugin, since this message acts as an access token 739 // invalidate from the plugin, since this message acts as an access token
738 // to ensure only one process is using the transport dib at a time. 740 // to ensure only one process is using the transport dib at a time.
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after
1305 1307
1306 void WebPluginDelegateProxy::OnURLRedirectResponse(bool allow, 1308 void WebPluginDelegateProxy::OnURLRedirectResponse(bool allow,
1307 int resource_id) { 1309 int resource_id) {
1308 if (!plugin_) 1310 if (!plugin_)
1309 return; 1311 return;
1310 1312
1311 plugin_->URLRedirectResponse(allow, resource_id); 1313 plugin_->URLRedirectResponse(allow, resource_id);
1312 } 1314 }
1313 1315
1314 } // namespace content 1316 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/webplugin_delegate_proxy.h ('k') | webkit/plugins/npapi/plugin_instance.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698