| Index: base/message_pump_win.h
|
| diff --git a/base/message_pump_win.h b/base/message_pump_win.h
|
| index 5ea195fb15ac87d9944b9a8b1121556e671364e7..7872b5bb008346c204a48b701158370949cf2021 100644
|
| --- a/base/message_pump_win.h
|
| +++ b/base/message_pump_win.h
|
| @@ -17,6 +17,7 @@
|
| #include "base/message_pump_observer.h"
|
| #include "base/observer_list.h"
|
| #include "base/time.h"
|
| +#include "base/win/message_window.h"
|
| #include "base/win/scoped_handle.h"
|
|
|
| namespace base {
|
| @@ -125,7 +126,9 @@ class BASE_EXPORT MessagePumpWin : public MessagePump {
|
| // an excellent choice. It is also helpful that the starter messages that are
|
| // placed in the queue when new task arrive also awakens DoRunLoop.
|
| //
|
| -class BASE_EXPORT MessagePumpForUI : public MessagePumpWin {
|
| +class BASE_EXPORT MessagePumpForUI
|
| + : public MessagePumpWin,
|
| + public win::MessageWindow::Delegate {
|
| public:
|
| // A MessageFilter implements the common Peek/Translate/Dispatch code to deal
|
| // with windows messages.
|
| @@ -166,8 +169,9 @@ class BASE_EXPORT MessagePumpForUI : public MessagePumpWin {
|
| void SetMessageFilter(scoped_ptr<MessageFilter> message_filter);
|
|
|
| // MessagePump methods:
|
| - virtual void ScheduleWork();
|
| - virtual void ScheduleDelayedWork(const TimeTicks& delayed_work_time);
|
| + virtual void ScheduleWork() OVERRIDE;
|
| + virtual void ScheduleDelayedWork(const TimeTicks& delayed_work_time) OVERRIDE;
|
| + virtual void WillDestroyCurrentMessageLoop() OVERRIDE;
|
|
|
| // Applications can call this to encourage us to process all pending WM_PAINT
|
| // messages. This method will process all paint messages the Windows Message
|
| @@ -175,12 +179,14 @@ class BASE_EXPORT MessagePumpForUI : public MessagePumpWin {
|
| void PumpOutPendingPaintMessages();
|
|
|
| private:
|
| - static LRESULT CALLBACK WndProcThunk(HWND window_handle,
|
| - UINT message,
|
| - WPARAM wparam,
|
| - LPARAM lparam);
|
| + // win::MessageWindow::Delegate interface.
|
| + virtual bool HandleMessage(HWND hwnd,
|
| + UINT message,
|
| + WPARAM wparam,
|
| + LPARAM lparam,
|
| + LRESULT* result) OVERRIDE;
|
| +
|
| virtual void DoRunLoop();
|
| - void InitMessageWnd();
|
| void WaitForWork();
|
| void HandleWorkMessage();
|
| void HandleTimerMessage();
|
| @@ -188,13 +194,13 @@ class BASE_EXPORT MessagePumpForUI : public MessagePumpWin {
|
| bool ProcessMessageHelper(const MSG& msg);
|
| bool ProcessPumpReplacementMessage();
|
|
|
| - // Instance of the module containing the window procedure.
|
| - HMODULE instance_;
|
| + scoped_ptr<MessageFilter> message_filter_;
|
|
|
| // A hidden message-only window.
|
| - HWND message_hwnd_;
|
| + scoped_ptr<win::MessageWindow> window_;
|
|
|
| - scoped_ptr<MessageFilter> message_filter_;
|
| + // Protects access to |window_|.
|
| + Lock window_lock_;
|
| };
|
|
|
| //-----------------------------------------------------------------------------
|
|
|