Adjust transformed cursor position to account for hotspot
This commit is contained in:
		
							parent
							
								
									eb222e6412
								
							
						
					
					
						commit
						8fd82c88e3
					
				| 
						 | 
					@ -37,6 +37,7 @@
 | 
				
			||||||
#include "xf86Crtc.h"
 | 
					#include "xf86Crtc.h"
 | 
				
			||||||
#include "xf86Modes.h"
 | 
					#include "xf86Modes.h"
 | 
				
			||||||
#include "xf86RandR12.h"
 | 
					#include "xf86RandR12.h"
 | 
				
			||||||
 | 
					#include "xf86CursorPriv.h"
 | 
				
			||||||
#include "X11/extensions/render.h"
 | 
					#include "X11/extensions/render.h"
 | 
				
			||||||
#define DPMS_SERVER
 | 
					#define DPMS_SERVER
 | 
				
			||||||
#include "X11/extensions/dpms.h"
 | 
					#include "X11/extensions/dpms.h"
 | 
				
			||||||
| 
						 | 
					@ -321,10 +322,18 @@ xf86_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    if (crtc->transform_in_use)
 | 
					    if (crtc->transform_in_use)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
						ScreenPtr	screen = scrn->pScreen;
 | 
				
			||||||
 | 
						xf86CursorScreenPtr ScreenPriv =
 | 
				
			||||||
 | 
						    (xf86CursorScreenPtr)dixLookupPrivate(&screen->devPrivates,
 | 
				
			||||||
 | 
											  xf86CursorScreenKey);
 | 
				
			||||||
	PictVector	v;
 | 
						PictVector	v;
 | 
				
			||||||
 | 
						x += ScreenPriv->HotX;
 | 
				
			||||||
 | 
						y += ScreenPriv->HotY;
 | 
				
			||||||
	v.vector[0] = IntToxFixed (x); v.vector[1] = IntToxFixed (y); v.vector[2] = IntToxFixed(1);
 | 
						v.vector[0] = IntToxFixed (x); v.vector[1] = IntToxFixed (y); v.vector[2] = IntToxFixed(1);
 | 
				
			||||||
	PictureTransformPoint (&crtc->framebuffer_to_crtc, &v);
 | 
						PictureTransformPoint (&crtc->framebuffer_to_crtc, &v);
 | 
				
			||||||
	x = xFixedToInt (v.vector[0]); y = xFixedToInt (v.vector[1]);
 | 
						x = xFixedToInt (v.vector[0]); y = xFixedToInt (v.vector[1]);
 | 
				
			||||||
 | 
						x -= ScreenPriv->HotX;
 | 
				
			||||||
 | 
						y -= ScreenPriv->HotY;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue