mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-26 20:25:34 +08:00
[feat] update ScreenCapturerSck
This commit is contained in:
@@ -29,9 +29,19 @@ int ScreenCapturerSck::Start() {
|
|||||||
|
|
||||||
int ScreenCapturerSck::Stop() { return 0; }
|
int ScreenCapturerSck::Stop() { return 0; }
|
||||||
|
|
||||||
int ScreenCapturerSck::Pause(int monitor_index) { return 0; }
|
int ScreenCapturerSck::Pause(int monitor_index) {
|
||||||
|
if (screen_capturer_sck_impl_) {
|
||||||
|
return screen_capturer_sck_impl_->Pause(monitor_index);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int ScreenCapturerSck::Resume(int monitor_index) { return 0; }
|
int ScreenCapturerSck::Resume(int monitor_index) {
|
||||||
|
if (screen_capturer_sck_impl_) {
|
||||||
|
return screen_capturer_sck_impl_->Resume(monitor_index);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int ScreenCapturerSck::SwitchTo(int monitor_index) {
|
int ScreenCapturerSck::SwitchTo(int monitor_index) {
|
||||||
if (screen_capturer_sck_impl_) {
|
if (screen_capturer_sck_impl_) {
|
||||||
|
|||||||
@@ -114,6 +114,11 @@ ScreenCapturerSckImpl::~ScreenCapturerSckImpl() {
|
|||||||
display_id_map_.clear();
|
display_id_map_.clear();
|
||||||
display_id_map_reverse_.clear();
|
display_id_map_reverse_.clear();
|
||||||
|
|
||||||
|
if (nv12_frame_) {
|
||||||
|
delete[] nv12_frame_;
|
||||||
|
nv12_frame_ = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
[stream_ stopCaptureWithCompletionHandler:nil];
|
[stream_ stopCaptureWithCompletionHandler:nil];
|
||||||
[helper_ releaseCapturer];
|
[helper_ releaseCapturer];
|
||||||
}
|
}
|
||||||
@@ -281,15 +286,10 @@ void ScreenCapturerSckImpl::OnNewIOSurface(IOSurfaceRef io_surface, CFDictionary
|
|||||||
uint32_t aseed;
|
uint32_t aseed;
|
||||||
IOSurfaceLock(io_surface, kIOSurfaceLockReadOnly, &aseed);
|
IOSurfaceLock(io_surface, kIOSurfaceLockReadOnly, &aseed);
|
||||||
|
|
||||||
if (!nv12_frame_) {
|
size_t required_size = width * height * 3 / 2;
|
||||||
nv12_frame_ = new unsigned char[width * height * 3 / 2];
|
if (!nv12_frame_ || (width_ * height_ * 3 / 2 < required_size)) {
|
||||||
width_ = width;
|
|
||||||
height_ = height;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nv12_frame_ && width_ * height_ < width * height) {
|
|
||||||
delete[] nv12_frame_;
|
delete[] nv12_frame_;
|
||||||
nv12_frame_ = new unsigned char[width * height * 3 / 2];
|
nv12_frame_ = new unsigned char[required_size];
|
||||||
width_ = width;
|
width_ = width;
|
||||||
height_ = height;
|
height_ = height;
|
||||||
}
|
}
|
||||||
|
|||||||
2
thirdparty/projectx
vendored
2
thirdparty/projectx
vendored
Submodule thirdparty/projectx updated: 3a691e266b...78804fce81
Reference in New Issue
Block a user