| Index: ui/views/win/hwnd_message_handler.cc
|
| diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
|
| index 0312549e2aae88dd43c2c2ff5c6bdf67561b5610..a90a55cfe5077daf08ca6697aade78b389537108 100644
|
| --- a/ui/views/win/hwnd_message_handler.cc
|
| +++ b/ui/views/win/hwnd_message_handler.cc
|
| @@ -8,7 +8,7 @@
|
| #include <shellapi.h>
|
|
|
| #include "base/bind.h"
|
| -#include "base/system_monitor/system_monitor.h"
|
| +#include "base/power_monitor/power_monitor.h"
|
| #include "base/win/windows_version.h"
|
| #include "ui/base/events/event.h"
|
| #include "ui/base/keycodes/keyboard_code_conversion_win.h"
|
| @@ -39,6 +39,10 @@
|
| namespace views {
|
| namespace {
|
|
|
| +// Used to signal the power event when receiving Windows power broadcast
|
| +// message.
|
| +base::PowerMonitor::Signaler* g_power_signaler = NULL;
|
| +
|
| // MoveLoopMouseWatcher is used to determine if the user canceled or completed a
|
| // move. win32 doesn't appear to offer a way to determine the result of a move,
|
| // so we install hooks to determine if we got a mouse up and assume the move
|
| @@ -384,6 +388,8 @@ HWNDMessageHandler::HWNDMessageHandler(HWNDMessageHandlerDelegate* delegate)
|
| layered_alpha_(255),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(paint_layered_window_factory_(this)),
|
| can_update_layered_window_(true) {
|
| + if (g_power_signaler == NULL && base::PowerMonitor::Get())
|
| + g_power_signaler = base::PowerMonitor::Get()->GetSignalerOnce();
|
| }
|
|
|
| HWNDMessageHandler::~HWNDMessageHandler() {
|
| @@ -393,6 +399,8 @@ HWNDMessageHandler::~HWNDMessageHandler() {
|
| // Prevent calls back into this class via WNDPROC now that we've been
|
| // destroyed.
|
| ClearUserData();
|
| + delete g_power_signaler;
|
| + g_power_signaler = NULL;
|
| }
|
|
|
| void HWNDMessageHandler::Init(HWND parent, const gfx::Rect& bounds) {
|
| @@ -1846,9 +1854,11 @@ void HWNDMessageHandler::OnPaint(HDC dc) {
|
| }
|
|
|
| LRESULT HWNDMessageHandler::OnPowerBroadcast(DWORD power_event, DWORD data) {
|
| - base::SystemMonitor* monitor = base::SystemMonitor::Get();
|
| - if (monitor)
|
| - monitor->ProcessWmPowerBroadcastMessage(power_event);
|
| + if (base::PowerMonitor::Get()) {
|
| + CHECK(g_power_signaler);
|
| + g_power_signaler->ProcessWmPowerBroadcastMessage(power_event);
|
| + }
|
| +
|
| SetMsgHandled(FALSE);
|
| return 0;
|
| }
|
|
|