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

Side by Side Diff: chrome/browser/process_singleton_win.cc

Issue 10542151: Move the window destruction and registration out of cleanup and into BrowserProcessImpl::EndSession… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 6 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/process_singleton.h" 5 #include "chrome/browser/process_singleton.h"
6 6
7 #include "base/base_paths.h" 7 #include "base/base_paths.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 DCHECK(!remote_window_); 295 DCHECK(!remote_window_);
296 DCHECK(notification_callback_.is_null()); 296 DCHECK(notification_callback_.is_null());
297 297
298 if (window_ != NULL) 298 if (window_ != NULL)
299 notification_callback_ = notification_callback; 299 notification_callback_ = notification_callback;
300 300
301 return window_ != NULL; 301 return window_ != NULL;
302 } 302 }
303 303
304 void ProcessSingleton::Cleanup() { 304 void ProcessSingleton::Cleanup() {
305 }
306
307 void ProcessSingleton::UnregisterWindowClass() {
305 // Window classes registered by DLLs are not cleaned up automatically on 308 // Window classes registered by DLLs are not cleaned up automatically on
306 // process exit, so we must unregister at the earliest chance possible. 309 // process exit, so we must unregister at the earliest chance possible.
307 // During the fast shutdown sequence, ProcessSingleton::Cleanup() is
308 // called if our process was the first to start. Therefore we try cleaning
309 // up here, and again in the destructor if needed to catch as many cases
310 // as possible.
311 if (window_) { 310 if (window_) {
312 ::DestroyWindow(window_); 311 ::DestroyWindow(window_);
313 ::UnregisterClass(chrome::kMessageWindowClass, 312 ::UnregisterClass(chrome::kMessageWindowClass,
314 base::GetModuleFromAddress(&ThunkWndProc)); 313 base::GetModuleFromAddress(&ThunkWndProc));
315 window_ = NULL; 314 window_ = NULL;
316 } 315 }
317 } 316 }
318 317
319 LRESULT ProcessSingleton::OnCopyData(HWND hwnd, const COPYDATASTRUCT* cds) { 318 LRESULT ProcessSingleton::OnCopyData(HWND hwnd, const COPYDATASTRUCT* cds) {
320 // If locked, it means we are not ready to process this message because 319 // If locked, it means we are not ready to process this message because
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 switch (message) { 351 switch (message) {
353 case WM_COPYDATA: 352 case WM_COPYDATA:
354 return OnCopyData(reinterpret_cast<HWND>(wparam), 353 return OnCopyData(reinterpret_cast<HWND>(wparam),
355 reinterpret_cast<COPYDATASTRUCT*>(lparam)); 354 reinterpret_cast<COPYDATASTRUCT*>(lparam));
356 default: 355 default:
357 break; 356 break;
358 } 357 }
359 358
360 return ::DefWindowProc(hwnd, message, wparam, lparam); 359 return ::DefWindowProc(hwnd, message, wparam, lparam);
361 } 360 }
OLDNEW
« chrome/browser/browser_process_impl.cc ('K') | « chrome/browser/process_singleton.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698