| Index: webrtc/modules/desktop_capture/win/dxgi_texture_staging.cc
|
| diff --git a/webrtc/modules/desktop_capture/win/dxgi_texture_staging.cc b/webrtc/modules/desktop_capture/win/dxgi_texture_staging.cc
|
| index 6866d1e4c616a7c97c2581fc6f225380ed1bb8ba..f11a3c1e282e39d342fab1074be46abf51eca524 100644
|
| --- a/webrtc/modules/desktop_capture/win/dxgi_texture_staging.cc
|
| +++ b/webrtc/modules/desktop_capture/win/dxgi_texture_staging.cc
|
| @@ -22,9 +22,9 @@ using Microsoft::WRL::ComPtr;
|
|
|
| namespace webrtc {
|
|
|
| -DxgiTextureStaging::DxgiTextureStaging(const DesktopRect& desktop_rect,
|
| +DxgiTextureStaging::DxgiTextureStaging(const DesktopSize& desktop_size,
|
| const D3dDevice& device)
|
| - : DxgiTexture(desktop_rect), device_(device) {}
|
| + : DxgiTexture(desktop_size), device_(device) {}
|
|
|
| DxgiTextureStaging::~DxgiTextureStaging() = default;
|
|
|
| @@ -32,8 +32,8 @@ bool DxgiTextureStaging::InitializeStage(ID3D11Texture2D* texture) {
|
| RTC_DCHECK(texture);
|
| D3D11_TEXTURE2D_DESC desc = {0};
|
| texture->GetDesc(&desc);
|
| - if (static_cast<int>(desc.Width) != desktop_rect().width() ||
|
| - static_cast<int>(desc.Height) != desktop_rect().height()) {
|
| + if (static_cast<int>(desc.Width) != desktop_size().width() ||
|
| + static_cast<int>(desc.Height) != desktop_size().height()) {
|
| LOG(LS_ERROR) << "Texture size is not consistent with current DxgiTexture.";
|
| return false;
|
| }
|
| @@ -91,8 +91,7 @@ void DxgiTextureStaging::AssertStageAndSurfaceAreSameObject() {
|
| }
|
|
|
| bool DxgiTextureStaging::CopyFrom(const DXGI_OUTDUPL_FRAME_INFO& frame_info,
|
| - IDXGIResource* resource,
|
| - const DesktopRegion& region) {
|
| + IDXGIResource* resource) {
|
| RTC_DCHECK(resource && frame_info.AccumulatedFrames > 0);
|
| ComPtr<ID3D11Texture2D> texture;
|
| _com_error error = resource->QueryInterface(
|
| @@ -111,20 +110,8 @@ bool DxgiTextureStaging::CopyFrom(const DXGI_OUTDUPL_FRAME_INFO& frame_info,
|
| return false;
|
| }
|
|
|
| - for (DesktopRegion::Iterator it(region); !it.IsAtEnd(); it.Advance()) {
|
| - DesktopRect rect(it.rect());
|
| - rect.Translate(-desktop_rect().left(), -desktop_rect().top());
|
| - D3D11_BOX box;
|
| - box.left = rect.left();
|
| - box.top = rect.top();
|
| - box.right = rect.right();
|
| - box.bottom = rect.bottom();
|
| - box.front = 0;
|
| - box.back = 1;
|
| - device_.context()->CopySubresourceRegion(
|
| - static_cast<ID3D11Resource*>(stage_.Get()), 0, rect.left(), rect.top(),
|
| - 0, static_cast<ID3D11Resource*>(texture.Get()), 0, &box);
|
| - }
|
| + device_.context()->CopyResource(static_cast<ID3D11Resource*>(stage_.Get()),
|
| + static_cast<ID3D11Resource*>(texture.Get()));
|
|
|
| rect_ = {0};
|
| error = surface_->Map(&rect_, DXGI_MAP_READ);
|
|
|