From c0d367f7b183d2e8f8362fde550d6c3816f0a4ed Mon Sep 17 00:00:00 2001 From: fufesou Date: Fri, 3 Mar 2023 21:04:19 +0800 Subject: [PATCH] fix some incorrect capture magnifier logic Signed-off-by: fufesou --- libs/scrap/src/dxgi/mag.rs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/libs/scrap/src/dxgi/mag.rs b/libs/scrap/src/dxgi/mag.rs index 0de86055e..b2bea1dd1 100644 --- a/libs/scrap/src/dxgi/mag.rs +++ b/libs/scrap/src/dxgi/mag.rs @@ -282,10 +282,10 @@ impl CapturerMag { let y = GetSystemMetrics(SM_YVIRTUALSCREEN); let w = GetSystemMetrics(SM_CXVIRTUALSCREEN); let h = GetSystemMetrics(SM_CYVIRTUALSCREEN); - if !(origin.0 == x as i32 - && origin.1 == y as i32 - && width == w as usize - && height == h as usize) + if !(origin.0 >= x as i32 + && origin.1 >= y as i32 + && width <= w as usize + && height <= h as usize) { return Err(Error::new( ErrorKind::Other, @@ -518,10 +518,10 @@ impl CapturerMag { let y = GetSystemMetrics(SM_YVIRTUALSCREEN); let w = GetSystemMetrics(SM_CXVIRTUALSCREEN); let h = GetSystemMetrics(SM_CYVIRTUALSCREEN); - if !(self.rect.left == x as i32 - && self.rect.top == y as i32 - && self.rect.right == (x + w) as i32 - && self.rect.bottom == (y + h) as i32) + if !(self.rect.left >= x as i32 + && self.rect.top >= y as i32 + && self.rect.right <= (x + w) as i32 + && self.rect.bottom <= (y + h) as i32) { return Err(Error::new( ErrorKind::Other, @@ -545,8 +545,8 @@ impl CapturerMag { HWND_TOP, self.rect.left, self.rect.top, - self.rect.right, - self.rect.bottom, + self.rect.right - self.rect.left, + self.rect.bottom - self.rect.top, 0, ) { @@ -556,8 +556,8 @@ impl CapturerMag { "Failed SetWindowPos (x, y, w , h) - ({}, {}, {}, {}), error {}", self.rect.left, self.rect.top, - self.rect.right, - self.rect.bottom, + self.rect.right - self.rect.left, + self.rect.bottom - self.rect.top, GetLastError() ), ));