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

Side by Side Diff: chrome/plugin/webplugin_proxy.cc

Issue 332033: Make the web plugin proxy tolerant of windowless bitmap memory mapping failur... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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 | « no previous file | chrome/test/data/reliability/known_crashes.txt » ('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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "chrome/plugin/webplugin_proxy.h" 5 #include "chrome/plugin/webplugin_proxy.h"
6 6
7 #include "build/build_config.h" 7 #include "build/build_config.h"
8 8
9 #include "app/gfx/canvas.h" 9 #include "app/gfx/canvas.h"
10 #if defined(OS_WIN) 10 #if defined(OS_WIN)
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 if (delegate_->IsWindowless() && !clip_rect.IsEmpty() && 448 if (delegate_->IsWindowless() && !clip_rect.IsEmpty() &&
449 old_clip_rect.IsEmpty() && !damaged_rect_.IsEmpty()) { 449 old_clip_rect.IsEmpty() && !damaged_rect_.IsEmpty()) {
450 InvalidateRect(damaged_rect_); 450 InvalidateRect(damaged_rect_);
451 } 451 }
452 } 452 }
453 453
454 #if defined(OS_WIN) 454 #if defined(OS_WIN)
455 void WebPluginProxy::SetWindowlessBuffer( 455 void WebPluginProxy::SetWindowlessBuffer(
456 const TransportDIB::Handle& windowless_buffer, 456 const TransportDIB::Handle& windowless_buffer,
457 const TransportDIB::Handle& background_buffer) { 457 const TransportDIB::Handle& background_buffer) {
458 // Create a canvas that will reference the shared bits. 458 // Create a canvas that will reference the shared bits. We have to handle
459 windowless_canvas_.reset(new skia::PlatformCanvas( 459 // errors here since we're mapping a large amount of memory that may not fit
460 delegate_->GetRect().width(), 460 // in our address space, or go wrong in some other way.
461 delegate_->GetRect().height(), 461 windowless_canvas_.reset(new skia::PlatformCanvas);
462 true, 462 if (!windowless_canvas_->initialize(
463 win_util::GetSectionFromProcess(windowless_buffer, 463 delegate_->GetRect().width(),
464 channel_->renderer_handle(), false))); 464 delegate_->GetRect().height(),
465 true,
466 win_util::GetSectionFromProcess(windowless_buffer,
467 channel_->renderer_handle(), false))) {
468 windowless_canvas_.reset();
469 background_canvas_.reset();
470 return;
471 }
472
465 if (background_buffer) { 473 if (background_buffer) {
466 background_canvas_.reset(new skia::PlatformCanvas( 474 background_canvas_.reset(new skia::PlatformCanvas);
467 delegate_->GetRect().width(), 475 if (!background_canvas_->initialize(
468 delegate_->GetRect().height(), 476 delegate_->GetRect().width(),
469 true, 477 delegate_->GetRect().height(),
470 win_util::GetSectionFromProcess(background_buffer, 478 true,
471 channel_->renderer_handle(), false))); 479 win_util::GetSectionFromProcess(background_buffer,
480 channel_->renderer_handle(), false))) {
481 windowless_canvas_.reset();
482 background_canvas_.reset();
483 return;
484 }
472 } 485 }
473 } 486 }
474 487
475 #elif defined(OS_MACOSX) 488 #elif defined(OS_MACOSX)
476 489
477 void WebPluginProxy::SetWindowlessBuffer( 490 void WebPluginProxy::SetWindowlessBuffer(
478 const TransportDIB::Handle& windowless_buffer, 491 const TransportDIB::Handle& windowless_buffer,
479 const TransportDIB::Handle& background_buffer) { 492 const TransportDIB::Handle& background_buffer) {
480 // Convert the shared memory handle to a handle that works in our process, 493 // Convert the shared memory handle to a handle that works in our process,
481 // and then use that to create a CGContextRef. 494 // and then use that to create a CGContextRef.
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 while (index != resource_clients_.end()) { 583 while (index != resource_clients_.end()) {
571 WebPluginResourceClient* client = (*index).second; 584 WebPluginResourceClient* client = (*index).second;
572 585
573 if (client == resource_client) { 586 if (client == resource_client) {
574 resource_clients_.erase(index++); 587 resource_clients_.erase(index++);
575 } else { 588 } else {
576 index++; 589 index++;
577 } 590 }
578 } 591 }
579 } 592 }
OLDNEW
« no previous file with comments | « no previous file | chrome/test/data/reliability/known_crashes.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698