| /* | 
 |  *  Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. | 
 |  * | 
 |  *  Use of this source code is governed by a BSD-style license | 
 |  *  that can be found in the LICENSE file in the root of the source | 
 |  *  tree. An additional intellectual property rights grant can be found | 
 |  *  in the file PATENTS.  All contributing project authors may | 
 |  *  be found in the AUTHORS file in the root of the source tree. | 
 |  */ | 
 |  | 
 | #ifndef WEBRTC_MODULES_DESKTOP_CAPTURE_WIN_DXGI_CONTEXT_H_ | 
 | #define WEBRTC_MODULES_DESKTOP_CAPTURE_WIN_DXGI_CONTEXT_H_ | 
 |  | 
 | #include <vector> | 
 | #include "webrtc/modules/desktop_capture/desktop_region.h" | 
 |  | 
 | namespace webrtc { | 
 |  | 
 | // A DxgiOutputContext stores the status of a single DxgiFrame of | 
 | // DxgiOutputDuplicator. | 
 | struct DxgiOutputContext final { | 
 |   // The updated region DxgiOutputDuplicator::DetectUpdatedRegion() output | 
 |   // during last Duplicate() function call. It's always relative to the (0, 0). | 
 |   DesktopRegion updated_region; | 
 | }; | 
 |  | 
 | // A DxgiAdapterContext stores the status of a single DxgiFrame of | 
 | // DxgiAdapterDuplicator. | 
 | struct DxgiAdapterContext final { | 
 |   DxgiAdapterContext(); | 
 |   DxgiAdapterContext(const DxgiAdapterContext& other); | 
 |   ~DxgiAdapterContext(); | 
 |  | 
 |   // Child DxgiOutputContext belongs to this AdapterContext. | 
 |   std::vector<DxgiOutputContext> contexts; | 
 | }; | 
 |  | 
 | // A DxgiFrameContext stores the status of a single DxgiFrame of | 
 | // DxgiDuplicatorController. | 
 | struct DxgiFrameContext final { | 
 |  public: | 
 |   DxgiFrameContext(); | 
 |   // Unregister this Context instance from DxgiDuplicatorController during | 
 |   // destructing. | 
 |   ~DxgiFrameContext(); | 
 |  | 
 |   // Reset current Context, so it will be reinitialized next time. | 
 |   void Reset(); | 
 |  | 
 |   // A Context will have an exactly same |controller_id| as | 
 |   // DxgiDuplicatorController, to ensure it has been correctly setted up after | 
 |   // each DxgiDuplicatorController::Initialize(). | 
 |   int controller_id = 0; | 
 |  | 
 |   // Child DxgiAdapterContext belongs to this DxgiFrameContext. | 
 |   std::vector<DxgiAdapterContext> contexts; | 
 | }; | 
 |  | 
 | }  // namespace webrtc | 
 |  | 
 | #endif  // WEBRTC_MODULES_DESKTOP_CAPTURE_WIN_DXGI_CONTEXT_H_ |