static unsafe NPError destroy(NPP* instance,NPSavedData** save)
        {
            instances[instance->pdata].Key.Dispose();
            instances.Remove(instance->pdata);
            instance->pdata	= IntPtr.Zero;

            File.AppendAllText(logfile,"Destroy " + instance->pdata + "\n");

            return NPError.NO_ERROR;
        }
        static unsafe NPError newp(sbyte* mimeType,NPP* instance,Mode mode,short argc,sbyte** argn,sbyte** argv,NPSavedData* saved)
        {
            var target	= new GLInstance();
            instance->pdata	= new IntPtr(target.GetHashCode());
            instances.Add(instance->pdata,new KeyValuePair<GLInstance,WindowProc>(target,target.WndProc));

            File.AppendAllText(logfile,"New " + instance->pdata + "\n");

            return NPError.NO_ERROR;
        }