0025133: TKOpenGl - Crash on closing a view containing presentations with capping
[occt.git] / src / OpenGl / OpenGl_Element.hxx
index 2490656..a548298 100644 (file)
@@ -4,8 +4,8 @@
 //
 // This file is part of Open CASCADE Technology software library.
 //
-// This library is free software; you can redistribute it and / or modify it
-// under the terms of the GNU Lesser General Public version 2.1 as published
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
 // by the Free Software Foundation, with special exception defined in the file
 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
 // distribution for complete text of the license and disclaimer of any warranty.
@@ -30,11 +30,17 @@ public:
   virtual void Render (const Handle(OpenGl_Workspace)& theWorkspace) const = 0;
 
   //! Release GPU resources.
-  virtual void Release (const Handle(OpenGl_Context)& theContext) = 0;
-
+  //! Pointer to the context is used because this method might be called
+  //! when the context is already being destroyed and usage of a handle
+  //! would be unsafe
+  virtual void Release (OpenGl_Context* theContext) = 0;
+
+  //! Pointer to the context is used because this method might be called
+  //! when the context is already being destroyed and usage of a handle
+  //! would be unsafe
   template <typename theResource_t>
-  static void Destroy (const Handle(OpenGl_Context)& theContext,
-                       theResource_t*&               theElement)
+  static void Destroy (OpenGl_Context* theContext,
+                       theResource_t*& theElement)
   {
     if (theElement == NULL)
     {