[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

@@ -19,15 +19,24 @@ int ScreenCapturerSck::Init(const int fps, cb_desktop_data cb) {
return 0;
}
int ScreenCapturerSck::Destroy() { return 0; }
int ScreenCapturerSck::Start() {
screen_capturer_sck_impl_->Start();
int ScreenCapturerSck::Destroy() {
if (screen_capturer_sck_impl_) {
screen_capturer_sck_impl_->Destroy();
}
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) {
if (screen_capturer_sck_impl_) {

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");

View File

@@ -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);
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) {