[feat] capture cursor when connected to a web client

This commit is contained in:
dijunkun
2025-11-18 16:24:28 +08:00
parent f5d0291b5a
commit 4ba4f17a6b
14 changed files with 42 additions and 18 deletions

View File

@@ -152,7 +152,7 @@ int ScreenCapturerWgc::Init(const int fps, cb_desktop_data cb) {
int ScreenCapturerWgc::Destroy() { return 0; }
int ScreenCapturerWgc::Start() {
int ScreenCapturerWgc::Start(bool show_cursor) {
if (running_ == true) {
LOG_ERROR("Screen capturer already running");
return 0;
@@ -172,7 +172,7 @@ int ScreenCapturerWgc::Start() {
if (sessions_[i].running_) {
LOG_ERROR("Session {} is already running", i);
} else {
sessions_[i].session_->Start();
sessions_[i].session_->Start(show_cursor);
if (i != 0) {
sessions_[i].session_->Pause();

View File

@@ -24,7 +24,7 @@ class ScreenCapturerWgc : public ScreenCapturer,
int Init(const int fps, cb_desktop_data cb) override;
int Destroy() override;
int Start() override;
int Start(bool show_cursor) override;
int Stop() override;
int Pause(int monitor_index) override;

View File

@@ -29,7 +29,7 @@ class WgcSession {
virtual void RegisterObserver(wgc_session_observer* observer) = 0;
virtual int Start() = 0;
virtual int Start(bool show_cursor) = 0;
virtual int Stop() = 0;
virtual int Pause() = 0;

View File

@@ -55,7 +55,7 @@ void WgcSessionImpl::RegisterObserver(wgc_session_observer* observer) {
observer_ = observer;
}
int WgcSessionImpl::Start() {
int WgcSessionImpl::Start(bool show_cursor) {
std::lock_guard locker(lock_);
if (is_running_) return 0;
@@ -91,7 +91,7 @@ int WgcSessionImpl::Start() {
capture_session_.StartCapture();
capture_session_.IsCursorCaptureEnabled(false);
capture_session_.IsCursorCaptureEnabled(show_cursor);
error = 0;
} catch (winrt::hresult_error) {

View File

@@ -48,7 +48,7 @@ class WgcSessionImpl : public WgcSession {
void RegisterObserver(wgc_session_observer* observer) override;
int Start() override;
int Start(bool show_cursor) override;
int Stop() override;
int Pause() override;