<div dir="ltr">Hi all,<div><br></div><div>Seeing Jonas effort to make xdg-shell stable, I'd like to clear something up before this is done.</div><div><br></div><div>The set_fullscreen request documentation mentions:</div><div><span style="white-space:pre-wrap">     </span>If the surface doesn't cover the whole output, the compositor will</div><div><span style="white-space:pre-wrap">   </span>position the surface in the center of the output and compensate with</div><div><span style="white-space:pre-wrap">     </span>black borders filling the rest of the output.</div><div><br></div><div>On the other hand, the fullscreen enum state documentation mentions:</div><div><div><span style="white-space:pre-wrap">     </span>  The surface is fullscreen. The window geometry specified in the configure</div><div><span style="white-space:pre-wrap">     </span>  event must be obeyed by the client.</div></div><div><br></div><div>While that is not contradictory, this would prevent a simple optimisation in embedded platforms, where you want to scale a surface fullscreen using wp_viewport, but keep its original aspect ratio (for a video, for example). In this case, to avoid a protocol error, you need to create a black surface with the fullscreen size, and center the original surface inside it using a subsurface. This might prevent direct rendering to a plane.</div><div><br></div><div>Since the compositor needs to handle adding black borders and center the surface anyway, I think we could reword the fullscreen state description to the following:</div><div><br></div><div>"The surface is fullscreen. At least one of the width and height properties specified in the configure event must be obeyed by the client."<br></div><div><br></div><div>What do you think ?</div><div><br></div><div>Regards,</div><div>-Arnaud</div></div>