You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	libavdevice/gdigrab: fix HIDPI support for mouse positioning
Mouse position was not calculated properly in area or window mode Signed-off-by: Dilshod Mukhtarov <dilshodm@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 Carl Eugen Hoyos
						Carl Eugen Hoyos
					
				
			
			
				
	
			
			
			
						parent
						
							d7c9ddd0c4
						
					
				
				
					commit
					1100862a94
				
			| @@ -479,25 +479,26 @@ static void paint_mouse_pointer(AVFormatContext *s1, struct gdigrab *gdigrab) | ||||
|             goto icon_error; | ||||
|         } | ||||
|  | ||||
|         pos.x = ci.ptScreenPos.x - clip_rect.left - info.xHotspot; | ||||
|         pos.y = ci.ptScreenPos.y - clip_rect.top - info.yHotspot; | ||||
|  | ||||
|         if (hwnd) { | ||||
|             RECT rect; | ||||
|  | ||||
|             if (GetWindowRect(hwnd, &rect)) { | ||||
|                 pos.x -= rect.left; | ||||
|                 pos.y -= rect.top; | ||||
|                 pos.x = ci.ptScreenPos.x - clip_rect.left - info.xHotspot - rect.left; | ||||
|                 pos.y = ci.ptScreenPos.y - clip_rect.top - info.yHotspot - rect.top; | ||||
|  | ||||
|                 //that would keep the correct location of mouse with hidpi screens | ||||
|                 pos.x = pos.x * desktophorzres / horzres; | ||||
|                 pos.y = pos.y * desktopvertres / vertres; | ||||
|             } else { | ||||
|                 CURSOR_ERROR("Couldn't get window rectangle"); | ||||
|                 goto icon_error; | ||||
|             } | ||||
|         } else { | ||||
|             //that would keep the correct location of mouse with hidpi screens | ||||
|             pos.x = ci.ptScreenPos.x * desktophorzres / horzres - clip_rect.left - info.xHotspot; | ||||
|             pos.y = ci.ptScreenPos.y * desktopvertres / vertres - clip_rect.top - info.yHotspot; | ||||
|         } | ||||
|  | ||||
|         //that would keep the correct location of mouse with hidpi screens | ||||
|         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", | ||||
|                 ci.ptScreenPos.x, ci.ptScreenPos.y, pos.x, pos.y); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user