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

Side by Side Diff: ui/platform_window/win/win_window.cc

Issue 1139673003: Make Mandoline shut down cleanly. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix crash in surfaces if surfaceimpl outlives the app, and a double delete in browser Created 5 years, 7 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "ui/platform_window/win/win_window.h" 5 #include "ui/platform_window/win/win_window.h"
6 6
7 #include "base/profiler/scoped_tracker.h" 7 #include "base/profiler/scoped_tracker.h"
8 #include "ui/events/event.h" 8 #include "ui/events/event.h"
9 #include "ui/events/event_utils.h" 9 #include "ui/events/event_utils.h"
10 #include "ui/gfx/win/msg_util.h" 10 #include "ui/gfx/win/msg_util.h"
(...skipping 20 matching lines...) Expand all
31 wr.right - wr.left, wr.bottom - wr.top); 31 wr.right - wr.left, wr.bottom - wr.top);
32 window_bounds.set_x(std::max(0, window_bounds.x())); 32 window_bounds.set_x(std::max(0, window_bounds.x()));
33 window_bounds.set_y(std::max(0, window_bounds.y())); 33 window_bounds.set_y(std::max(0, window_bounds.y()));
34 return window_bounds; 34 return window_bounds;
35 } 35 }
36 36
37 } // namespace 37 } // namespace
38 38
39 WinWindow::WinWindow(PlatformWindowDelegate* delegate, 39 WinWindow::WinWindow(PlatformWindowDelegate* delegate,
40 const gfx::Rect& bounds) 40 const gfx::Rect& bounds)
41 : delegate_(delegate) { 41 : delegate_(delegate), destroyed_(false) {
42 CHECK(delegate_); 42 CHECK(delegate_);
43 if (use_popup_as_root_window_for_test) 43 if (use_popup_as_root_window_for_test)
44 set_window_style(WS_POPUP); 44 set_window_style(WS_POPUP);
45 gfx::Rect window_bounds = GetWindowBoundsForClientBounds( 45 gfx::Rect window_bounds = GetWindowBoundsForClientBounds(
46 WS_OVERLAPPEDWINDOW, window_ex_style(), bounds); 46 WS_OVERLAPPEDWINDOW, window_ex_style(), bounds);
47 gfx::WindowImpl::Init(NULL, window_bounds); 47 gfx::WindowImpl::Init(NULL, window_bounds);
48 SetWindowText(hwnd(), L"WinWindow"); 48 SetWindowText(hwnd(), L"WinWindow");
49 } 49 }
50 50
51 WinWindow::~WinWindow() { 51 WinWindow::~WinWindow() {
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 LRESULT WinWindow::OnCreate(CREATESTRUCT* create_struct) { 170 LRESULT WinWindow::OnCreate(CREATESTRUCT* create_struct) {
171 // TODO(vadimt): Remove ScopedTracker below once crbug.com/440919 is fixed. 171 // TODO(vadimt): Remove ScopedTracker below once crbug.com/440919 is fixed.
172 tracked_objects::ScopedTracker tracking_profile( 172 tracked_objects::ScopedTracker tracking_profile(
173 FROM_HERE_WITH_EXPLICIT_FUNCTION("440919 WinWindow::OnCreate")); 173 FROM_HERE_WITH_EXPLICIT_FUNCTION("440919 WinWindow::OnCreate"));
174 174
175 delegate_->OnAcceleratedWidgetAvailable(hwnd()); 175 delegate_->OnAcceleratedWidgetAvailable(hwnd());
176 return 0; 176 return 0;
177 } 177 }
178 178
179 void WinWindow::OnDestroy() { 179 void WinWindow::OnDestroy() {
180 if (destroyed_)
Ben Goodger (Google) 2015/05/13 20:21:07 Instead we should make ~WinWindow not call Destroy
jam 2015/05/14 14:42:48 Done.
181 return;
182
183 destroyed_ = true;
184
180 // TODO(vadimt): Remove ScopedTracker below once crbug.com/440919 is fixed. 185 // TODO(vadimt): Remove ScopedTracker below once crbug.com/440919 is fixed.
181 tracked_objects::ScopedTracker tracking_profile( 186 tracked_objects::ScopedTracker tracking_profile(
182 FROM_HERE_WITH_EXPLICIT_FUNCTION("440919 WinWindow::OnDestroy")); 187 FROM_HERE_WITH_EXPLICIT_FUNCTION("440919 WinWindow::OnDestroy"));
183 188
184 delegate_->OnClosed(); 189 delegate_->OnClosed();
185 } 190 }
186 191
187 void WinWindow::OnPaint(HDC) { 192 void WinWindow::OnPaint(HDC) {
188 // TODO(vadimt): Remove ScopedTracker below once crbug.com/440919 is fixed. 193 // TODO(vadimt): Remove ScopedTracker below once crbug.com/440919 is fixed.
189 tracked_objects::ScopedTracker tracking_profile( 194 tracked_objects::ScopedTracker tracking_profile(
(...skipping 24 matching lines...) Expand all
214 219
215 namespace test { 220 namespace test {
216 221
217 // static 222 // static
218 void SetUsePopupAsRootWindowForTest(bool use) { 223 void SetUsePopupAsRootWindowForTest(bool use) {
219 use_popup_as_root_window_for_test = use; 224 use_popup_as_root_window_for_test = use;
220 } 225 }
221 226
222 } // namespace test 227 } // namespace test
223 } // namespace ui 228 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698