class_docstr: Class that provides a series of GL functions that do not fit
  in the object oriented part of gloo. An instance of this class is
  associated with each canvas.
docstr: Wait for GL commands to to finish
  
  This creates a GLIR command for glFinish and then processes the
  GLIR commands. If the GLIR interpreter is remote (e.g. WebGL), this
  function will return before GL has finished processing the commands.
docstr_tok: ["Wait","for","GL","commands","to","to","finish","This","creates","a","GLIR","command","for","glFinish","and","then","processes","the","GLIR","commands",".","If","the","GLIR","interpreter","is","remote","(","e.g",".","WebGL",")",",","this","function","will","return","before","GL","has","finished","processing","the","commands","."]
code: def finish(self):
      """Wait for GL commands to to finish
  
      This creates a GLIR command for glFinish and then processes the
      GLIR commands. If the GLIR interpreter is remote (e.g. WebGL), this
      function will return before GL has finished processing the commands.
      """
      if hasattr(self, "flush_commands"):
          context = self
      else:
          context = get_current_canvas().context
      context.glir.command("FUNC", "glFinish")
      context.flush_commands()
  
imports: import numpy
  from copy import deepcopy
  from .None import gl
  from ..color import Color
  from ..util import logger
label_desc: Use image node_id 24 for calling the BaseGlooFunctions obj's underlying member method code with example usage: obj.finish() without return types