webrtc_m130/webrtc/modules/desktop_capture/shared_desktop_frame.cc
Zijie He 09f16c6a0a Add new constructors for all DesktopFrame inheritances
This change adds constructors for all DesktopFrame inheritances to pass in
DesktopRect instead of DesktopSize.
Because the newly added constructors and DesktopFrame::top_left() function are
not actively used, this change should have no logic impact.

Bug: webrtc:7950
Change-Id: If78187865c991211dfc28d3723403ce6e6fe0290
Reviewed-on: https://chromium-review.googlesource.com/590508
Reviewed-by: Jamie Walch <jamiewalch@chromium.org>
Commit-Queue: Zijie He <zijiehe@chromium.org>
Cr-Commit-Position: refs/heads/master@{#19204}
2017-08-02 01:07:44 +00:00

57 lines
1.7 KiB
C++

/*
* Copyright (c) 2013 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.
*/
#include "webrtc/modules/desktop_capture/shared_desktop_frame.h"
#include <memory>
#include "webrtc/rtc_base/constructormagic.h"
namespace webrtc {
SharedDesktopFrame::~SharedDesktopFrame() {}
// static
std::unique_ptr<SharedDesktopFrame> SharedDesktopFrame::Wrap(
std::unique_ptr<DesktopFrame> desktop_frame) {
return std::unique_ptr<SharedDesktopFrame>(
new SharedDesktopFrame(new Core(std::move(desktop_frame))));
}
SharedDesktopFrame* SharedDesktopFrame::Wrap(DesktopFrame* desktop_frame) {
return Wrap(std::unique_ptr<DesktopFrame>(desktop_frame)).release();
}
DesktopFrame* SharedDesktopFrame::GetUnderlyingFrame() {
return core_->get();
}
std::unique_ptr<SharedDesktopFrame> SharedDesktopFrame::Share() {
std::unique_ptr<SharedDesktopFrame> result(new SharedDesktopFrame(core_));
result->set_dpi(dpi());
result->set_capture_time_ms(capture_time_ms());
result->set_capturer_id(capturer_id());
*result->mutable_updated_region() = updated_region();
return result;
}
bool SharedDesktopFrame::IsShared() {
return !core_->HasOneRef();
}
SharedDesktopFrame::SharedDesktopFrame(rtc::scoped_refptr<Core> core)
: DesktopFrame((*core)->rect(),
(*core)->stride(),
(*core)->data(),
(*core)->shared_memory()),
core_(core) {}
} // namespace webrtc