Re: [FFmpeg-devel] [PATCH] avdevice/gdigrab: Fix screen size and mouse position calculations on hi-DPI screens

2018-01-12 Thread Michael Niedermayer
On Tue, Nov 28, 2017 at 09:59:02AM +0100, Harald Gaechter wrote:
> Signed-off-by: Harald Gaechter 
> ---
>  libavdevice/gdigrab.c | 10 --
>  1 file changed, 8 insertions(+), 2 deletions(-)

will apply

thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

No snowflake in an avalanche ever feels responsible. -- Voltaire


signature.asc
Description: PGP signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] avdevice/gdigrab: Fix screen size and mouse position calculations on hi-DPI screens

2017-11-28 Thread Harald Gaechter
Signed-off-by: Harald Gaechter 
---
 libavdevice/gdigrab.c | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/libavdevice/gdigrab.c b/libavdevice/gdigrab.c
index 87f5012034..ff2ef3b162 100644
--- a/libavdevice/gdigrab.c
+++ b/libavdevice/gdigrab.c
@@ -235,7 +235,9 @@ gdigrab_read_header(AVFormatContext *s1)
 AVStream   *st   = NULL;
 
 int bpp;
+int horzres;
 int vertres;
+int desktophorzres;
 int desktopvertres;
 RECT virtual_rect;
 RECT clip_rect;
@@ -279,11 +281,13 @@ gdigrab_read_header(AVFormatContext *s1)
 GetClientRect(hwnd, &virtual_rect);
 } else {
 /* desktop -- get the right height and width for scaling DPI */
+horzres = GetDeviceCaps(source_hdc, HORZRES);
 vertres = GetDeviceCaps(source_hdc, VERTRES);
+desktophorzres = GetDeviceCaps(source_hdc, DESKTOPHORZRES);
 desktopvertres = GetDeviceCaps(source_hdc, DESKTOPVERTRES);
 virtual_rect.left = GetSystemMetrics(SM_XVIRTUALSCREEN);
 virtual_rect.top = GetSystemMetrics(SM_YVIRTUALSCREEN);
-virtual_rect.right = (virtual_rect.left + 
GetSystemMetrics(SM_CXVIRTUALSCREEN)) * desktopvertres / vertres;
+virtual_rect.right = (virtual_rect.left + 
GetSystemMetrics(SM_CXVIRTUALSCREEN)) * desktophorzres / horzres;
 virtual_rect.bottom = (virtual_rect.top + 
GetSystemMetrics(SM_CYVIRTUALSCREEN)) * desktopvertres / vertres;
 }
 
@@ -447,7 +451,9 @@ static void paint_mouse_pointer(AVFormatContext *s1, struct 
gdigrab *gdigrab)
 POINT pos;
 RECT clip_rect = gdigrab->clip_rect;
 HWND hwnd = gdigrab->hwnd;
+int horzres = GetDeviceCaps(gdigrab->source_hdc, HORZRES);
 int vertres = GetDeviceCaps(gdigrab->source_hdc, VERTRES);
+int desktophorzres = GetDeviceCaps(gdigrab->source_hdc, 
DESKTOPHORZRES);
 int desktopvertres = GetDeviceCaps(gdigrab->source_hdc, 
DESKTOPVERTRES);
 info.hbmMask = NULL;
 info.hbmColor = NULL;
@@ -483,7 +489,7 @@ static void paint_mouse_pointer(AVFormatContext *s1, struct 
gdigrab *gdigrab)
 }
 
 //that would keep the correct location of mouse with hidpi screens
-pos.x = pos.x * desktopvertres / vertres;
+pos.x = pos.x * desktophorzres / horzres;
 pos.y = pos.y * desktopvertres / vertres;
 
 av_log(s1, AV_LOG_DEBUG, "Cursor pos (%li,%li) -> (%li,%li)\n",
-- 
2.15.0

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel