| 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..953349dc24deb1250858b363d792f186e8118a55 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();
|
| + 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() {
|
|
|