|  |  | @ -53,6 +53,7 @@ | 
		
	
		
			
			|  |  |  | #include <termios.h>        // POSIX terminal control definitions - tcgetattr(), tcsetattr() | 
		
	
		
			
			|  |  |  | #include <pthread.h>        // POSIX threads management (inputs reading) | 
		
	
		
			
			|  |  |  | #include <dirent.h>         // POSIX directory browsing | 
		
	
		
			
			|  |  |  | #include <limits.h>         // INT_MAX | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | #include <sys/ioctl.h>      // Required for: ioctl() - UNIX System call for device-specific input/output operations | 
		
	
		
			
			|  |  |  | #include <linux/kd.h>       // Linux: KDSKBMODE, K_MEDIUMRAM constants definition | 
		
	
	
		
			
				|  |  | @ -2150,6 +2151,8 @@ static int FindNearestConnectorMode(const drmModeConnector *connector, uint widt | 
		
	
		
			
			|  |  |  | if (NULL == connector) return -1; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | int nearestIndex = -1; | 
		
	
		
			
			|  |  |  | int minUnusedPixels = INT_MAX; | 
		
	
		
			
			|  |  |  | int minFpsDiff = INT_MAX; | 
		
	
		
			
			|  |  |  | for (int i = 0; i < platform.connector->count_modes; i++) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | const drmModeModeInfo *const mode = &platform.connector->modes[i]; | 
		
	
	
		
			
				|  |  | @ -2169,21 +2172,17 @@ static int FindNearestConnectorMode(const drmModeConnector *connector, uint widt | 
		
	
		
			
			|  |  |  | continue; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | if (nearestIndex < 0) | 
		
	
		
			
			|  |  |  | const int unusedPixels = (mode->hdisplay - width) * (mode->vdisplay - height); | 
		
	
		
			
			|  |  |  | const int fpsDiff = mode->vrefresh - fps; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | if ((unusedPixels < minUnusedPixels) || | 
		
	
		
			
			|  |  |  | ((unusedPixels == minUnusedPixels) && (abs(fpsDiff) < abs(minFpsDiff))) || | 
		
	
		
			
			|  |  |  | ((unusedPixels == minUnusedPixels) && (abs(fpsDiff) == abs(minFpsDiff)) && (fpsDiff > 0))) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | nearestIndex = i; | 
		
	
		
			
			|  |  |  | continue; | 
		
	
		
			
			|  |  |  | minUnusedPixels = unusedPixels; | 
		
	
		
			
			|  |  |  | minFpsDiff = fpsDiff; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | const int widthDiff = abs(mode->hdisplay - width); | 
		
	
		
			
			|  |  |  | const int heightDiff = abs(mode->vdisplay - height); | 
		
	
		
			
			|  |  |  | const int fpsDiff = abs(mode->vrefresh - fps); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | const int nearestWidthDiff = abs(platform.connector->modes[nearestIndex].hdisplay - width); | 
		
	
		
			
			|  |  |  | const int nearestHeightDiff = abs(platform.connector->modes[nearestIndex].vdisplay - height); | 
		
	
		
			
			|  |  |  | const int nearestFpsDiff = abs(platform.connector->modes[nearestIndex].vrefresh - fps); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | if ((widthDiff < nearestWidthDiff) || (heightDiff < nearestHeightDiff) || (fpsDiff < nearestFpsDiff)) nearestIndex = i; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | return nearestIndex; | 
		
	
	
		
			
				|  |  |  |