Constrain Cirque Pinnacle coordinates (#17803)
Static x & y should be the same type as touchData.xValue & touchData.yValue: uint16_t. Their delta could be larger than int8_t and should be constrained to mouse_xy_report_t.
This commit is contained in:
		
							parent
							
								
									c982d6c5e3
								
							
						
					
					
						commit
						b8b2e99976
					
				
					 1 changed files with 6 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -119,7 +119,7 @@ void cirque_pinnacle_configure_cursor_glide(float trigger_px) {
 | 
			
		|||
report_mouse_t cirque_pinnacle_get_report(report_mouse_t mouse_report) {
 | 
			
		||||
    pinnacle_data_t   touchData = cirque_pinnacle_read_data();
 | 
			
		||||
    mouse_xy_report_t report_x = 0, report_y = 0;
 | 
			
		||||
    static mouse_xy_report_t x = 0, y = 0;
 | 
			
		||||
    static uint16_t   x = 0, y = 0;
 | 
			
		||||
#    ifdef POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE
 | 
			
		||||
    cursor_glide_t    glide_report = {0};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -154,8 +154,8 @@ report_mouse_t cirque_pinnacle_get_report(report_mouse_t mouse_report) {
 | 
			
		|||
 | 
			
		||||
    if (!cirque_pinnacle_gestures(&mouse_report, touchData)) {
 | 
			
		||||
        if (x && y && touchData.xValue && touchData.yValue) {
 | 
			
		||||
            report_x = (mouse_xy_report_t)(touchData.xValue - x);
 | 
			
		||||
            report_y = (mouse_xy_report_t)(touchData.yValue - y);
 | 
			
		||||
            report_x = CONSTRAIN_HID_XY((int16_t)(touchData.xValue - x));
 | 
			
		||||
            report_y = CONSTRAIN_HID_XY((int16_t)(touchData.yValue - y));
 | 
			
		||||
        }
 | 
			
		||||
        x = touchData.xValue;
 | 
			
		||||
        y = touchData.yValue;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue