xfree86/modes: Take rotation into account when checking mode size
Assume that a mode can be used in either landscape or portrait orientation. I suppose the correct thing to do would be to collect all the supported rotations from the CRTCs that can be used with a specific output, but that information doesn't seem to be readily available when these checks are done. So just assume that either orientation is fine. Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
		
							parent
							
								
									0ce25fd790
								
							
						
					
					
						commit
						2e781457d4
					
				| 
						 | 
					@ -355,15 +355,32 @@ xf86ValidateModesSize(ScrnInfoPtr pScrn, DisplayModePtr modeList,
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    DisplayModePtr mode;
 | 
					    DisplayModePtr mode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (maxPitch <= 0)
 | 
				
			||||||
 | 
						    maxPitch = MAXINT;
 | 
				
			||||||
 | 
					    if (maxX <= 0)
 | 
				
			||||||
 | 
						    maxX = MAXINT;
 | 
				
			||||||
 | 
					    if (maxY <= 0)
 | 
				
			||||||
 | 
						    maxY = MAXINT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (mode = modeList; mode != NULL; mode = mode->next) {
 | 
					    for (mode = modeList; mode != NULL; mode = mode->next) {
 | 
				
			||||||
	if (maxPitch > 0 && mode->HDisplay > maxPitch)
 | 
						if ((xf86ModeWidth(mode, RR_Rotate_0) > maxPitch ||
 | 
				
			||||||
	    mode->status = MODE_BAD_WIDTH;
 | 
						     xf86ModeWidth(mode, RR_Rotate_0) > maxX ||
 | 
				
			||||||
 | 
						     xf86ModeHeight(mode, RR_Rotate_0) > maxY) &&
 | 
				
			||||||
 | 
						    (xf86ModeWidth(mode, RR_Rotate_90) > maxPitch ||
 | 
				
			||||||
 | 
						     xf86ModeWidth(mode, RR_Rotate_90) > maxX ||
 | 
				
			||||||
 | 
						     xf86ModeHeight(mode, RR_Rotate_90) > maxY)) {
 | 
				
			||||||
 | 
						    if (xf86ModeWidth(mode, RR_Rotate_0) > maxPitch ||
 | 
				
			||||||
 | 
							xf86ModeWidth(mode, RR_Rotate_90) > maxPitch)
 | 
				
			||||||
 | 
							mode->status = MODE_BAD_WIDTH;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (maxX > 0 && mode->HDisplay > maxX)
 | 
						    if (xf86ModeWidth(mode, RR_Rotate_0) > maxX ||
 | 
				
			||||||
	    mode->status = MODE_VIRTUAL_X;
 | 
							xf86ModeWidth(mode, RR_Rotate_90) > maxX)
 | 
				
			||||||
 | 
							mode->status = MODE_VIRTUAL_X;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (maxY > 0 && mode->VDisplay > maxY)
 | 
						    if (xf86ModeHeight(mode, RR_Rotate_0) > maxY ||
 | 
				
			||||||
	    mode->status = MODE_VIRTUAL_Y;
 | 
							xf86ModeHeight(mode, RR_Rotate_90) > maxY)
 | 
				
			||||||
 | 
							mode->status = MODE_VIRTUAL_Y;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (mode->next == modeList)
 | 
						if (mode->next == modeList)
 | 
				
			||||||
	    break;
 | 
						    break;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue