| Index: content/renderer/pepper/pepper_plugin_instance_impl.cc
|
| diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.cc b/content/renderer/pepper/pepper_plugin_instance_impl.cc
|
| index 7db4c547f56e735fe96e414d3463288cf7ad641c..7bba781874049780dee953ae4adb7646dbc0dcfa 100644
|
| --- a/content/renderer/pepper/pepper_plugin_instance_impl.cc
|
| +++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
|
| @@ -1846,7 +1846,7 @@ void PepperPluginInstanceImpl::UpdateFlashFullscreenState(
|
| return;
|
| }
|
|
|
| - UpdateLayer();
|
| + UpdateLayer(false);
|
|
|
| bool old_plugin_focus = PluginHasFocus();
|
| flash_fullscreen_ = flash_fullscreen;
|
| @@ -1985,7 +1985,7 @@ bool PepperPluginInstanceImpl::PrintPDFOutput(PP_Resource print_output,
|
| #endif
|
| }
|
|
|
| -void PepperPluginInstanceImpl::UpdateLayer() {
|
| +void PepperPluginInstanceImpl::UpdateLayer(bool device_changed) {
|
| if (!container_)
|
| return;
|
|
|
| @@ -2000,7 +2000,8 @@ void PepperPluginInstanceImpl::UpdateLayer() {
|
| bool want_texture_layer = want_3d_layer || want_2d_layer;
|
| bool want_compositor_layer = !!bound_compositor_;
|
|
|
| - if ((want_texture_layer == !!texture_layer_.get()) &&
|
| + if (!device_changed &&
|
| + (want_texture_layer == !!texture_layer_.get()) &&
|
| (want_3d_layer == layer_is_hardware_) &&
|
| (want_compositor_layer == !!compositor_layer_) &&
|
| layer_bound_to_fullscreen_ == !!fullscreen_container_) {
|
| @@ -2043,6 +2044,7 @@ void PepperPluginInstanceImpl::UpdateLayer() {
|
| } else if (want_compositor_layer) {
|
| compositor_layer_ = bound_compositor_->layer();
|
| web_layer_.reset(new webkit::WebLayerImpl(compositor_layer_));
|
| + web_layer_.reset(new webkit::WebLayerImpl(compositor_layer_));
|
| }
|
|
|
| if (web_layer_) {
|
| @@ -2241,7 +2243,7 @@ PP_Bool PepperPluginInstanceImpl::BindGraphics(PP_Instance instance,
|
|
|
| // Special-case clearing the current device.
|
| if (!device) {
|
| - UpdateLayer();
|
| + UpdateLayer(true);
|
| InvalidateRect(gfx::Rect());
|
| return PP_TRUE;
|
| }
|
| @@ -2277,13 +2279,13 @@ PP_Bool PepperPluginInstanceImpl::BindGraphics(PP_Instance instance,
|
| if (compositor) {
|
| if (compositor->BindToInstance(this)) {
|
| bound_compositor_ = compositor;
|
| - UpdateLayer();
|
| + UpdateLayer(true);
|
| return PP_TRUE;
|
| }
|
| } else if (graphics_2d) {
|
| if (graphics_2d->BindToInstance(this)) {
|
| bound_graphics_2d_platform_ = graphics_2d;
|
| - UpdateLayer();
|
| + UpdateLayer(true);
|
| return PP_TRUE;
|
| }
|
| } else if (graphics_3d) {
|
| @@ -2292,7 +2294,7 @@ PP_Bool PepperPluginInstanceImpl::BindGraphics(PP_Instance instance,
|
| if (graphics_3d->pp_instance() == pp_instance() &&
|
| graphics_3d->BindToInstance(true)) {
|
| bound_graphics_3d_ = graphics_3d;
|
| - UpdateLayer();
|
| + UpdateLayer(true);
|
| return PP_TRUE;
|
| }
|
| }
|
| @@ -3063,7 +3065,7 @@ bool PepperPluginInstanceImpl::FlashSetFullscreen(bool fullscreen,
|
| DCHECK(!fullscreen_container_);
|
| fullscreen_container_ =
|
| render_frame_->CreatePepperFullscreenContainer(this);
|
| - UpdateLayer();
|
| + UpdateLayer(false);
|
| } else {
|
| DCHECK(fullscreen_container_);
|
| fullscreen_container_->Destroy();
|
|
|