Skip to content

Commit 860d0bc

Browse files
committed
Another fix for Win XP crash introduced in 47.3 RC (Issue #180).
1 parent 7802ead commit 860d0bc

File tree

2 files changed

+20
-28
lines changed

2 files changed

+20
-28
lines changed

phpdesktop-chrome47/cef/browser_window.cpp

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ Fullscreen* BrowserWindow::GetFullscreenObject() {
122122
}
123123
void BrowserWindow::SetCefBrowser(CefRefPtr<CefBrowser> cefBrowser) {
124124
// Called from ClientHandler::OnAfterCreated().
125-
_ASSERT(!cefBrowser_.get());
126-
if (cefBrowser_.get()) {
125+
_ASSERT(!cefBrowser_);
126+
if (cefBrowser_) {
127127
LOG_ERROR << "BrowserWindow::SetCefBrowser() called, "
128128
<< "but it is already set";
129129
return;
@@ -214,23 +214,21 @@ void BrowserWindow::OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam) {
214214
}
215215
}
216216
void BrowserWindow::OnSize() {
217-
if (cefBrowser_.get()) {
218-
HWND browserHandle_ = cefBrowser_->GetHost()->GetWindowHandle();
219-
if (!browserHandle_) {
220-
return;
221-
}
217+
if (cefBrowser_) {
218+
HWND browserHandle = cefBrowser_->GetHost()->GetWindowHandle();
219+
_ASSERT(browserHandle);
222220
RECT rect;
223221
GetClientRect(windowHandle_, &rect);
224222
HDWP hdwp = BeginDeferWindowPos(2);
225-
hdwp = DeferWindowPos(hdwp, browserHandle_, NULL,
223+
hdwp = DeferWindowPos(hdwp, browserHandle, NULL,
226224
rect.left, rect.top,
227225
rect.right - rect.left,
228226
rect.bottom - rect.top,
229227
SWP_NOZORDER);
230228
EndDeferWindowPos(hdwp);
231229
} else {
232-
LOG_DEBUG << "BrowserWindow::OnSize() failed: "
233-
"CefBrowser object not created yet";
230+
LOG_DEBUG << "BrowserWindow::OnSize(): "
231+
"CefBrowser object not yet created";
234232
}
235233
}
236234
void BrowserWindow::SetTitleFromSettings() {
@@ -289,8 +287,8 @@ void BrowserWindow::SetIconFromSettings() {
289287
}
290288
bool BrowserWindow::SetFocus() {
291289
// Calling SetFocus() on shellBrowser handle does not work.
292-
if (cefBrowser_.get()) {
290+
if (cefBrowser_) {
293291
cefBrowser_->GetHost()->SetFocus(true);
294-
}
292+
}
295293
return true;
296294
}

phpdesktop-chrome47/main.cpp

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -85,22 +85,20 @@ LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,
8585
switch (uMsg) {
8686
case WM_SIZE:
8787
browser = GetBrowserWindow(hwnd);
88-
if (browser) {
88+
if (browser && browser->GetCefBrowser()) {
8989
browser->OnSize();
90-
} else {
91-
LOG_WARNING << "WindowProc(): event WM_SIZE: "
92-
"could not fetch BrowserWindow";
90+
} else if (!browser) {
91+
LOG_WARNING << "WindowProc() WM_SIZE: could not fetch BrowserWindow";
9392
}
9493
break;
9594
case WM_MOVE:
9695
case WM_MOVING:
9796
case WM_SIZING:
9897
browser = GetBrowserWindow(hwnd);
99-
if (browser) {
98+
if (browser && browser->GetCefBrowser()) {
10099
browser->GetCefBrowser()->GetHost()->NotifyMoveOrResizeStarted();
101-
} else {
102-
LOG_WARNING << "WindowProc(): event WM_MOVING/WM_MOVE/WM_SIZING: "
103-
"could not fetch BrowserWindow";
100+
} else if (!browser) {
101+
LOG_WARNING << "WindowProc() WM_MOVE: could not fetch BrowserWindow";
104102
}
105103
return 0;
106104
case WM_CREATE:
@@ -160,14 +158,10 @@ LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,
160158
case WM_ERASEBKGND:
161159
// Erase the background when the browser does not exist.
162160
browser = GetBrowserWindow(hwnd);
163-
if (browser && browser->GetCefBrowser().get()) {
164-
CefWindowHandle hwnd = \
165-
browser->GetCefBrowser()->GetHost()->GetWindowHandle();
166-
if (hwnd) {
167-
// Dont erase the background if the browser window has been loaded
168-
// (this avoids flashing)
169-
return 0;
170-
}
161+
if (browser && browser->GetCefBrowser()) {
162+
// Dont erase the background if the browser window has been loaded
163+
// (this avoids flashing)
164+
return 0;
171165
}
172166
break;
173167
case WM_PAINT:

0 commit comments

Comments
 (0)