OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "views/widget/native_widget_win.h" | 5 #include "views/widget/native_widget_win.h" |
6 | 6 |
7 #include <dwmapi.h> | 7 #include <dwmapi.h> |
8 #include <shellapi.h> | 8 #include <shellapi.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 2285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2296 RDW_INVALIDATE | RDW_UPDATENOW | RDW_NOCHILDREN); | 2296 RDW_INVALIDATE | RDW_UPDATENOW | RDW_NOCHILDREN); |
2297 } | 2297 } |
2298 } | 2298 } |
2299 } | 2299 } |
2300 | 2300 |
2301 void NativeWidgetWin::RedrawLayeredWindowContents() { | 2301 void NativeWidgetWin::RedrawLayeredWindowContents() { |
2302 if (invalid_rect_.IsEmpty()) | 2302 if (invalid_rect_.IsEmpty()) |
2303 return; | 2303 return; |
2304 | 2304 |
2305 // We need to clip to the dirty rect ourselves. | 2305 // We need to clip to the dirty rect ourselves. |
2306 layered_window_contents_->save(SkCanvas::kClip_SaveFlag); | 2306 layered_window_contents_->sk_canvas()->save(SkCanvas::kClip_SaveFlag); |
2307 layered_window_contents_->ClipRectInt(invalid_rect_.x(), | 2307 layered_window_contents_->ClipRectInt(invalid_rect_.x(), |
2308 invalid_rect_.y(), | 2308 invalid_rect_.y(), |
2309 invalid_rect_.width(), | 2309 invalid_rect_.width(), |
2310 invalid_rect_.height()); | 2310 invalid_rect_.height()); |
2311 GetWidget()->GetRootView()->Paint(layered_window_contents_.get()); | 2311 GetWidget()->GetRootView()->Paint(layered_window_contents_.get()); |
2312 layered_window_contents_->restore(); | 2312 layered_window_contents_->sk_canvas()->restore(); |
2313 | 2313 |
2314 RECT wr; | 2314 RECT wr; |
2315 GetWindowRect(&wr); | 2315 GetWindowRect(&wr); |
2316 SIZE size = {wr.right - wr.left, wr.bottom - wr.top}; | 2316 SIZE size = {wr.right - wr.left, wr.bottom - wr.top}; |
2317 POINT position = {wr.left, wr.top}; | 2317 POINT position = {wr.left, wr.top}; |
2318 HDC dib_dc = skia::BeginPlatformPaint(layered_window_contents_.get()); | 2318 HDC dib_dc = skia::BeginPlatformPaint(layered_window_contents_->sk_canvas()); |
2319 POINT zero = {0, 0}; | 2319 POINT zero = {0, 0}; |
2320 BLENDFUNCTION blend = {AC_SRC_OVER, 0, layered_alpha_, AC_SRC_ALPHA}; | 2320 BLENDFUNCTION blend = {AC_SRC_OVER, 0, layered_alpha_, AC_SRC_ALPHA}; |
2321 UpdateLayeredWindow(hwnd(), NULL, &position, &size, dib_dc, &zero, | 2321 UpdateLayeredWindow(hwnd(), NULL, &position, &size, dib_dc, &zero, |
2322 RGB(0xFF, 0xFF, 0xFF), &blend, ULW_ALPHA); | 2322 RGB(0xFF, 0xFF, 0xFF), &blend, ULW_ALPHA); |
2323 invalid_rect_.SetRect(0, 0, 0, 0); | 2323 invalid_rect_.SetRect(0, 0, 0, 0); |
2324 skia::EndPlatformPaint(layered_window_contents_.get()); | 2324 skia::EndPlatformPaint(layered_window_contents_->sk_canvas()); |
2325 } | 2325 } |
2326 | 2326 |
2327 void NativeWidgetWin::LockUpdates() { | 2327 void NativeWidgetWin::LockUpdates() { |
2328 // We skip locked updates when Aero is on for two reasons: | 2328 // We skip locked updates when Aero is on for two reasons: |
2329 // 1. Because it isn't necessary | 2329 // 1. Because it isn't necessary |
2330 // 2. Because toggling the WS_VISIBLE flag may occur while the GPU process is | 2330 // 2. Because toggling the WS_VISIBLE flag may occur while the GPU process is |
2331 // attempting to present a child window's backbuffer onscreen. When these | 2331 // attempting to present a child window's backbuffer onscreen. When these |
2332 // two actions race with one another, the child window will either flicker | 2332 // two actions race with one another, the child window will either flicker |
2333 // or will simply stop updating entirely. | 2333 // or will simply stop updating entirely. |
2334 if (!IsAeroGlassEnabled() && ++lock_updates_count_ == 1) { | 2334 if (!IsAeroGlassEnabled() && ++lock_updates_count_ == 1) { |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2607 return (GetKeyState(VK_LBUTTON) & 0x80) || | 2607 return (GetKeyState(VK_LBUTTON) & 0x80) || |
2608 (GetKeyState(VK_RBUTTON) & 0x80) || | 2608 (GetKeyState(VK_RBUTTON) & 0x80) || |
2609 (GetKeyState(VK_MBUTTON) & 0x80) || | 2609 (GetKeyState(VK_MBUTTON) & 0x80) || |
2610 (GetKeyState(VK_XBUTTON1) & 0x80) || | 2610 (GetKeyState(VK_XBUTTON1) & 0x80) || |
2611 (GetKeyState(VK_XBUTTON2) & 0x80); | 2611 (GetKeyState(VK_XBUTTON2) & 0x80); |
2612 } | 2612 } |
2613 | 2613 |
2614 } // namespace internal | 2614 } // namespace internal |
2615 | 2615 |
2616 } // namespace views | 2616 } // namespace views |
OLD | NEW |