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

Side by Side Diff: webrtc/modules/desktop_capture/win/cursor.cc

Issue 1743203002: Replace scoped_ptr with unique_ptr in webrtc/modules/desktop_capture/ (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: More Windows reverts Created 4 years, 9 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 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/modules/desktop_capture/win/cursor.h" 11 #include "webrtc/modules/desktop_capture/win/cursor.h"
12 12
13 #include <algorithm> 13 #include <algorithm>
14 #include <memory>
14 15
15 #include "webrtc/base/scoped_ptr.h"
16 #include "webrtc/modules/desktop_capture/win/scoped_gdi_object.h" 16 #include "webrtc/modules/desktop_capture/win/scoped_gdi_object.h"
17 #include "webrtc/modules/desktop_capture/desktop_frame.h" 17 #include "webrtc/modules/desktop_capture/desktop_frame.h"
18 #include "webrtc/modules/desktop_capture/desktop_geometry.h" 18 #include "webrtc/modules/desktop_capture/desktop_geometry.h"
19 #include "webrtc/modules/desktop_capture/mouse_cursor.h" 19 #include "webrtc/modules/desktop_capture/mouse_cursor.h"
20 #include "webrtc/system_wrappers/include/logging.h" 20 #include "webrtc/system_wrappers/include/logging.h"
21 #include "webrtc/typedefs.h" 21 #include "webrtc/typedefs.h"
22 22
23 namespace webrtc { 23 namespace webrtc {
24 24
25 namespace { 25 namespace {
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 // Get |scoped_mask| dimensions. 128 // Get |scoped_mask| dimensions.
129 BITMAP bitmap_info; 129 BITMAP bitmap_info;
130 if (!GetObject(scoped_mask, sizeof(bitmap_info), &bitmap_info)) { 130 if (!GetObject(scoped_mask, sizeof(bitmap_info), &bitmap_info)) {
131 LOG_F(LS_ERROR) << "Unable to get bitmap info. Error = " 131 LOG_F(LS_ERROR) << "Unable to get bitmap info. Error = "
132 << GetLastError(); 132 << GetLastError();
133 return NULL; 133 return NULL;
134 } 134 }
135 135
136 int width = bitmap_info.bmWidth; 136 int width = bitmap_info.bmWidth;
137 int height = bitmap_info.bmHeight; 137 int height = bitmap_info.bmHeight;
138 rtc::scoped_ptr<uint32_t[]> mask_data(new uint32_t[width * height]); 138 std::unique_ptr<uint32_t[]> mask_data(new uint32_t[width * height]);
139 139
140 // Get pixel data from |scoped_mask| converting it to 32bpp along the way. 140 // Get pixel data from |scoped_mask| converting it to 32bpp along the way.
141 // GetDIBits() sets the alpha component of every pixel to 0. 141 // GetDIBits() sets the alpha component of every pixel to 0.
142 BITMAPV5HEADER bmi = {0}; 142 BITMAPV5HEADER bmi = {0};
143 bmi.bV5Size = sizeof(bmi); 143 bmi.bV5Size = sizeof(bmi);
144 bmi.bV5Width = width; 144 bmi.bV5Width = width;
145 bmi.bV5Height = -height; // request a top-down bitmap. 145 bmi.bV5Height = -height; // request a top-down bitmap.
146 bmi.bV5Planes = 1; 146 bmi.bV5Planes = 1;
147 bmi.bV5BitCount = kBytesPerPixel * 8; 147 bmi.bV5BitCount = kBytesPerPixel * 8;
148 bmi.bV5Compression = BI_RGB; 148 bmi.bV5Compression = BI_RGB;
149 bmi.bV5AlphaMask = 0xff000000; 149 bmi.bV5AlphaMask = 0xff000000;
150 bmi.bV5CSType = LCS_WINDOWS_COLOR_SPACE; 150 bmi.bV5CSType = LCS_WINDOWS_COLOR_SPACE;
151 bmi.bV5Intent = LCS_GM_BUSINESS; 151 bmi.bV5Intent = LCS_GM_BUSINESS;
152 if (!GetDIBits(dc, 152 if (!GetDIBits(dc,
153 scoped_mask, 153 scoped_mask,
154 0, 154 0,
155 height, 155 height,
156 mask_data.get(), 156 mask_data.get(),
157 reinterpret_cast<BITMAPINFO*>(&bmi), 157 reinterpret_cast<BITMAPINFO*>(&bmi),
158 DIB_RGB_COLORS)) { 158 DIB_RGB_COLORS)) {
159 LOG_F(LS_ERROR) << "Unable to get bitmap bits. Error = " 159 LOG_F(LS_ERROR) << "Unable to get bitmap bits. Error = "
160 << GetLastError(); 160 << GetLastError();
161 return NULL; 161 return NULL;
162 } 162 }
163 163
164 uint32_t* mask_plane = mask_data.get(); 164 uint32_t* mask_plane = mask_data.get();
165 rtc::scoped_ptr<DesktopFrame> image( 165 std::unique_ptr<DesktopFrame> image(
166 new BasicDesktopFrame(DesktopSize(width, height))); 166 new BasicDesktopFrame(DesktopSize(width, height)));
167 bool has_alpha = false; 167 bool has_alpha = false;
168 168
169 if (is_color) { 169 if (is_color) {
170 image.reset(new BasicDesktopFrame(DesktopSize(width, height))); 170 image.reset(new BasicDesktopFrame(DesktopSize(width, height)));
171 // Get the pixels from the color bitmap. 171 // Get the pixels from the color bitmap.
172 if (!GetDIBits(dc, 172 if (!GetDIBits(dc,
173 scoped_color, 173 scoped_color,
174 0, 174 0,
175 height, 175 height,
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 239
240 // Pre-multiply the resulting pixels since MouseCursor uses premultiplied 240 // Pre-multiply the resulting pixels since MouseCursor uses premultiplied
241 // images. 241 // images.
242 AlphaMul(reinterpret_cast<uint32_t*>(image->data()), width, height); 242 AlphaMul(reinterpret_cast<uint32_t*>(image->data()), width, height);
243 243
244 return new MouseCursor( 244 return new MouseCursor(
245 image.release(), DesktopVector(hotspot_x, hotspot_y)); 245 image.release(), DesktopVector(hotspot_x, hotspot_y));
246 } 246 }
247 247
248 } // namespace webrtc 248 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698