[Tizen] Do not call gl functions during shutdown
[platform/core/uifw/dali-adaptor.git] / dali / internal / graphics / gles-impl / gles-graphics-buffer.cpp
index 2e4d4dc..ed72c22 100644 (file)
@@ -83,10 +83,16 @@ void Buffer::InitializeCPUBuffer()
 
 void Buffer::InitializeGPUBuffer()
 {
-  auto gl = mController.GetGL();
+  auto context = mController.GetCurrentContext();
+  auto gl      = mController.GetGL();
+  if(!gl || !context)
+  {
+    return;
+  }
+
   gl->GenBuffers(1, &mBufferId);
-  gl->BindBuffer(GL_ARRAY_BUFFER, mBufferId);
-  gl->BufferData(GL_ARRAY_BUFFER, mCreateInfo.size, nullptr, GL_STATIC_DRAW);
+  context->BindBuffer(GL_ARRAY_BUFFER, mBufferId);
+  gl->BufferData(GL_ARRAY_BUFFER, GLsizeiptr(mCreateInfo.size), nullptr, GL_STATIC_DRAW);
 }
 
 void Buffer::DestroyResource()
@@ -109,7 +115,10 @@ void Buffer::DestroyResource()
   else
   {
     auto gl = mController.GetGL();
-    gl->DeleteBuffers(1, &mBufferId);
+    if(gl)
+    {
+      gl->DeleteBuffers(1, &mBufferId);
+    }
   }
 }
 
@@ -120,7 +129,12 @@ void Buffer::DiscardResource()
 
 void Buffer::Bind(Graphics::BufferUsage bindingTarget) const
 {
-  auto gl = mController.GetGL();
+  auto context = mController.GetCurrentContext();
+  auto gl      = mController.GetGL();
+  if(!gl || !context)
+  {
+    return;
+  }
 
   // CPU allocated buffer may be bound only as Uniform Buffer
   // on special binding point
@@ -139,12 +153,12 @@ void Buffer::Bind(Graphics::BufferUsage bindingTarget) const
     {
       case Graphics::BufferUsage::VERTEX_BUFFER:
       {
-        gl->BindBuffer(GL_ARRAY_BUFFER, mBufferId);
+        context->BindBuffer(GL_ARRAY_BUFFER, mBufferId);
         break;
       }
       case Graphics::BufferUsage::INDEX_BUFFER:
       {
-        gl->BindBuffer(GL_ELEMENT_ARRAY_BUFFER, mBufferId);
+        context->BindBuffer(GL_ELEMENT_ARRAY_BUFFER, mBufferId);
         break;
       }
       default:
@@ -155,4 +169,4 @@ void Buffer::Bind(Graphics::BufferUsage bindingTarget) const
   }
 }
 
-} // namespace Dali::Graphics::GLES
\ No newline at end of file
+} // namespace Dali::Graphics::GLES