Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2014 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 |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 26 | 26 |
| 27 namespace webrtc { | 27 namespace webrtc { |
| 28 | 28 |
| 29 // kMagnifierWindowClass has to be "Magnifier" according to the Magnification | 29 // kMagnifierWindowClass has to be "Magnifier" according to the Magnification |
| 30 // API. The other strings can be anything. | 30 // API. The other strings can be anything. |
| 31 static LPCTSTR kMagnifierHostClass = L"ScreenCapturerWinMagnifierHost"; | 31 static LPCTSTR kMagnifierHostClass = L"ScreenCapturerWinMagnifierHost"; |
| 32 static LPCTSTR kHostWindowName = L"MagnifierHost"; | 32 static LPCTSTR kHostWindowName = L"MagnifierHost"; |
| 33 static LPCTSTR kMagnifierWindowClass = L"Magnifier"; | 33 static LPCTSTR kMagnifierWindowClass = L"Magnifier"; |
| 34 static LPCTSTR kMagnifierWindowName = L"MagnifierWindow"; | 34 static LPCTSTR kMagnifierWindowName = L"MagnifierWindow"; |
| 35 | 35 |
| 36 Atomic32 ScreenCapturerWinMagnifier::tls_index_(TLS_OUT_OF_INDEXES); | 36 int32_t kTlsIndexNotSet = 0; // Should not be a valid pointer. |
|
Sergey Ulanov
2015/12/09 22:31:51
Not sure we can use 0 here. Can TlsAlloc() return
Nico
2015/12/10 15:05:46
Hm, you're right. Reverted this to patch set 1.
Sergey Ulanov
2015/12/10 17:29:55
Sorry for not being clear, what I was suggesting i
| |
| 37 Atomic32 ScreenCapturerWinMagnifier::tls_index_(kTlsIndexNotSet); | |
| 37 | 38 |
| 38 ScreenCapturerWinMagnifier::ScreenCapturerWinMagnifier( | 39 ScreenCapturerWinMagnifier::ScreenCapturerWinMagnifier( |
| 39 rtc::scoped_ptr<ScreenCapturer> fallback_capturer) | 40 rtc::scoped_ptr<ScreenCapturer> fallback_capturer) |
| 40 : fallback_capturer_(fallback_capturer.Pass()), | 41 : fallback_capturer_(fallback_capturer.Pass()), |
| 41 fallback_capturer_started_(false), | 42 fallback_capturer_started_(false), |
| 42 callback_(NULL), | 43 callback_(NULL), |
| 43 current_screen_id_(kFullDesktopScreenId), | 44 current_screen_id_(kFullDesktopScreenId), |
| 44 excluded_window_(NULL), | 45 excluded_window_(NULL), |
| 45 set_thread_execution_state_failed_(false), | 46 set_thread_execution_state_failed_(false), |
| 46 desktop_dc_(NULL), | 47 desktop_dc_(NULL), |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 229 | 230 |
| 230 BOOL ScreenCapturerWinMagnifier::OnMagImageScalingCallback( | 231 BOOL ScreenCapturerWinMagnifier::OnMagImageScalingCallback( |
| 231 HWND hwnd, | 232 HWND hwnd, |
| 232 void* srcdata, | 233 void* srcdata, |
| 233 MAGIMAGEHEADER srcheader, | 234 MAGIMAGEHEADER srcheader, |
| 234 void* destdata, | 235 void* destdata, |
| 235 MAGIMAGEHEADER destheader, | 236 MAGIMAGEHEADER destheader, |
| 236 RECT unclipped, | 237 RECT unclipped, |
| 237 RECT clipped, | 238 RECT clipped, |
| 238 HRGN dirty) { | 239 HRGN dirty) { |
| 239 assert(tls_index_.Value() != TLS_OUT_OF_INDEXES); | 240 assert(tls_index_.Value() != kTlsIndexNotSet); |
| 240 | 241 |
| 241 ScreenCapturerWinMagnifier* owner = | 242 ScreenCapturerWinMagnifier* owner = |
| 242 reinterpret_cast<ScreenCapturerWinMagnifier*>( | 243 reinterpret_cast<ScreenCapturerWinMagnifier*>( |
| 243 TlsGetValue(tls_index_.Value())); | 244 TlsGetValue(tls_index_.Value())); |
| 244 | 245 |
| 245 owner->OnCaptured(srcdata, srcheader); | 246 owner->OnCaptured(srcdata, srcheader); |
| 246 | 247 |
| 247 return TRUE; | 248 return TRUE; |
| 248 } | 249 } |
| 249 | 250 |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 362 magnifier_window_, MW_FILTERMODE_EXCLUDE, 1, &excluded_window_); | 363 magnifier_window_, MW_FILTERMODE_EXCLUDE, 1, &excluded_window_); |
| 363 if (!result) { | 364 if (!result) { |
| 364 mag_uninitialize_func_(); | 365 mag_uninitialize_func_(); |
| 365 LOG_F(LS_WARNING) << "Failed to initialize ScreenCapturerWinMagnifier: " | 366 LOG_F(LS_WARNING) << "Failed to initialize ScreenCapturerWinMagnifier: " |
| 366 << "error from MagSetWindowFilterList " | 367 << "error from MagSetWindowFilterList " |
| 367 << GetLastError(); | 368 << GetLastError(); |
| 368 return false; | 369 return false; |
| 369 } | 370 } |
| 370 } | 371 } |
| 371 | 372 |
| 372 if (tls_index_.Value() == TLS_OUT_OF_INDEXES) { | 373 if (tls_index_.Value() == kTlsIndexNotSet) { |
| 373 // More than one threads may get here at the same time, but only one will | 374 // More than one threads may get here at the same time, but only one will |
| 374 // write to tls_index_ using CompareExchange. | 375 // write to tls_index_ using CompareExchange. |
| 375 DWORD new_tls_index = TlsAlloc(); | 376 DWORD new_tls_index = TlsAlloc(); |
| 376 if (!tls_index_.CompareExchange(new_tls_index, TLS_OUT_OF_INDEXES)) | 377 if (!tls_index_.CompareExchange(new_tls_index, kTlsIndexNotSet)) |
| 377 TlsFree(new_tls_index); | 378 TlsFree(new_tls_index); |
| 378 } | 379 } |
| 379 | 380 |
| 380 assert(tls_index_.Value() != TLS_OUT_OF_INDEXES); | 381 assert(tls_index_.Value() != kTlsIndexNotSet); |
| 381 TlsSetValue(tls_index_.Value(), this); | 382 TlsSetValue(tls_index_.Value(), this); |
| 382 | 383 |
| 383 magnifier_initialized_ = true; | 384 magnifier_initialized_ = true; |
| 384 return true; | 385 return true; |
| 385 } | 386 } |
| 386 | 387 |
| 387 void ScreenCapturerWinMagnifier::OnCaptured(void* data, | 388 void ScreenCapturerWinMagnifier::OnCaptured(void* data, |
| 388 const MAGIMAGEHEADER& header) { | 389 const MAGIMAGEHEADER& header) { |
| 389 DesktopFrame* current_frame = queue_.current_frame(); | 390 DesktopFrame* current_frame = queue_.current_frame(); |
| 390 | 391 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 440 assert(fallback_capturer_); | 441 assert(fallback_capturer_); |
| 441 if (!fallback_capturer_started_) { | 442 if (!fallback_capturer_started_) { |
| 442 fallback_capturer_started_ = true; | 443 fallback_capturer_started_ = true; |
| 443 | 444 |
| 444 fallback_capturer_->Start(callback_); | 445 fallback_capturer_->Start(callback_); |
| 445 fallback_capturer_->SelectScreen(current_screen_id_); | 446 fallback_capturer_->SelectScreen(current_screen_id_); |
| 446 } | 447 } |
| 447 } | 448 } |
| 448 | 449 |
| 449 } // namespace webrtc | 450 } // namespace webrtc |
| OLD | NEW |