[feat] implementation for ScreenCapturerSck::Destroy() and ScreenCapturerSck::Stop()

This commit is contained in:
dijunkun
2025-05-29 15:49:42 +08:00
parent 920677a433
commit a8b5e934b8
4 changed files with 48 additions and 10 deletions

View File

@@ -58,9 +58,9 @@ class API_AVAILABLE(macos(14.0)) ScreenCapturerSckImpl : public ScreenCapturer {
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; }
@@ -263,6 +263,35 @@ int ScreenCapturerSckImpl::SwitchTo(int monitor_index) {
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) {
if (!content) {
LOG_ERROR("getShareableContent failed");