| OLD | NEW | 
|   1 /* |   1 /* | 
|   2  *  Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. |   2  *  Copyright (c) 2016 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/dxgi_texture_mapping.h" |  11 #include "webrtc/modules/desktop_capture/win/dxgi_texture_mapping.h" | 
|  12  |  12  | 
|  13 #include <comdef.h> |  13 #include <comdef.h> | 
|  14 #include <DXGI.h> |  14 #include <DXGI.h> | 
|  15 #include <DXGI1_2.h> |  15 #include <DXGI1_2.h> | 
|  16  |  16  | 
|  17 #include "webrtc/base/checks.h" |  17 #include "webrtc/base/checks.h" | 
|  18 #include "webrtc/system_wrappers/include/logging.h" |  18 #include "webrtc/system_wrappers/include/logging.h" | 
|  19  |  19  | 
|  20 namespace webrtc { |  20 namespace webrtc { | 
|  21  |  21  | 
|  22 DxgiTextureMapping::DxgiTextureMapping(const DesktopRect& desktop_rect, |  22 DxgiTextureMapping::DxgiTextureMapping(const DesktopSize& desktop_size, | 
|  23                                        IDXGIOutputDuplication* duplication) |  23                                        IDXGIOutputDuplication* duplication) | 
|  24     : DxgiTexture(desktop_rect), duplication_(duplication) { |  24     : DxgiTexture(desktop_size), duplication_(duplication) { | 
|  25   RTC_DCHECK(duplication_); |  25   RTC_DCHECK(duplication_); | 
|  26 } |  26 } | 
|  27  |  27  | 
|  28 DxgiTextureMapping::~DxgiTextureMapping() = default; |  28 DxgiTextureMapping::~DxgiTextureMapping() = default; | 
|  29  |  29  | 
|  30 bool DxgiTextureMapping::CopyFrom(const DXGI_OUTDUPL_FRAME_INFO& frame_info, |  30 bool DxgiTextureMapping::CopyFrom(const DXGI_OUTDUPL_FRAME_INFO& frame_info, | 
|  31                                   IDXGIResource* resource, |  31                                   IDXGIResource* resource) { | 
|  32                                   const DesktopRegion& region) { |  | 
|  33   RTC_DCHECK(resource && frame_info.AccumulatedFrames > 0); |  32   RTC_DCHECK(resource && frame_info.AccumulatedFrames > 0); | 
|  34   rect_ = {0}; |  33   rect_ = {0}; | 
|  35   _com_error error = duplication_->MapDesktopSurface(&rect_); |  34   _com_error error = duplication_->MapDesktopSurface(&rect_); | 
|  36   if (error.Error() != S_OK) { |  35   if (error.Error() != S_OK) { | 
|  37     rect_ = {0}; |  36     rect_ = {0}; | 
|  38     LOG(LS_ERROR) << "Failed to map the IDXGIOutputDuplication to a bitmap, " |  37     LOG(LS_ERROR) << "Failed to map the IDXGIOutputDuplication to a bitmap, " | 
|  39                      "error " |  38                      "error " | 
|  40                   << error.ErrorMessage() << ", code " << error.Error(); |  39                   << error.ErrorMessage() << ", code " << error.Error(); | 
|  41     return false; |  40     return false; | 
|  42   } |  41   } | 
|  43  |  42  | 
|  44   return true; |  43   return true; | 
|  45 } |  44 } | 
|  46  |  45  | 
|  47 bool DxgiTextureMapping::DoRelease() { |  46 bool DxgiTextureMapping::DoRelease() { | 
|  48   _com_error error = duplication_->UnMapDesktopSurface(); |  47   _com_error error = duplication_->UnMapDesktopSurface(); | 
|  49   if (error.Error() != S_OK) { |  48   if (error.Error() != S_OK) { | 
|  50     LOG(LS_ERROR) << "Failed to unmap the IDXGIOutputDuplication, error " |  49     LOG(LS_ERROR) << "Failed to unmap the IDXGIOutputDuplication, error " | 
|  51                   << error.ErrorMessage() << ", code " << error.Error(); |  50                   << error.ErrorMessage() << ", code " << error.Error(); | 
|  52     return false; |  51     return false; | 
|  53   } |  52   } | 
|  54   return true; |  53   return true; | 
|  55 } |  54 } | 
|  56  |  55  | 
|  57 }  // namespace webrtc |  56 }  // namespace webrtc | 
| OLD | NEW |