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_; |
}; |
//----------------------------------------------------------------------------- |