Chromium Code Reviews| Index: ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc |
| diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc |
| index f58bbaa325928ec4f84b24ed524aa1059a694ea3..a20d68ce9621169379f16d58f7ea1231844f4c2f 100644 |
| --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc |
| +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc |
| @@ -304,35 +304,35 @@ gfx::Rect DesktopWindowTreeHostWin::GetWorkAreaBoundsInScreen() const { |
| return display::win::ScreenWin::ScreenToDIPRect(GetHWND(), pixel_bounds); |
| } |
| -void DesktopWindowTreeHostWin::SetShape(SkRegion* native_region) { |
| - if (native_region) { |
| - // TODO(wez): This would be a lot simpler if we were passed an SkPath. |
| - // See crbug.com/410593. |
| - SkRegion* shape = native_region; |
| - SkRegion device_region; |
| - if (display::win::GetDPIScale() > 1.0) { |
| - shape = &device_region; |
| - const float& scale = display::win::GetDPIScale(); |
| - std::vector<SkIRect> rects; |
| - for (SkRegion::Iterator it(*native_region); !it.done(); it.next()) { |
| - const SkIRect& rect = it.rect(); |
| - SkRect scaled_rect = |
| - SkRect::MakeLTRB(rect.left() * scale, rect.top() * scale, |
| - rect.right() * scale, rect.bottom() * scale); |
| - SkIRect rounded_scaled_rect; |
| - scaled_rect.roundOut(&rounded_scaled_rect); |
| - rects.push_back(rounded_scaled_rect); |
| - } |
| - if (!rects.empty()) |
| - device_region.setRects(&rects[0], rects.size()); |
| - } |
| +void DesktopWindowTreeHostWin::SetShape( |
| + std::unique_ptr<SkRegion> native_region) { |
| + if (!native_region) { |
| + message_handler_->SetRegion(nullptr); |
| + return; |
| + } |
| - message_handler_->SetRegion(gfx::CreateHRGNFromSkRegion(*shape)); |
| - } else { |
| - message_handler_->SetRegion(NULL); |
| + // TODO(wez): This would be a lot simpler if we were passed an SkPath. |
| + // See crbug.com/410593. |
| + SkRegion* shape = native_region.get(); |
| + SkRegion device_region; |
| + if (display::win::GetDPIScale() > 1.0) { |
| + shape = &device_region; |
| + const float& scale = display::win::GetDPIScale(); |
|
sadrul
2016/07/23 00:59:16
weird to use a ref here.
Lei Zhang
2016/07/25 17:57:00
Indeed. It's copy + paste... and fixed.
|
| + std::vector<SkIRect> rects; |
| + for (SkRegion::Iterator it(*native_region); !it.done(); it.next()) { |
| + const SkIRect& rect = it.rect(); |
| + SkRect scaled_rect = |
| + SkRect::MakeLTRB(rect.left() * scale, rect.top() * scale, |
| + rect.right() * scale, rect.bottom() * scale); |
| + SkIRect rounded_scaled_rect; |
| + scaled_rect.roundOut(&rounded_scaled_rect); |
| + rects.push_back(rounded_scaled_rect); |
| + } |
| + if (!rects.empty()) |
| + device_region.setRects(&rects[0], rects.size()); |
| } |
| - delete native_region; |
| + message_handler_->SetRegion(gfx::CreateHRGNFromSkRegion(*shape)); |
| } |
| void DesktopWindowTreeHostWin::Activate() { |