Skip to content
  • Daniel Stone's avatar
    Change boolean repaint_scheduled to quad-state enum · 05df8c16
    Daniel Stone authored and Pekka Paalanen's avatar Pekka Paalanen committed
    
    
    repaint_scheduled is actually cleverly a quad-state, disguised as a
    boolean. There are four possible conditions for the repaint loop to be
    in at any time:
      - loop idle; no repaint will occur until specifically requested, which
        may be never (repaint_scheduled == 0)
      - loop schedule to begin: the loop was previously idle, but due to a
        repaint-schedule request, we will call the start_repaint_loop hook
        in the next idle task
      - repaint scheduled: the compositor has definitively scheduled a
        repaint request for this output, which will occur in fixed time
      - awaiting repaint completion: the backend has not yet signaled
        completion of the last repaint request, and the compositor will not
        schedule another until it does so
    
    All but the first condition were previously conflated as
    repaint_scheduled == 1, but break them out into separate conditions to
    aid clarity, backed up by some asserts.
    
    Signed-off-by: default avatarDaniel Stone <daniels@collabora.com>
    Reviewed-by: default avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
    05df8c16