Skip to content
  • Adam Jackson's avatar
    glx: Reimplement context tags · a48dadc9
    Adam Jackson authored
    
    
    This would let you do a constant-time context lookup, but if that's your
    performance problem you have two problems.  Just use the context's XID
    as the tag value instead.
    
    In order to do this, we have to defer destroying a context until it
    actually goes unreferenced, as you're allowed to mention a context tag
    after you've (ostensibly) destroyed the context, as long as it's still
    your current context.  Thus, change DestroyContext to merely mark the
    context as dead if it's a current context, and call down to actual
    resource destruction (and XID reclamation) in StopUsingContext.
    
    Also, stop trying to delete context state from DrawableGone.  This was
    always broken, as GLX does not say that contexts are destroyed when
    their drawables are destroyed.  But with the above change to defer
    context destruction, this would trigger a server crash on client exit as
    we'd free the context state twice.
    
    Reviewed-by: default avatarEric Anholt <eric@anholt.net>
    Signed-off-by: default avatarAdam Jackson <ajax@redhat.com>
    a48dadc9