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

Unified Diff: content/renderer/gpu/compositor_thread.cc

Issue 10798006: Implement WebCompositorOutputSurface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nit fixes Created 8 years, 5 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
Index: content/renderer/gpu/compositor_thread.cc
diff --git a/content/renderer/gpu/compositor_thread.cc b/content/renderer/gpu/compositor_thread.cc
index b52e485053a63c16f35adc239988ca7af0ba21ae..3d71d74e1032d1d9390063ab9c7bef6e30c97e32 100644
--- a/content/renderer/gpu/compositor_thread.cc
+++ b/content/renderer/gpu/compositor_thread.cc
@@ -6,6 +6,7 @@
#include "base/bind.h"
#include "base/debug/trace_event.h"
+#include "content/common/view_messages.h"
#include "content/renderer/gpu/input_event_filter.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebActiveWheelFlingParameters.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebCompositorInputHandlerClient.h"
@@ -54,11 +55,11 @@ class CompositorThread::InputHandlerWrapper
}
virtual void didHandleInputEvent() {
- compositor_thread_->filter_->DidHandleInputEvent();
+ compositor_thread_->input_filter_->DidHandleInputEvent();
}
virtual void didNotHandleInputEvent(bool send_to_widget) {
- compositor_thread_->filter_->DidNotHandleInputEvent(send_to_widget);
+ compositor_thread_->input_filter_->DidNotHandleInputEvent(send_to_widget);
}
private:
@@ -83,28 +84,42 @@ class CompositorThread::InputHandlerWrapper
CompositorThread::CompositorThread(IPC::Listener* main_listener)
: thread_("Compositor") {
- filter_ =
+ input_filter_ =
new InputEventFilter(main_listener,
thread_.message_loop()->message_loop_proxy(),
base::Bind(&CompositorThread::HandleInputEvent,
base::Unretained(this)));
+
+ uint32 messages[] = {ViewMsg_UpdateVSyncParameters::ID};
darin (slow to review) 2012/07/24 23:56:43 nit: const uint32 kMessages[] = { ViewMsg_...::ID
+ compositor_filter_ =
+ new IPC::ForwardingMessageFilter(
+ messages, arraysize(messages),
+ thread_.message_loop()->message_loop_proxy(),
+ base::Bind(&CompositorThread::OnCompositorMessageReceived,
+ base::Unretained(this)));
}
CompositorThread::~CompositorThread() {
}
-IPC::ChannelProxy::MessageFilter* CompositorThread::GetMessageFilter() const {
- return filter_;
+IPC::ChannelProxy::MessageFilter* CompositorThread::GetInputFilter() const {
+ return input_filter_;
+}
+
+IPC::ChannelProxy::MessageFilter*
+ CompositorThread::GetCompositorFilter() const {
+ return compositor_filter_;
}
darin (slow to review) 2012/07/24 23:56:43 nit: extra new line
-void CompositorThread::AddInputHandler(
+
+void CompositorThread::AddHandlers(
int routing_id, int input_handler_id,
const base::WeakPtr<RenderViewImpl>& render_view_impl) {
DCHECK_NE(thread_.message_loop(), MessageLoop::current());
thread_.message_loop()->PostTask(
FROM_HERE,
- base::Bind(&CompositorThread::AddInputHandlerOnCompositorThread,
+ base::Bind(&CompositorThread::AddHandlersOnCompositorThread,
base::Unretained(this),
routing_id,
input_handler_id,
@@ -112,7 +127,7 @@ void CompositorThread::AddInputHandler(
render_view_impl));
}
-void CompositorThread::AddInputHandlerOnCompositorThread(
+void CompositorThread::AddHandlersOnCompositorThread(
int routing_id, int input_handler_id,
scoped_refptr<base::MessageLoopProxy> main_loop,
const base::WeakPtr<RenderViewImpl>& render_view_impl) {
@@ -132,8 +147,9 @@ void CompositorThread::AddInputHandlerOnCompositorThread(
return;
}
- TRACE_EVENT0("CompositorThread::AddInputHandler", "AddingRoute");
- filter_->AddRoute(routing_id);
+ TRACE_EVENT0("renderer", "CompositorThread::AddHandlersOnCompositorThread");
+ input_filter_->AddRoute(routing_id);
+ compositor_filter_->AddRoute(routing_id);
input_handlers_[routing_id] =
make_scoped_refptr(new InputHandlerWrapper(this,
routing_id, input_handler, main_loop, render_view_impl));
@@ -142,24 +158,38 @@ void CompositorThread::AddInputHandlerOnCompositorThread(
void CompositorThread::RemoveInputHandler(int routing_id) {
DCHECK_EQ(MessageLoop::current(), thread_.message_loop());
- TRACE_EVENT0("CompositorThread::RemoveInputHandler", "RemovingRoute");
+ TRACE_EVENT0("renderer", "CompositorThread::RemoveInputHandler");
- filter_->RemoveRoute(routing_id);
+ input_filter_->RemoveRoute(routing_id);
+ compositor_filter_->RemoveRoute(routing_id);
input_handlers_.erase(routing_id);
}
void CompositorThread::HandleInputEvent(
int routing_id,
const WebInputEvent* input_event) {
+ TRACE_EVENT0("renderer", "CompositorThread::HandleInputEvent");
DCHECK_EQ(MessageLoop::current(), thread_.message_loop());
InputHandlerMap::iterator it = input_handlers_.find(routing_id);
if (it == input_handlers_.end()) {
- TRACE_EVENT0("CompositorThread::HandleInputEvent", "NoInputHandlerFound");
+ TRACE_EVENT0("renderer", "NoInputHandlerFound");
// Oops, we no longer have an interested input handler..
- filter_->DidNotHandleInputEvent(true);
+ input_filter_->DidNotHandleInputEvent(true);
return;
}
it->second->input_handler()->handleInputEvent(*input_event);
}
+
+void CompositorThread::OnCompositorMessageReceived(
+ const IPC::Message& message) {
+ TRACE_EVENT0("renderer", "CompositorThread::OnCompositorMessageReceived");
+ DCHECK_EQ(message.type(), ViewMsg_UpdateVSyncParameters::ID);
+
+ InputHandlerMap::iterator it = input_handlers_.find(message.routing_id());
darin (slow to review) 2012/07/24 23:56:43 on the webkit side, perhaps we should be pushing t
+ if (it == input_handlers_.end())
+ return;
+
+ // TODO(nduca): Push the updated vsync paramters to the compositor.
+}

Powered by Google App Engine
This is Rietveld 408576698