Release resources regarding buffer explicitly on resizing Box if needed
authorYunchan Cho <yunchan.cho@samsung.com>
Tue, 9 Apr 2013 02:41:25 +0000 (11:41 +0900)
committerYunchan Cho <yunchan.cho@samsung.com>
Tue, 9 Apr 2013 05:03:48 +0000 (14:03 +0900)
[Issue#] N/A
[Problem] Sometimes existing resources regarding buffer is not released on resizing Box
[Cause] when ecore_evas_resize function is called,
        sometimes the function doesn't call specific callback regarding freeing resources that is registed by web-provider
[Solution] Beforing allocating new buffer on resizing Box,
           web-provider lets existing buffer be released explicitly if it has been not released yet.

Change-Id: I9efbceba92ffdf236a6cf018da608fb06265b777

src/Core/Buffer/RenderBuffer.cpp

index c8a31bb..7b5011f 100644 (file)
@@ -229,8 +229,13 @@ Evas* RenderBuffer::getCanvas()
 
 void* RenderBuffer::allocateCallback(void* data, int size)
 {
+    LogD("enter");
     RenderBuffer* buffer = static_cast<RenderBuffer*>(data);
 
+    if (buffer->m_bufferInfo) {
+        freeCallback(data, NULL);
+    }
+
     buffer->m_bufferInfo = buffer->acquireBuffer();
     if (!buffer->m_bufferInfo) {
         return NULL;
@@ -257,6 +262,7 @@ void* RenderBuffer::allocateCallback(void* data, int size)
 
 void RenderBuffer::freeCallback(void* data, void *pix)
 {
+    LogD("enter");
     RenderBuffer* buffer = static_cast<RenderBuffer*>(data);
     
     // destroy buffer