randr: Add "RANDR Emulation" property
When RANDR is emulated as with Xwayland, the actual output configuration does not change as RANDR is emulated using viewports. As a result, changes to the CRTC may be skipped, resulting in the configuration being (wrongly) assumed to be unchanged. Add a new output property "RANDR Emulation" that the DDX can set to force RRCrtcSet() to reconfigure the CRTC regardless of the change. Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
		
							parent
							
								
									972603845e
								
							
						
					
					
						commit
						0904421f57
					
				|  | @ -709,6 +709,25 @@ rrCheckPixmapBounding(ScreenPtr pScreen, | |||
|     return TRUE; | ||||
| } | ||||
| 
 | ||||
| #define XRANDR_EMULATION_PROP "RANDR Emulation" | ||||
| static Bool | ||||
| rrCheckEmulated(RROutputPtr output) | ||||
| { | ||||
|     const char *emulStr = XRANDR_EMULATION_PROP; | ||||
|     Atom emulProp; | ||||
|     RRPropertyValuePtr val; | ||||
| 
 | ||||
|     emulProp = MakeAtom(emulStr, strlen(emulStr), FALSE); | ||||
|     if (emulProp == None) | ||||
|         return FALSE; | ||||
| 
 | ||||
|     val = RRGetOutputProperty(output, emulProp, TRUE); | ||||
|     if (val && val->data) | ||||
|         return !!val->data; | ||||
| 
 | ||||
|     return FALSE; | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Request that the Crtc be reconfigured | ||||
|  */ | ||||
|  | @ -728,9 +747,11 @@ RRCrtcSet(RRCrtcPtr crtc, | |||
| 
 | ||||
|     crtcChanged = FALSE; | ||||
|     for (o = 0; o < numOutputs; o++) { | ||||
|         if (outputs[o] && outputs[o]->crtc != crtc) { | ||||
|             crtcChanged = TRUE; | ||||
|             break; | ||||
|         if (outputs[o]) { | ||||
|             if (rrCheckEmulated(outputs[o]) || (outputs[o]->crtc != crtc)) { | ||||
|                 crtcChanged = TRUE; | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue