summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordarin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-06 21:45:54 +0000
committerdarin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-06 21:45:54 +0000
commit3e5067f1c22a11f1a2da4d38e8c2815fc3b2fdaf (patch)
tree43d5ad1f2d417144752ee0410149204b6fc69996
parentb0bbef8e993290d45deb1c8486c38417d0c6d496 (diff)
downloadchromium_src-3e5067f1c22a11f1a2da4d38e8c2815fc3b2fdaf.zip
chromium_src-3e5067f1c22a11f1a2da4d38e8c2815fc3b2fdaf.tar.gz
chromium_src-3e5067f1c22a11f1a2da4d38e8c2815fc3b2fdaf.tar.bz2
Apparently, our WndProc can get called for other HWNDs :(
TBR=brettw git-svn-id: svn://svn.chromium.org/chrome/trunk/src@461 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--base/message_loop.cc32
1 files changed, 17 insertions, 15 deletions
diff --git a/base/message_loop.cc b/base/message_loop.cc
index 37b6f36..14fa5d9 100644
--- a/base/message_loop.cc
+++ b/base/message_loop.cc
@@ -396,23 +396,25 @@ LRESULT CALLBACK MessageLoop::WndProcThunk(
LRESULT MessageLoop::WndProc(
HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) {
- DCHECK(hwnd == message_hwnd_);
- switch (message) {
- case kMsgPumpATask: {
- ProcessPumpReplacementMessage(); // Avoid starving paint and timer.
- if (!nestable_tasks_allowed_)
+ if (hwnd == message_hwnd_) {
+ switch (message) {
+ case kMsgPumpATask: {
+ ProcessPumpReplacementMessage(); // Avoid starving paint and timer.
+ if (!nestable_tasks_allowed_)
+ return 0;
+ PumpATaskDuringWndProc();
return 0;
- PumpATaskDuringWndProc();
- return 0;
- }
+ }
- case kMsgQuit: {
- // TODO(jar): bug 1300541 The following assert should be used, but
- // currently too much code actually triggers the assert, especially in
- // tests :-(.
- //CHECK(!quit_received_); // Discarding a second quit will cause a hang.
- quit_received_ = true;
- return 0;
+ case kMsgQuit: {
+ // TODO(jar): bug 1300541 The following assert should be used, but
+ // currently too much code actually triggers the assert, especially in
+ // tests :-(.
+ // Discarding a second quit will cause a hang.
+ //CHECK(!quit_received_);
+ quit_received_ = true;
+ return 0;
+ }
}
}
return ::DefWindowProc(hwnd, message, wparam, lparam);