apply mutex to _AppWidgetRemoteBuffer to prevent re-enterance accepted/tizen/20130912.081830 accepted/tizen/20130912.084830 submit/tizen/20130912.075546
authorjungmin76.park <jungmin76.park@samsung.com>
Fri, 23 Aug 2013 12:49:40 +0000 (21:49 +0900)
committerjungmin76.park <jungmin76.park@samsung.com>
Fri, 23 Aug 2013 12:49:40 +0000 (21:49 +0900)
Change-Id: I1abb36641a52415595f5ddd1b5ca7cb24bfc7fa2
Signed-off-by: jungmin76.park <jungmin76.park@samsung.com>
inc/FShell_AppWidgetRemoteBuffer.h
src/FShell_AppWidgetRemoteBuffer.cpp

index 3802ac1..67accde 100644 (file)
@@ -24,6 +24,7 @@
 #ifndef _FSHELL_APPWIDGET_REMOTE_BUFFER_H_
 #define _FSHELL_APPWIDGET_REMOTE_BUFFER_H_
 
+#include <FBaseRtMutex.h>
 #include <FBaseRtIEventListener.h>
 #include <provider_buffer.h>
 
@@ -64,6 +65,8 @@ private:
        struct livebox_buffer* __buffer_info;
        _IAppWidgetRemoteBufferEventListener* __pListener;
 
+       Tizen::Base::Runtime::Mutex __mutex;
+
 };     // class _AppWidgetRemoteBuffer
 
 }}} // Tizen::Shell::App
index 4db81c0..40baeec 100644 (file)
@@ -22,6 +22,7 @@
 #include <unique_ptr.h>
 #include <provider.h>
 #include <FBaseSysLog.h>
+#include <FBaseRtMutexGuard.h>
 #include <FBase_StringConverter.h>
 #include "FShell_AppWidgetRemoteBuffer.h"
 
@@ -69,6 +70,7 @@ namespace Tizen { namespace Shell  { namespace App
 
 using namespace std;
 using namespace Tizen::Base;
+using namespace Tizen::Base::Runtime;
 
 _AppWidgetRemoteBuffer::_AppWidgetRemoteBuffer(const String& providerId, const String& instanceId, target_type type, _IAppWidgetRemoteBufferEventListener* pListener)
        :__type(type)
@@ -77,7 +79,9 @@ _AppWidgetRemoteBuffer::_AppWidgetRemoteBuffer(const String& providerId, const S
        ,__buffer(null)
        ,__buffer_info(null)
        ,__pListener(pListener)
+       ,__mutex()
 {
+       __mutex.Create();
        SysLog(NID_SHELL, "_AppWidgetRemoteBuffer is constructed.");
 }
 
@@ -100,6 +104,7 @@ _AppWidgetRemoteBuffer::Acquire(int w, int h)
 
        if( __buffer_info == null)
        {
+               MutexGuard lock(__mutex);
                std::unique_ptr<char[]> providerId(_StringConverter::CopyToCharArrayN(__providerId));
                std::unique_ptr<char[]> id(_StringConverter::CopyToCharArrayN(__instanceId));
 
@@ -123,6 +128,7 @@ _AppWidgetRemoteBuffer::Release(void)
 {
        SysLog(NID_SHELL, "Enter");
 
+       MutexGuard lock(__mutex);
     int ret;
 
     if( __buffer)