mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-26 12:15:34 +08:00
[feat] implementation for ScreenCapturerSck::Destroy() and ScreenCapturerSck::Stop()
This commit is contained in:
@@ -19,15 +19,24 @@ int ScreenCapturerSck::Init(const int fps, cb_desktop_data cb) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ScreenCapturerSck::Destroy() { return 0; }
|
int ScreenCapturerSck::Destroy() {
|
||||||
|
if (screen_capturer_sck_impl_) {
|
||||||
int ScreenCapturerSck::Start() {
|
screen_capturer_sck_impl_->Destroy();
|
||||||
screen_capturer_sck_impl_->Start();
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ScreenCapturerSck::Stop() { return 0; }
|
int ScreenCapturerSck::Start() {
|
||||||
|
screen_capturer_sck_impl_->Start();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ScreenCapturerSck::Stop() {
|
||||||
|
if (screen_capturer_sck_impl_) {
|
||||||
|
screen_capturer_sck_impl_->Stop();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int ScreenCapturerSck::Pause(int monitor_index) {
|
int ScreenCapturerSck::Pause(int monitor_index) {
|
||||||
if (screen_capturer_sck_impl_) {
|
if (screen_capturer_sck_impl_) {
|
||||||
|
|||||||
@@ -58,9 +58,9 @@ class API_AVAILABLE(macos(14.0)) ScreenCapturerSckImpl : public ScreenCapturer {
|
|||||||
|
|
||||||
int SwitchTo(int monitor_index) override;
|
int SwitchTo(int monitor_index) override;
|
||||||
|
|
||||||
int Destroy() override { return 0; }
|
int Destroy() override;
|
||||||
|
|
||||||
int Stop() override { return 0; }
|
int Stop() override;
|
||||||
|
|
||||||
int Pause(int monitor_index) override { return 0; }
|
int Pause(int monitor_index) override { return 0; }
|
||||||
|
|
||||||
@@ -263,6 +263,35 @@ int ScreenCapturerSckImpl::SwitchTo(int monitor_index) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ScreenCapturerSckImpl::Destroy() {
|
||||||
|
std::lock_guard<std::mutex> lock(lock_);
|
||||||
|
if (stream_) {
|
||||||
|
LOG_INFO("Destroying stream");
|
||||||
|
[stream_ stopCaptureWithCompletionHandler:nil];
|
||||||
|
stream_ = nil;
|
||||||
|
}
|
||||||
|
current_display_ = 0;
|
||||||
|
permanent_error_ = false;
|
||||||
|
_on_data = nullptr;
|
||||||
|
[helper_ releaseCapturer];
|
||||||
|
helper_ = nil;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ScreenCapturerSckImpl::Stop() {
|
||||||
|
[stream_ stopCaptureWithCompletionHandler:nil];
|
||||||
|
std::lock_guard<std::mutex> lock(lock_);
|
||||||
|
if (stream_) {
|
||||||
|
LOG_INFO("Stopping stream");
|
||||||
|
[stream_ stopCaptureWithCompletionHandler:nil];
|
||||||
|
stream_ = nil;
|
||||||
|
}
|
||||||
|
current_display_ = 0;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void ScreenCapturerSckImpl::OnShareableContentCreated(SCShareableContent *content) {
|
void ScreenCapturerSckImpl::OnShareableContentCreated(SCShareableContent *content) {
|
||||||
if (!content) {
|
if (!content) {
|
||||||
LOG_ERROR("getShareableContent failed");
|
LOG_ERROR("getShareableContent failed");
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ void ScaleNv12ToABGR(char* src, int src_w, int src_h, int dst_w, int dst_h,
|
|||||||
|
|
||||||
memset(dst_rgba, 0, dst_w * dst_h * 4);
|
memset(dst_rgba, 0, dst_w * dst_h * 4);
|
||||||
for (int i = 0; i < dst_w * dst_h; ++i) {
|
for (int i = 0; i < dst_w * dst_h; ++i) {
|
||||||
dst_rgba[i * 4 + 3] = 255;
|
dst_rgba[i * 4 + 3] = 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int y = 0; y < fit_h; ++y) {
|
for (int y = 0; y < fit_h; ++y) {
|
||||||
|
|||||||
2
thirdparty/projectx
vendored
2
thirdparty/projectx
vendored
Submodule thirdparty/projectx updated: 9c5fc397de...20c6ee11f6
Reference in New Issue
Block a user