summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--content/renderer/render_view_impl.cc19
-rw-r--r--content/renderer/render_view_impl.h5
-rw-r--r--content/renderer/render_widget.cc32
-rw-r--r--content/renderer/render_widget.h5
-rw-r--r--content/renderer/render_widget_fullscreen_pepper.cc2
6 files changed, 63 insertions, 1 deletions
diff --git a/AUTHORS b/AUTHORS
index e458270..17ced31 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -318,6 +318,7 @@ Sungguk Lim <limasdf@gmail.com>
Sungmann Cho <sungmann.cho@gmail.com>
Sungmann Cho <sungmann.cho@navercorp.com>
Suyash Sengar <suyash.s@samsung.com>
+Sunil Ratnu <sunil.ratnu@samsung.com>
Sylvain Zimmer <sylvinus@gmail.com>
Szymon Piechowicz <szymonpiechowicz@o2.pl>
Takeshi Kurosawa <taken.spc@gmail.com>
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 9ef9242..251d086 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -2288,6 +2288,10 @@ bool RenderViewImpl::isPointerLocked() {
webwidget_mouse_lock_target_.get());
}
+// FIXME: To be removed as soon as chromium and blink side changes land
+// didActivateCompositor with parameters is still kept in order to land
+// these changes s-chromium - https://codereview.chromium.org/137893025/.
+// s-blink - https://codereview.chromium.org/138523003/
void RenderViewImpl::didActivateCompositor(int input_handler_identifier) {
#if !defined(OS_MACOSX) // many events are unhandled - http://crbug.com/138003
InputHandlerManager* input_handler_manager =
@@ -2303,6 +2307,21 @@ void RenderViewImpl::didActivateCompositor(int input_handler_identifier) {
RenderWidget::didActivateCompositor(input_handler_identifier);
}
+void RenderViewImpl::didActivateCompositor() {
+#if !defined(OS_MACOSX) // many events are unhandled - http://crbug.com/138003
+ InputHandlerManager* input_handler_manager =
+ RenderThreadImpl::current()->input_handler_manager();
+ if (input_handler_manager) {
+ input_handler_manager->AddInputHandler(
+ routing_id_,
+ compositor_->GetInputHandler(),
+ AsWeakPtr());
+ }
+#endif
+
+ RenderWidget::didActivateCompositor();
+}
+
void RenderViewImpl::didHandleGestureEvent(
const WebGestureEvent& event,
bool event_cancelled) {
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h
index 10540b9..e75867a 100644
--- a/content/renderer/render_view_impl.h
+++ b/content/renderer/render_view_impl.h
@@ -374,7 +374,12 @@ class CONTENT_EXPORT RenderViewImpl
virtual bool requestPointerLock();
virtual void requestPointerUnlock();
virtual bool isPointerLocked();
+ // FIXME: To be removed as soon as chromium and blink side changes land
+ // didActivateCompositor with parameters is still kept in order to land
+ // these changes s-chromium - https://codereview.chromium.org/137893025/.
+ // s-blink - https://codereview.chromium.org/138523003/
virtual void didActivateCompositor(int input_handler_identifier);
+ virtual void didActivateCompositor() OVERRIDE;
virtual void didHandleGestureEvent(const blink::WebGestureEvent& event,
bool event_cancelled) OVERRIDE;
virtual void initializeLayerTreeView() OVERRIDE;
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 198d7d4..a2673a6 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -1807,6 +1807,10 @@ void RenderWidget::AutoResizeCompositor() {
compositor_->setViewportSize(size_, physical_backing_size_);
}
+// FIXME: To be removed as soon as chromium and blink side changes land
+// didActivateCompositor with parameters is still kept in order to land
+// these changes s-chromium - https://codereview.chromium.org/137893025/.
+// s-blink - https://codereview.chromium.org/138523003/
void RenderWidget::didActivateCompositor(int input_handler_identifier) {
TRACE_EVENT0("gpu", "RenderWidget::didActivateCompositor");
@@ -1835,6 +1839,34 @@ void RenderWidget::didActivateCompositor(int input_handler_identifier) {
}
}
+void RenderWidget::didActivateCompositor() {
+ TRACE_EVENT0("gpu", "RenderWidget::didActivateCompositor");
+
+#if !defined(OS_MACOSX)
+ if (!is_accelerated_compositing_active_) {
+ // When not in accelerated compositing mode, in certain cases (e.g. waiting
+ // for a resize or if no backing store) the RenderWidgetHost is blocking the
+ // browser's UI thread for some time, waiting for an UpdateRect. If we are
+ // going to switch to accelerated compositing, the GPU process may need
+ // round-trips to the browser's UI thread before finishing the frame,
+ // causing deadlocks if we delay the UpdateRect until we receive the
+ // OnSwapBuffersComplete. So send a dummy message that will unblock the
+ // browser's UI thread. This is not necessary on Mac, because SwapBuffers
+ // now unblocks GetBackingStore on Mac.
+ Send(new ViewHostMsg_UpdateIsDelayed(routing_id_));
+ }
+#endif
+
+ is_accelerated_compositing_active_ = true;
+ Send(new ViewHostMsg_DidActivateAcceleratedCompositing(
+ routing_id_, is_accelerated_compositing_active_));
+
+ if (!was_accelerated_compositing_ever_active_) {
+ was_accelerated_compositing_ever_active_ = true;
+ webwidget_->enterForceCompositingMode(true);
+ }
+}
+
void RenderWidget::didDeactivateCompositor() {
TRACE_EVENT0("gpu", "RenderWidget::didDeactivateCompositor");
diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h
index fdd55c3..c84af63 100644
--- a/content/renderer/render_widget.h
+++ b/content/renderer/render_widget.h
@@ -130,7 +130,12 @@ class CONTENT_EXPORT RenderWidget
virtual void didScrollRect(int dx, int dy,
const blink::WebRect& clipRect);
virtual void didAutoResize(const blink::WebSize& new_size);
+ // FIXME: To be removed as soon as chromium and blink side changes land
+ // didActivateCompositor with parameters is still kept in order to land
+ // these changes s-chromium - https://codereview.chromium.org/137893025/.
+ // s-blink - https://codereview.chromium.org/138523003/
virtual void didActivateCompositor(int input_handler_identifier);
+ virtual void didActivateCompositor() OVERRIDE;
virtual void didDeactivateCompositor();
virtual void initializeLayerTreeView();
virtual blink::WebLayerTreeView* layerTreeView();
diff --git a/content/renderer/render_widget_fullscreen_pepper.cc b/content/renderer/render_widget_fullscreen_pepper.cc
index dc22252..988b8ce 100644
--- a/content/renderer/render_widget_fullscreen_pepper.cc
+++ b/content/renderer/render_widget_fullscreen_pepper.cc
@@ -414,7 +414,7 @@ void RenderWidgetFullscreenPepper::SetLayer(blink::WebLayer* layer) {
layer_->setDrawsContent(true);
compositor_->setDeviceScaleFactor(device_scale_factor_);
compositor_->setRootLayer(*layer_);
- didActivateCompositor(-1);
+ didActivateCompositor();
} else {
didDeactivateCompositor();
}