From 1876de0a68309e019253fe8ea2140e779821aa1e Mon Sep 17 00:00:00 2001 From: loki Date: Wed, 18 Aug 2021 11:05:14 +0200 Subject: [PATCH] Fix cursor disappearing on Windows --- sunshine/platform/windows/display.h | 6 +++++- sunshine/platform/windows/display_vram.cpp | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/sunshine/platform/windows/display.h b/sunshine/platform/windows/display.h index 26000d88..37020fef 100644 --- a/sunshine/platform/windows/display.h +++ b/sunshine/platform/windows/display.h @@ -69,9 +69,11 @@ struct cursor_t { class gpu_cursor_t { public: gpu_cursor_t() : cursor_view { 0, 0, 0, 0, 0.0f, 1.0f } {}; - void set_pos(LONG rel_x, LONG rel_y) { + void set_pos(LONG rel_x, LONG rel_y, bool visible) { cursor_view.TopLeftX = rel_x; cursor_view.TopLeftY = rel_y; + + this->visible = visible; } void set_texture(LONG width, LONG height, texture2d_t &&texture) { @@ -85,6 +87,8 @@ public: shader_res_t input_res; D3D11_VIEWPORT cursor_view; + + bool visible; }; class duplication_t { diff --git a/sunshine/platform/windows/display_vram.cpp b/sunshine/platform/windows/display_vram.cpp index cc4493ce..9a932665 100644 --- a/sunshine/platform/windows/display_vram.cpp +++ b/sunshine/platform/windows/display_vram.cpp @@ -673,7 +673,7 @@ capture_e display_vram_t::snapshot(platf::img_t *img_base, std::chrono::millisec } if(frame_info.LastMouseUpdateTime.QuadPart) { - cursor.set_pos(frame_info.PointerPosition.Position.x, frame_info.PointerPosition.Position.y); + cursor.set_pos(frame_info.PointerPosition.Position.x, frame_info.PointerPosition.Position.y, frame_info.PointerPosition.Visible && cursor_visible); } if(frame_update_flag) { @@ -687,10 +687,10 @@ capture_e display_vram_t::snapshot(platf::img_t *img_base, std::chrono::millisec } device_ctx->CopyResource(img->texture.get(), src.get()); - if(frame_info.PointerPosition.Visible && cursor_visible) { + if(cursor.visible) { D3D11_VIEWPORT view { 0.0f, 0.0f, - width, height, + (float)width, (float)height, 0.0f, 1.0f };