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

Unified Diff: base/message_loop/message_pump_win.cc

Issue 2457393005: Remove USER32 Function Pointer Loading from MessagePumpWin (Closed)
Patch Set: Created 4 years, 1 month 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/message_loop/message_pump_win.cc
diff --git a/base/message_loop/message_pump_win.cc b/base/message_loop/message_pump_win.cc
index d04827ebfb504b7db61f085d50ec07e646f52951..1e518d8214d0ce155af596253edd2592cee10530 100644
--- a/base/message_loop/message_pump_win.cc
+++ b/base/message_loop/message_pump_win.cc
@@ -29,85 +29,6 @@ enum MessageLoopProblems {
MESSAGE_LOOP_PROBLEM_MAX,
};
-// The following define pointers to user32 API's for the API's which are used
-// in this file. These are added to avoid directly depending on user32 from
-// base as there are users of base who don't want this.
-decltype(::TranslateMessage)* g_translate_message = nullptr;
-decltype(::DispatchMessageW)* g_dispatch_message = nullptr;
-decltype(::PeekMessageW)* g_peek_message = nullptr;
-decltype(::PostMessageW)* g_post_message = nullptr;
-decltype(::DefWindowProcW)* g_def_window_proc = nullptr;
-decltype(::PostQuitMessage)* g_post_quit = nullptr;
-decltype(::UnregisterClassW)* g_unregister_class = nullptr;
-decltype(::RegisterClassExW)* g_register_class = nullptr;
-decltype(::CreateWindowExW)* g_create_window_ex = nullptr;
-decltype(::DestroyWindow)* g_destroy_window = nullptr;
-decltype(::CallMsgFilterW)* g_call_msg_filter = nullptr;
-decltype(::GetQueueStatus)* g_get_queue_status = nullptr;
-decltype(::MsgWaitForMultipleObjectsEx)* g_msg_wait_for_multiple_objects_ex =
- nullptr;
-decltype(::SetTimer)* g_set_timer = nullptr;
-decltype(::KillTimer)* g_kill_timer = nullptr;
-
-#define GET_USER32_API(module, name) \
- reinterpret_cast<decltype(name)*>(::GetProcAddress(module, #name))
-
-// Initializes the global pointers to user32 APIs for the API's used in this
-// file.
-void InitUser32APIs() {
- if (g_translate_message)
- return;
-
- HMODULE user32_module = ::GetModuleHandle(L"user32.dll");
- CHECK(user32_module);
-
- g_translate_message = GET_USER32_API(user32_module, TranslateMessage);
- CHECK(g_translate_message);
-
- g_dispatch_message = GET_USER32_API(user32_module, DispatchMessageW);
- CHECK(g_dispatch_message);
-
- g_peek_message = GET_USER32_API(user32_module, PeekMessageW);
- CHECK(g_peek_message);
-
- g_post_message = GET_USER32_API(user32_module, PostMessageW);
- CHECK(g_post_message);
-
- g_def_window_proc = GET_USER32_API(user32_module, DefWindowProcW);
- CHECK(g_def_window_proc);
-
- g_post_quit = GET_USER32_API(user32_module, PostQuitMessage);
- CHECK(g_post_quit);
-
- g_unregister_class = GET_USER32_API(user32_module, UnregisterClassW);
- CHECK(g_unregister_class);
-
- g_register_class = GET_USER32_API(user32_module, RegisterClassExW);
- CHECK(g_register_class);
-
- g_create_window_ex = GET_USER32_API(user32_module, CreateWindowExW);
- CHECK(g_create_window_ex);
-
- g_destroy_window = GET_USER32_API(user32_module, DestroyWindow);
- CHECK(g_destroy_window);
-
- g_call_msg_filter = GET_USER32_API(user32_module, CallMsgFilterW);
- CHECK(g_call_msg_filter);
-
- g_get_queue_status = GET_USER32_API(user32_module, GetQueueStatus);
- CHECK(g_get_queue_status);
-
- g_msg_wait_for_multiple_objects_ex =
- GET_USER32_API(user32_module, MsgWaitForMultipleObjectsEx);
- CHECK(g_msg_wait_for_multiple_objects_ex);
-
- g_set_timer = GET_USER32_API(user32_module, SetTimer);
- CHECK(g_set_timer);
-
- g_kill_timer = GET_USER32_API(user32_module, KillTimer);
- CHECK(g_kill_timer);
-}
-
} // namespace
static const wchar_t kWndClassFormat[] = L"Chrome_MessagePumpWindow_%p";
@@ -175,13 +96,12 @@ int MessagePumpWin::GetCurrentDelay() const {
MessagePumpForUI::MessagePumpForUI()
: atom_(0) {
- InitUser32APIs();
InitMessageWnd();
}
MessagePumpForUI::~MessagePumpForUI() {
- g_destroy_window(message_hwnd_);
- g_unregister_class(MAKEINTATOM(atom_), CURRENT_MODULE());
+ DestroyWindow(message_hwnd_);
+ UnregisterClass(MAKEINTATOM(atom_), CURRENT_MODULE());
}
void MessagePumpForUI::ScheduleWork() {
@@ -189,8 +109,8 @@ void MessagePumpForUI::ScheduleWork() {
return; // Someone else continued the pumping.
// Make sure the MessagePump does some work for us.
- BOOL ret = g_post_message(message_hwnd_, kMsgHaveWork,
- reinterpret_cast<WPARAM>(this), 0);
+ BOOL ret = PostMessage(message_hwnd_, kMsgHaveWork,
+ reinterpret_cast<WPARAM>(this), 0);
if (ret)
return; // There was room in the Window Message queue.
@@ -230,7 +150,7 @@ LRESULT CALLBACK MessagePumpForUI::WndProcThunk(
reinterpret_cast<MessagePumpForUI*>(wparam)->HandleTimerMessage();
break;
}
- return g_def_window_proc(hwnd, message, wparam, lparam);
+ return DefWindowProc(hwnd, message, wparam, lparam);
}
void MessagePumpForUI::DoRunLoop() {
@@ -271,7 +191,7 @@ void MessagePumpForUI::DoRunLoop() {
// don't want to disturb that timer if it is already in flight. However,
// if we did do all remaining delayed work, then lets kill the WM_TIMER.
if (more_work_is_plausible && delayed_work_time_.is_null())
- g_kill_timer(message_hwnd_, reinterpret_cast<UINT_PTR>(this));
+ KillTimer(message_hwnd_, reinterpret_cast<UINT_PTR>(this));
if (state_->should_quit)
break;
@@ -299,11 +219,11 @@ void MessagePumpForUI::InitMessageWnd() {
wc.lpfnWndProc = base::win::WrappedWindowProc<WndProcThunk>;
wc.hInstance = instance;
wc.lpszClassName = class_name.c_str();
- atom_ = g_register_class(&wc);
+ atom_ = RegisterClassEx(&wc);
DCHECK(atom_);
- message_hwnd_ = g_create_window_ex(0, MAKEINTATOM(atom_), 0, 0, 0, 0, 0, 0,
- HWND_MESSAGE, 0, instance, 0);
+ message_hwnd_ = CreateWindowEx(0, MAKEINTATOM(atom_), 0, 0, 0, 0, 0, 0,
+ HWND_MESSAGE, 0, instance, 0);
DCHECK(message_hwnd_);
}
@@ -317,8 +237,8 @@ void MessagePumpForUI::WaitForWork() {
if (delay < 0) // Negative value means no timers waiting.
delay = INFINITE;
- DWORD result = g_msg_wait_for_multiple_objects_ex(0, nullptr, delay,
- QS_ALLINPUT, wait_flags);
+ DWORD result = MsgWaitForMultipleObjectsEx(0, nullptr, delay, QS_ALLINPUT,
+ wait_flags);
if (WAIT_OBJECT_0 == result) {
// A WM_* message is available.
@@ -336,9 +256,9 @@ void MessagePumpForUI::WaitForWork() {
// current thread.
MSG msg = {0};
bool has_pending_sent_message =
- (HIWORD(g_get_queue_status(QS_SENDMESSAGE)) & QS_SENDMESSAGE) != 0;
+ (HIWORD(GetQueueStatus(QS_SENDMESSAGE)) & QS_SENDMESSAGE) != 0;
if (has_pending_sent_message ||
- g_peek_message(&msg, nullptr, 0, 0, PM_NOREMOVE)) {
+ PeekMessage(&msg, nullptr, 0, 0, PM_NOREMOVE)) {
return;
}
@@ -376,7 +296,7 @@ void MessagePumpForUI::HandleWorkMessage() {
}
void MessagePumpForUI::HandleTimerMessage() {
- g_kill_timer(message_hwnd_, reinterpret_cast<UINT_PTR>(this));
+ KillTimer(message_hwnd_, reinterpret_cast<UINT_PTR>(this));
// If we are being called outside of the context of Run, then don't do
// anything. This could correspond to a MessageBox call or something of
@@ -421,8 +341,8 @@ void MessagePumpForUI::RescheduleTimer() {
// Create a WM_TIMER event that will wake us up to check for any pending
// timers (in case we are running within a nested, external sub-pump).
- BOOL ret = g_set_timer(message_hwnd_, reinterpret_cast<UINT_PTR>(this),
- delay_msec, nullptr);
+ BOOL ret = SetTimer(message_hwnd_, reinterpret_cast<UINT_PTR>(this),
+ delay_msec, nullptr);
if (ret)
return;
// If we can't set timers, we are in big trouble... but cross our fingers
@@ -439,12 +359,12 @@ bool MessagePumpForUI::ProcessNextWindowsMessage() {
// case to ensure that the message loop peeks again instead of calling
// MsgWaitForMultipleObjectsEx again.
bool sent_messages_in_queue = false;
- DWORD queue_status = g_get_queue_status(QS_SENDMESSAGE);
+ DWORD queue_status = GetQueueStatus(QS_SENDMESSAGE);
if (HIWORD(queue_status) & QS_SENDMESSAGE)
sent_messages_in_queue = true;
MSG msg;
- if (g_peek_message(&msg, nullptr, 0, 0, PM_REMOVE) != FALSE)
+ if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE) != FALSE)
return ProcessMessageHelper(msg);
return sent_messages_in_queue;
@@ -460,7 +380,7 @@ bool MessagePumpForUI::ProcessMessageHelper(const MSG& msg) {
// Repost the QUIT message so that it will be retrieved by the primary
// GetMessage() loop.
state_->should_quit = true;
- g_post_quit(static_cast<int>(msg.wParam));
+ PostQuitMessage(static_cast<int>(msg.wParam));
return false;
}
@@ -468,11 +388,11 @@ bool MessagePumpForUI::ProcessMessageHelper(const MSG& msg) {
if (msg.message == kMsgHaveWork && msg.hwnd == message_hwnd_)
return ProcessPumpReplacementMessage();
- if (g_call_msg_filter(const_cast<MSG*>(&msg), kMessageFilterCode))
+ if (CallMsgFilter(const_cast<MSG*>(&msg), kMessageFilterCode))
return true;
- g_translate_message(&msg);
- g_dispatch_message(&msg);
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
return true;
}
@@ -489,7 +409,7 @@ bool MessagePumpForUI::ProcessPumpReplacementMessage() {
MSG msg;
const bool have_message =
- g_peek_message(&msg, nullptr, 0, 0, PM_REMOVE) != FALSE;
+ PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE) != FALSE;
// Expect no message or a message different than kMsgHaveWork.
DCHECK(!have_message || kMsgHaveWork != msg.message ||
@@ -516,7 +436,6 @@ bool MessagePumpForUI::ProcessPumpReplacementMessage() {
MessagePumpForGpu::MessagePumpForGpu() {
event_.Set(CreateEvent(nullptr, FALSE, FALSE, nullptr));
- InitUser32APIs();
}
MessagePumpForGpu::~MessagePumpForGpu() {}
@@ -620,7 +539,7 @@ void MessagePumpForGpu::WaitForWork() {
HANDLE handle = event_.Get();
DWORD result =
- g_msg_wait_for_multiple_objects_ex(1, &handle, delay, QS_ALLINPUT, 0);
+ MsgWaitForMultipleObjectsEx(1, &handle, delay, QS_ALLINPUT, 0);
DCHECK_NE(WAIT_FAILED, result) << GetLastError();
if (result != WAIT_TIMEOUT) {
// Either work or message available.
@@ -631,7 +550,7 @@ void MessagePumpForGpu::WaitForWork() {
bool MessagePumpForGpu::ProcessNextMessage() {
MSG msg;
- if (!g_peek_message(&msg, nullptr, 0, 0, PM_REMOVE))
+ if (!PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
return false;
if (msg.message == WM_QUIT) {
@@ -643,9 +562,9 @@ bool MessagePumpForGpu::ProcessNextMessage() {
return true;
}
- if (!g_call_msg_filter(const_cast<MSG*>(&msg), kMessageFilterCode)) {
- g_translate_message(&msg);
- g_dispatch_message(&msg);
+ if (!CallMsgFilter(const_cast<MSG*>(&msg), kMessageFilterCode)) {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
}
return true;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698