Skip to content
  • Alexander Larsson's avatar
    Track direct window cairo access and avoid tricks when used · e9da5b95
    Alexander Larsson authored
    When a cairo surface is requested for direct window access (i.e. not
    when double-buffering) we can't really track when the actual drawing happens
    as cairo drawing is not virtualized. This means we can't properly flush
    any outstanding window moves or implicit paints.
    
    This actually causes problems with e.g. abiword (bug #606009) where they
    draw without double-buffering. If you press down it scrolls the window
    and then draws the caret, but the caret drawing does not flush the
    outstanding move from the scroll, so the caret gets drawn on the wrong
    screen.
    
    We fix this by never allowing either implicit paints or outstanding window
    moves on impl-windows where any windows related to it has an outstanding
    direct cairo surface. Luckily this is not very common so in practice this
    doesn't matter much.
    e9da5b95