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

Unified 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: null context3d in swiftshader 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_widget_fullscreen_pepper.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« 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