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

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
« no previous file with comments | « content/renderer/render_widget_fullscreen_pepper.h ('k') | no next file » | 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/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 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 } 325 }
326 326
327 virtual bool caretOrSelectionRange(size_t* location, size_t* length) { 327 virtual bool caretOrSelectionRange(size_t* location, size_t* length) {
328 return false; 328 return false;
329 } 329 }
330 330
331 virtual void setTextDirection(WebTextDirection) { 331 virtual void setTextDirection(WebTextDirection) {
332 } 332 }
333 333
334 virtual bool isAcceleratedCompositingActive() const { 334 virtual bool isAcceleratedCompositingActive() const {
335 return widget_->context() && widget_->plugin() && 335 return widget_->plugin() && widget_->plugin()->GetBackingTextureId();
336 (widget_->plugin()->GetBackingTextureId() != 0);
337 } 336 }
338 337
339 private: 338 private:
340 RenderWidgetFullscreenPepper* widget_; 339 RenderWidgetFullscreenPepper* widget_;
341 WebSize size_; 340 WebSize size_;
342 341
343 DISALLOW_COPY_AND_ASSIGN(PepperWidget); 342 DISALLOW_COPY_AND_ASSIGN(PepperWidget);
344 }; 343 };
345 344
346 void DestroyContext(WebGraphicsContext3DCommandBufferImpl* context, 345 void DestroyContext(WebGraphicsContext3DCommandBufferImpl* context,
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 } 443 }
445 444
446 void RenderWidgetFullscreenPepper::DidChangeCursor( 445 void RenderWidgetFullscreenPepper::DidChangeCursor(
447 const WebKit::WebCursorInfo& cursor) { 446 const WebKit::WebCursorInfo& cursor) {
448 didChangeCursor(cursor); 447 didChangeCursor(cursor);
449 } 448 }
450 449
451 webkit::ppapi::PluginDelegate::PlatformContext3D* 450 webkit::ppapi::PluginDelegate::PlatformContext3D*
452 RenderWidgetFullscreenPepper::CreateContext3D() { 451 RenderWidgetFullscreenPepper::CreateContext3D() {
453 #ifdef ENABLE_GPU 452 #ifdef ENABLE_GPU
454 return new PlatformContext3DImpl(this); 453 return new PlatformContext3DImpl;
piman 2013/03/08 22:37:52 we probably want to return NULL if switches::kDisa
danakj 2013/03/08 22:40:46 I am scared of that, the old code would not have r
piman 2013/03/08 22:44:09 It should be safe. It's only called from PPB_Grap
455 #else 454 #else
456 return NULL; 455 return NULL;
457 #endif 456 #endif
458 } 457 }
459 458
460 void RenderWidgetFullscreenPepper::ReparentContext( 459 void RenderWidgetFullscreenPepper::ReparentContext(
461 webkit::ppapi::PluginDelegate::PlatformContext3D* context) { 460 webkit::ppapi::PluginDelegate::PlatformContext3D* context) {
462 static_cast<PlatformContext3DImpl*>(context)->SetParentContext(this); 461 PlatformContext3DImpl* context_impl =
462 static_cast<PlatformContext3DImpl*>(context);
463
464 CommandLine* command_line = CommandLine::ForCurrentProcess();
465 if (command_line->HasSwitch(switches::kDisableFlashFullscreen3d))
466 context_impl->DestroyParentContextProviderAndBackingTexture();
467 else
468 context_impl->SetParentAndCreateBackingTextureIfNeeded();
463 } 469 }
464 470
465 bool RenderWidgetFullscreenPepper::OnMessageReceived(const IPC::Message& msg) { 471 bool RenderWidgetFullscreenPepper::OnMessageReceived(const IPC::Message& msg) {
466 bool handled = true; 472 bool handled = true;
467 IPC_BEGIN_MESSAGE_MAP(RenderWidgetFullscreenPepper, msg) 473 IPC_BEGIN_MESSAGE_MAP(RenderWidgetFullscreenPepper, msg)
468 IPC_MESSAGE_FORWARD(ViewMsg_LockMouse_ACK, 474 IPC_MESSAGE_FORWARD(ViewMsg_LockMouse_ACK,
469 mouse_lock_dispatcher_.get(), 475 mouse_lock_dispatcher_.get(),
470 MouseLockDispatcher::OnLockMouseACK) 476 MouseLockDispatcher::OnLockMouseACK)
471 IPC_MESSAGE_FORWARD(ViewMsg_MouseLockLost, 477 IPC_MESSAGE_FORWARD(ViewMsg_MouseLockLost,
472 mouse_lock_dispatcher_.get(), 478 mouse_lock_dispatcher_.get(),
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 557
552 DCHECK(context_); 558 DCHECK(context_);
553 unsigned int texture = plugin_->GetBackingTextureId(); 559 unsigned int texture = plugin_->GetBackingTextureId();
554 context_->bindTexture(GL_TEXTURE_2D, texture); 560 context_->bindTexture(GL_TEXTURE_2D, texture);
555 context_->drawArrays(GL_TRIANGLES, 0, 3); 561 context_->drawArrays(GL_TRIANGLES, 0, 3);
556 SwapBuffers(); 562 SwapBuffers();
557 } 563 }
558 564
559 void RenderWidgetFullscreenPepper::CreateContext() { 565 void RenderWidgetFullscreenPepper::CreateContext() {
560 DCHECK(!context_); 566 DCHECK(!context_);
561 CommandLine* command_line = CommandLine::ForCurrentProcess();
562 if (command_line->HasSwitch(switches::kDisableFlashFullscreen3d))
563 return;
564 WebKit::WebGraphicsContext3D::Attributes attributes; 567 WebKit::WebGraphicsContext3D::Attributes attributes;
565 attributes.depth = false; 568 attributes.depth = false;
566 attributes.stencil = false; 569 attributes.stencil = false;
567 attributes.antialias = false; 570 attributes.antialias = false;
568 attributes.shareResources = false; 571 attributes.shareResources = true;
569 attributes.preferDiscreteGPU = true; 572 attributes.preferDiscreteGPU = true;
570 context_ = WebGraphicsContext3DCommandBufferImpl::CreateViewContext( 573 context_ = WebGraphicsContext3DCommandBufferImpl::CreateViewContext(
571 RenderThreadImpl::current(), 574 RenderThreadImpl::current(),
572 surface_id(), 575 surface_id(),
573 NULL, 576 NULL,
574 attributes, 577 attributes,
575 true /* bind generates resources */, 578 true /* bind generates resources */,
576 active_url_, 579 active_url_,
577 CAUSE_FOR_GPU_LAUNCH_RENDERWIDGETFULLSCREENPEPPER_CREATECONTEXT); 580 CAUSE_FOR_GPU_LAUNCH_RENDERWIDGETFULLSCREENPEPPER_CREATECONTEXT);
578 if (!context_) 581 if (!context_)
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 kTexCoords, 680 kTexCoords,
678 GL_STATIC_DRAW); 681 GL_STATIC_DRAW);
679 context_->vertexAttribPointer(0, 2, 682 context_->vertexAttribPointer(0, 2,
680 GL_FLOAT, GL_FALSE, 683 GL_FLOAT, GL_FALSE,
681 0, static_cast<WGC3Dintptr>(NULL)); 684 0, static_cast<WGC3Dintptr>(NULL));
682 context_->enableVertexAttribArray(0); 685 context_->enableVertexAttribArray(0);
683 return true; 686 return true;
684 } 687 }
685 688
686 bool RenderWidgetFullscreenPepper::CheckCompositing() { 689 bool RenderWidgetFullscreenPepper::CheckCompositing() {
687 bool compositing = 690 bool compositing = webwidget_ && webwidget_->isAcceleratedCompositingActive();
688 webwidget_ && webwidget_->isAcceleratedCompositingActive(); 691 if (compositing) {
692 if (context_ && context_->isContextLost()) {
693 DestroyContext(context_, program_, buffer_);
694 context_ = NULL;
695 }
696 if (!context_)
697 CreateContext();
698 if (!context_)
699 compositing = false;
700 }
701
689 if (compositing != is_accelerated_compositing_active_) { 702 if (compositing != is_accelerated_compositing_active_) {
690 if (compositing) 703 if (compositing) {
691 didActivateCompositor(-1); 704 didActivateCompositor(-1);
692 else 705 } else {
706 if (context_) {
707 DestroyContext(context_, program_, buffer_);
708 context_ = NULL;
709 }
693 didDeactivateCompositor(); 710 didDeactivateCompositor();
711 }
694 } 712 }
695 return compositing; 713 return compositing;
696 } 714 }
697 715
698 void RenderWidgetFullscreenPepper::SwapBuffers() { 716 void RenderWidgetFullscreenPepper::SwapBuffers() {
699 DCHECK(context_); 717 DCHECK(context_);
700 context_->prepareTexture(); 718 context_->prepareTexture();
701 719
702 // The compositor isn't actually active in this path, but pretend it is for 720 // The compositor isn't actually active in this path, but pretend it is for
703 // scheduling purposes. 721 // scheduling purposes.
704 didCommitAndDrawCompositorFrame(); 722 didCommitAndDrawCompositorFrame();
705 } 723 }
706 724
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 725 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_widget_fullscreen_pepper.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698