Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 13 additions & 10 deletions src/platform/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -481,10 +481,7 @@ namespace platf {
*/
using pull_free_image_cb_t = std::function<bool(std::shared_ptr<img_t> &img_out)>;

display_t() noexcept:
offset_x {0},
offset_y {0} {
}
display_t() noexcept = default;

/**
* @brief Capture a frame.
Expand Down Expand Up @@ -534,12 +531,18 @@ namespace platf {
virtual ~display_t() = default;

// Offsets for when streaming a specific monitor. By default, they are 0.
int offset_x, offset_y;
int env_width, env_height;
int env_logical_width, env_logical_height;

int width, height;
int logical_width, logical_height;
int offset_x {0};
int offset_y {0};

int env_width {0};
int env_height {0};
int env_logical_width {0};
int env_logical_height {0};

int width {0};
int height {0};
int logical_width {0};
int logical_height {0};

protected:
// collect capture timing data (at loglevel debug)
Expand Down
6 changes: 4 additions & 2 deletions src/platform/windows/input.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -511,8 +511,10 @@ namespace platf {
// MOUSEEVENTF_VIRTUALDESK maps to the entirety of the desktop rather than the primary desktop
MOUSEEVENTF_VIRTUALDESK;

auto scaled_x = std::lround((x + touch_port.offset_x) * ((float) target_touch_port.width / (float) touch_port.width));
auto scaled_y = std::lround((y + touch_port.offset_y) * ((float) target_touch_port.height / (float) touch_port.height));
// Note: x and y already include the display offset (offset_x/offset_y) from client_to_touchport(),
// so we must not add offset_x/offset_y again here to avoid double-offsetting on multi-monitor setups.
auto scaled_x = std::lround(x * ((float) target_touch_port.width / (float) touch_port.width));
auto scaled_y = std::lround(y * ((float) target_touch_port.height / (float) touch_port.height));

mi.dx = scaled_x;
mi.dy = scaled_y;
Expand Down
2 changes: 1 addition & 1 deletion src/video.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2063,7 +2063,7 @@ namespace video {
float scalar_tpcoords = 1.0f;
int display_env_logical_width = 0;
int display_env_logical_height = 0;
if (display->logical_width && display->logical_height && display->env_logical_width && display->env_logical_height) {
if (display->logical_width > 0 && display->logical_height > 0 && display->env_logical_width > 0 && display->env_logical_height > 0) {
float lwd = display->logical_width;
float lhd = display->logical_height;
scalar_tpcoords = std::fminf(wd / lwd, hd / lhd);
Expand Down
Loading