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. |
+} |