anchor.diff:          match ContextHandle.Current with
               | Some handle -> handle.ReleaseCurrent()
               | _ -> ()
  -
  -        handle.MakeCurrent(window)
  +        
  +        let mutable retry = true
  +        while retry do
  +            try
  +                handle.MakeCurrent(window) // wglMakeCurrent 
  +                retry <- false
  +            with 
  +            | :? OpenTK.Graphics.GraphicsContextException as ex -> 
  +                    Log.line "context error triggered"
  +                    let args = ContextErrorEventArgs(ex.Message)
  +                    contextError.Trigger(x, args)
  +                    retry <- args.Retry
  +                    if retry then
  +                        Log.line "application requested retry"
  +                        Thread.Sleep 100
  +                    else
  +                        reraise()
  +
           ContextHandle.Current <- Some x
   
           GLVM.hglCleanup((unbox<IGraphicsContextInternal> handle).Context.Handle)
  
positive.code: open OpenTK.Graphics.OpenGL4
  open Aardvark.Base
  
  
  /// <summary>
  /// a handle represents a GL context which can be made current and released
  
negative.code:                 | _ -> None
  
          and set v = current.Value <- v
          
      [<CLIEvent>]
      static member ContextError = contextError.Publish
  
      member x.GetProcAddress(name : string) =
          (handle |> unbox<IGraphicsContextInternal>).GetAddress(name)
  