Skip to content

Commit

Permalink
Merge pull request #2301 from Nexarian/update_scaling_factor_handling
Browse files Browse the repository at this point in the history
Update handling of scale factor
  • Loading branch information
Nexarian committed Jul 4, 2022
2 parents eeb5daa + 07dbd0e commit 521e5e0
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 17 deletions.
33 changes: 18 additions & 15 deletions libxrdp/libxrdp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1959,30 +1959,33 @@ libxrdp_process_monitor_stream(struct stream *s,
}

in_uint32_le(s, monitor_layout->desktop_scale_factor);
if (monitor_layout->desktop_scale_factor < 100
|| monitor_layout->desktop_scale_factor > 500
|| (monitor_layout->desktop_scale_factor != 100
&& monitor_layout->desktop_scale_factor != 140
&& monitor_layout->desktop_scale_factor != 180))
int check_desktop_scale_factor
= monitor_layout->desktop_scale_factor < 100
|| monitor_layout->desktop_scale_factor > 500;
if (check_desktop_scale_factor)
{
LOG(LOG_LEVEL_WARNING, "libxrdp_process_monitor_stream:"
" desktop_scale_factor is not within valid range. Assuming 100."
" Value was: %d",
" desktop_scale_factor is not within valid range"
" of [100, 500]. Assuming 100. Value was: %d",
monitor_layout->desktop_scale_factor);
monitor_layout->desktop_scale_factor = 100;
}

in_uint32_le(s, monitor_layout->device_scale_factor);
if (monitor_layout->device_scale_factor < 100
|| monitor_layout->device_scale_factor > 500
|| (monitor_layout->device_scale_factor != 100
&& monitor_layout->device_scale_factor != 140
&& monitor_layout->device_scale_factor != 180))
int check_device_scale_factor
= monitor_layout->device_scale_factor != 100
&& monitor_layout->device_scale_factor != 140
&& monitor_layout->device_scale_factor != 180;
if (check_device_scale_factor)
{
LOG(LOG_LEVEL_WARNING, "libxrdp_process_monitor_stream:"
" device_scale_factor is not within valid range. Assuming 100."
" Value was: %d",
" device_scale_factor a valid value (One of 100, 140, 180)."
" Assuming 100. Value was: %d",
monitor_layout->device_scale_factor);
}

if (check_desktop_scale_factor || check_device_scale_factor)
{
monitor_layout->desktop_scale_factor = 100;
monitor_layout->device_scale_factor = 100;
}

Expand Down
4 changes: 2 additions & 2 deletions tests/libxrdp/test_libxrdp_process_monitor_stream.c
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ START_TEST(test_libxrdp_process_monitor_stream__with_sextuple_monitor_happy_path
ck_assert_int_eq(description->minfo[2].physical_height, 1000);
ck_assert_int_eq(description->minfo[2].orientation, 0);
ck_assert_int_eq(description->minfo[2].desktop_scale_factor, 100);
ck_assert_int_eq(description->minfo[2].device_scale_factor, 140);
ck_assert_int_eq(description->minfo[2].device_scale_factor, 100);
ck_assert_int_eq(description->minfo[2].is_primary, 0);

ck_assert_int_eq(description->minfo[3].left, 0);
Expand Down Expand Up @@ -342,7 +342,7 @@ START_TEST(test_libxrdp_process_monitor_stream__with_sextuple_monitor_happy_path
ck_assert_int_eq(description->minfo_wm[2].physical_height, 1000);
ck_assert_int_eq(description->minfo_wm[2].orientation, 0);
ck_assert_int_eq(description->minfo_wm[2].desktop_scale_factor, 100);
ck_assert_int_eq(description->minfo_wm[2].device_scale_factor, 140);
ck_assert_int_eq(description->minfo_wm[2].device_scale_factor, 100);
ck_assert_int_eq(description->minfo_wm[2].is_primary, 0);

ck_assert_int_eq(description->minfo_wm[3].left, 0);
Expand Down

0 comments on commit 521e5e0

Please sign in to comment.