Skip to content
  • Jacopo De Simoi's avatar
    Fix fullRepaints loop · a2fc6f8e
    Jacopo De Simoi authored
    The method paintSimpleScreen is responsible for redrawing the parts of
    the back-buffer that need updating using the buffer_age extension.
    The method fails to set correctly the damaged_region if, for some
    reason, one frame needs a repaint of the whole screen. In this case
    the backbuffer will request a full-screen repaint at some future
    frame, so the dirty region will be extended to full-screen. However,
    in this case the repaintRegion is not subtracted from the
    damaged_region (as it is done for the non fullRepaints case below
    --see the comment below--) and the damaged_region is reported to be the full
    screen again. This causes all the subsequent frames to be reported
    with a full screen damage, which causes some penalty, until
    paintGenericScreen is invoked for some reason and then the damage gets
    reset correctly.
    
    We now set the correct damage and prevent falling into the fullRepaint
    loop.
    a2fc6f8e