Skip to content
  • Hans de Goede's avatar
    xrandrprovider: Do not use separate lists for unbound / source / offload slaves · 5c7af02b
    Hans de Goede authored
    
    
    A single provider can be both a offload and source slave at the same time,
    the use of seperate lists breaks in this case e.g. :
    
    xrandr --listproviders
    Providers: number : 2
    Provider 0: id: 0x7b cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 2 associated providers: 0 name:modesetting
    Provider 1: id: 0x46 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 5 associated providers: 0 name:modesetting
    
    xrandr --setprovideroutputsource 1 0x7b
    xrandr --listproviders
    Providers: number : 2
    Provider 0: id: 0x7b cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 2 associated providers: 1 name:modesetting
    Provider 1: id: 0x46 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 5 associated providers: 1 name:modesetting
    
    xrandr --setprovideroffloadsink 1 0x7b
    xrandr --listproviders
    Providers: number : 3
    Provider 0: id: 0x7b cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 2 associated providers: 2 name:modesetting
    Provider 1: id: 0x46 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 5 associated providers: 2 name:modesetting
    Provider 2: id: 0x46 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 5 associated providers: 2 name:modesetting
    
    Not good. The problem is that the provider with id 0x46 now is on both
    the output_slave_list and the offload_slave_list of the master screen.
    
    This commit fixes this by unifying all 3 lists into a single slaves list.
    
    Note that this does change the struct _Screen definition, so this is an ABI
    break. I do not expect any of the drivers to actually use the removed / changed
    fields so a recompile should suffice.
    
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
    5c7af02b