Skip to content
  • Daniel van Vugt's avatar
    clutter: Fix offscreen-effect painting of clones · 8655bc5d
    Daniel van Vugt authored and Marco Trevisan's avatar Marco Trevisan committed
    `ClutterOffscreenEffect` had been getting the wrong bounding box in the
    case of clones and descendents of clones, causing visibly incorrect
    clipping. This was due to `clutter_actor_get_paint_box` only ever being
    given the source actor during a paint (which is correct) and not the clone.
    Even if we weren't painting a clone but an offscreened descendent of a
    clone (like in gnome-shell's desktop zoom), we would get the wrong result.
    
    Fortunately we don't need to know the actual clone/actor being painted so
    don't need to call the problematic `clutter_actor_get_paint_box` at all.
    The solution is to only keep untransformed rendering in the FBO and leave
    the correct transformation for later. The correct clone/actor's
    transformation is already set for us as the current cogl modelview matrix
    by `clutter_actor_paint`.
    
    Bonus optimization: This all means we don't need to keep `last_matrix_drawn`
    or force a full repaint every time some part of the transformation change...
    8655bc5d