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

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

Issue 12673002: pepper: Use the RenderThread's shared context as the parent context. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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
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/render_widget_fullscreen_pepper.h" 5 #include "content/renderer/render_widget_fullscreen_pepper.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 } 444 }
445 445
446 void RenderWidgetFullscreenPepper::DidChangeCursor( 446 void RenderWidgetFullscreenPepper::DidChangeCursor(
447 const WebKit::WebCursorInfo& cursor) { 447 const WebKit::WebCursorInfo& cursor) {
448 didChangeCursor(cursor); 448 didChangeCursor(cursor);
449 } 449 }
450 450
451 webkit::ppapi::PluginDelegate::PlatformContext3D* 451 webkit::ppapi::PluginDelegate::PlatformContext3D*
452 RenderWidgetFullscreenPepper::CreateContext3D() { 452 RenderWidgetFullscreenPepper::CreateContext3D() {
453 #ifdef ENABLE_GPU 453 #ifdef ENABLE_GPU
454 return new PlatformContext3DImpl(this); 454 return new PlatformContext3DImpl;
455 #else 455 #else
456 return NULL; 456 return NULL;
457 #endif 457 #endif
458 } 458 }
459 459
460 void RenderWidgetFullscreenPepper::ReparentContext(
461 webkit::ppapi::PluginDelegate::PlatformContext3D* context) {
462 static_cast<PlatformContext3DImpl*>(context)->SetParentContext(this);
463 }
464
465 bool RenderWidgetFullscreenPepper::OnMessageReceived(const IPC::Message& msg) { 460 bool RenderWidgetFullscreenPepper::OnMessageReceived(const IPC::Message& msg) {
466 bool handled = true; 461 bool handled = true;
467 IPC_BEGIN_MESSAGE_MAP(RenderWidgetFullscreenPepper, msg) 462 IPC_BEGIN_MESSAGE_MAP(RenderWidgetFullscreenPepper, msg)
468 IPC_MESSAGE_FORWARD(ViewMsg_LockMouse_ACK, 463 IPC_MESSAGE_FORWARD(ViewMsg_LockMouse_ACK,
469 mouse_lock_dispatcher_.get(), 464 mouse_lock_dispatcher_.get(),
470 MouseLockDispatcher::OnLockMouseACK) 465 MouseLockDispatcher::OnLockMouseACK)
471 IPC_MESSAGE_FORWARD(ViewMsg_MouseLockLost, 466 IPC_MESSAGE_FORWARD(ViewMsg_MouseLockLost,
472 mouse_lock_dispatcher_.get(), 467 mouse_lock_dispatcher_.get(),
473 MouseLockDispatcher::OnMouseLockLost) 468 MouseLockDispatcher::OnMouseLockLost)
474 IPC_MESSAGE_UNHANDLED(handled = false) 469 IPC_MESSAGE_UNHANDLED(handled = false)
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 553
559 void RenderWidgetFullscreenPepper::CreateContext() { 554 void RenderWidgetFullscreenPepper::CreateContext() {
560 DCHECK(!context_); 555 DCHECK(!context_);
561 CommandLine* command_line = CommandLine::ForCurrentProcess(); 556 CommandLine* command_line = CommandLine::ForCurrentProcess();
562 if (command_line->HasSwitch(switches::kDisableFlashFullscreen3d)) 557 if (command_line->HasSwitch(switches::kDisableFlashFullscreen3d))
563 return; 558 return;
564 WebKit::WebGraphicsContext3D::Attributes attributes; 559 WebKit::WebGraphicsContext3D::Attributes attributes;
565 attributes.depth = false; 560 attributes.depth = false;
566 attributes.stencil = false; 561 attributes.stencil = false;
567 attributes.antialias = false; 562 attributes.antialias = false;
568 attributes.shareResources = false; 563 attributes.shareResources = true;
569 attributes.preferDiscreteGPU = true; 564 attributes.preferDiscreteGPU = true;
570 context_ = WebGraphicsContext3DCommandBufferImpl::CreateViewContext( 565 context_ = WebGraphicsContext3DCommandBufferImpl::CreateViewContext(
571 RenderThreadImpl::current(), 566 RenderThreadImpl::current(),
572 surface_id(), 567 surface_id(),
573 NULL, 568 NULL,
574 attributes, 569 attributes,
575 true /* bind generates resources */, 570 true /* bind generates resources */,
576 active_url_, 571 active_url_,
577 CAUSE_FOR_GPU_LAUNCH_RENDERWIDGETFULLSCREENPEPPER_CREATECONTEXT); 572 CAUSE_FOR_GPU_LAUNCH_RENDERWIDGETFULLSCREENPEPPER_CREATECONTEXT);
578 if (!context_) 573 if (!context_)
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 kTexCoords, 672 kTexCoords,
678 GL_STATIC_DRAW); 673 GL_STATIC_DRAW);
679 context_->vertexAttribPointer(0, 2, 674 context_->vertexAttribPointer(0, 2,
680 GL_FLOAT, GL_FALSE, 675 GL_FLOAT, GL_FALSE,
681 0, static_cast<WGC3Dintptr>(NULL)); 676 0, static_cast<WGC3Dintptr>(NULL));
682 context_->enableVertexAttribArray(0); 677 context_->enableVertexAttribArray(0);
683 return true; 678 return true;
684 } 679 }
685 680
686 bool RenderWidgetFullscreenPepper::CheckCompositing() { 681 bool RenderWidgetFullscreenPepper::CheckCompositing() {
682 if (webwidget_) {
683 if (context_ && context_->isContextLost()) {
684 DestroyContext(context_, program_, buffer_);
685 context_ = NULL;
686 }
687 if (!context_)
688 CreateContext();
piman 2013/03/08 04:43:16 We should only create the context if the plugin ha
danakj 2013/03/08 18:13:34 Done.
689 } else if (context_) {
piman 2013/03/08 04:43:16 I don't really think you need this clause. The web
danakj 2013/03/08 18:13:34 Done.
690 DestroyContext(context_, program_, buffer_);
691 context_ = NULL;
692 }
693
687 bool compositing = 694 bool compositing =
688 webwidget_ && webwidget_->isAcceleratedCompositingActive(); 695 webwidget_ && webwidget_->isAcceleratedCompositingActive();
689 if (compositing != is_accelerated_compositing_active_) { 696 if (compositing != is_accelerated_compositing_active_) {
690 if (compositing) 697 if (compositing)
691 didActivateCompositor(-1); 698 didActivateCompositor(-1);
692 else 699 else
693 didDeactivateCompositor(); 700 didDeactivateCompositor();
694 } 701 }
695 return compositing; 702 return compositing;
696 } 703 }
697 704
698 void RenderWidgetFullscreenPepper::SwapBuffers() { 705 void RenderWidgetFullscreenPepper::SwapBuffers() {
699 DCHECK(context_); 706 DCHECK(context_);
700 context_->prepareTexture(); 707 context_->prepareTexture();
701 708
702 // The compositor isn't actually active in this path, but pretend it is for 709 // The compositor isn't actually active in this path, but pretend it is for
703 // scheduling purposes. 710 // scheduling purposes.
704 didCommitAndDrawCompositorFrame(); 711 didCommitAndDrawCompositorFrame();
705 } 712 }
706 713
707 WebGraphicsContext3DCommandBufferImpl*
708 RenderWidgetFullscreenPepper::GetParentContextForPlatformContext3D() {
709 if (!context_) {
710 CreateContext();
711 }
712 if (!context_)
713 return NULL;
714 return context_;
715 }
716
717 } // namespace content 714 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698