| Index: content/renderer/render_widget_fullscreen_pepper.cc
|
| diff --git a/content/renderer/render_widget_fullscreen_pepper.cc b/content/renderer/render_widget_fullscreen_pepper.cc
|
| index 3154bbbda7b6c14e0c3b2621ca6c5c04daa8be93..0aa6f5e352b49b1dbcd9f828e739911c28178430 100644
|
| --- a/content/renderer/render_widget_fullscreen_pepper.cc
|
| +++ b/content/renderer/render_widget_fullscreen_pepper.cc
|
| @@ -332,8 +332,7 @@ class PepperWidget : public WebWidget {
|
| }
|
|
|
| virtual bool isAcceleratedCompositingActive() const {
|
| - return widget_->context() && widget_->plugin() &&
|
| - (widget_->plugin()->GetBackingTextureId() != 0);
|
| + return widget_->plugin() && widget_->plugin()->GetBackingTextureId();
|
| }
|
|
|
| private:
|
| @@ -450,16 +449,22 @@ void RenderWidgetFullscreenPepper::DidChangeCursor(
|
|
|
| webkit::ppapi::PluginDelegate::PlatformContext3D*
|
| RenderWidgetFullscreenPepper::CreateContext3D() {
|
| -#ifdef ENABLE_GPU
|
| - return new PlatformContext3DImpl(this);
|
| -#else
|
| - return NULL;
|
| -#endif
|
| + CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| + if (command_line->HasSwitch(switches::kDisableFlashFullscreen3d))
|
| + return NULL;
|
| + return new PlatformContext3DImpl;
|
| }
|
|
|
| void RenderWidgetFullscreenPepper::ReparentContext(
|
| webkit::ppapi::PluginDelegate::PlatformContext3D* context) {
|
| - static_cast<PlatformContext3DImpl*>(context)->SetParentContext(this);
|
| + PlatformContext3DImpl* context_impl =
|
| + static_cast<PlatformContext3DImpl*>(context);
|
| +
|
| + CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| + if (command_line->HasSwitch(switches::kDisableFlashFullscreen3d))
|
| + context_impl->DestroyParentContextProviderAndBackingTexture();
|
| + else
|
| + context_impl->SetParentAndCreateBackingTextureIfNeeded();
|
| }
|
|
|
| bool RenderWidgetFullscreenPepper::OnMessageReceived(const IPC::Message& msg) {
|
| @@ -558,14 +563,11 @@ void RenderWidgetFullscreenPepper::Composite() {
|
|
|
| void RenderWidgetFullscreenPepper::CreateContext() {
|
| DCHECK(!context_);
|
| - CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| - if (command_line->HasSwitch(switches::kDisableFlashFullscreen3d))
|
| - return;
|
| WebKit::WebGraphicsContext3D::Attributes attributes;
|
| attributes.depth = false;
|
| attributes.stencil = false;
|
| attributes.antialias = false;
|
| - attributes.shareResources = false;
|
| + attributes.shareResources = true;
|
| attributes.preferDiscreteGPU = true;
|
| context_ = WebGraphicsContext3DCommandBufferImpl::CreateViewContext(
|
| RenderThreadImpl::current(),
|
| @@ -684,13 +686,28 @@ bool RenderWidgetFullscreenPepper::InitContext() {
|
| }
|
|
|
| bool RenderWidgetFullscreenPepper::CheckCompositing() {
|
| - bool compositing =
|
| - webwidget_ && webwidget_->isAcceleratedCompositingActive();
|
| + bool compositing = webwidget_ && webwidget_->isAcceleratedCompositingActive();
|
| + if (compositing) {
|
| + if (context_ && context_->isContextLost()) {
|
| + DestroyContext(context_, program_, buffer_);
|
| + context_ = NULL;
|
| + }
|
| + if (!context_)
|
| + CreateContext();
|
| + if (!context_)
|
| + compositing = false;
|
| + }
|
| +
|
| if (compositing != is_accelerated_compositing_active_) {
|
| - if (compositing)
|
| + if (compositing) {
|
| didActivateCompositor(-1);
|
| - else
|
| + } else {
|
| + if (context_) {
|
| + DestroyContext(context_, program_, buffer_);
|
| + context_ = NULL;
|
| + }
|
| didDeactivateCompositor();
|
| + }
|
| }
|
| return compositing;
|
| }
|
| @@ -704,14 +721,4 @@ void RenderWidgetFullscreenPepper::SwapBuffers() {
|
| didCommitAndDrawCompositorFrame();
|
| }
|
|
|
| -WebGraphicsContext3DCommandBufferImpl*
|
| -RenderWidgetFullscreenPepper::GetParentContextForPlatformContext3D() {
|
| - if (!context_) {
|
| - CreateContext();
|
| - }
|
| - if (!context_)
|
| - return NULL;
|
| - return context_;
|
| -}
|
| -
|
| } // namespace content
|
|
|