Fix blink issue 62/14862/1
authorHeeJu Kang <mobum.kang@samsung.com>
Mon, 9 Dec 2013 07:37:02 +0000 (16:37 +0900)
committerKeebong <keebong.bahn@samsung.com>
Mon, 13 Jan 2014 09:06:01 +0000 (18:06 +0900)
Change-Id: Iec09e2936493564fd6bd908e1e1c3a666fd93377
Signed-off-by: HeeJu Kang <mobum.kang@samsung.com>
src/FShell_AppWidgetLayer.cpp
src/FShell_AppWidgetLayer.h
src/FShell_AppWidgetPopup.cpp

index f7660a8..e593ba2 100644 (file)
@@ -121,6 +121,7 @@ _AppWidgetLayer::_AppWidgetLayer(const Tizen::Base::String& providerId, const Fl
        , __bufferSize(0)
        , __pixmapId(-1)
        , __flush(false)
+       , __constructing(false)
        , __pWindow(null)
 {
        FloatDimension physicalSize = _CoordinateSystemUtils::Transform(__size);
@@ -138,6 +139,7 @@ _AppWidgetLayer::_AppWidgetLayer(const Tizen::Base::String& providerId, const Fl
        }
 
        __providerId = _AppWidgetProviderManagerImpl::GetInstance()->GetCurrentInstanceId();
+       SysSecureLog(NID_SHELL, "__providerId (%ls)", __providerId.GetPointer());
 }
 
 _AppWidgetLayer::~_AppWidgetLayer(void)
@@ -173,12 +175,12 @@ _AppWidgetLayer::OnConstructed(void)
 {
        result r = E_SUCCESS;
 
+       __constructing = true;
        __pAppWidgetBuffer->Initialize();
 
        unique_ptr<Ecore_Evas, _EcoreEvasDeleter> pEcoreEvas(ecore_evas_buffer_allocfunc_new(__physicalSize.width, __physicalSize.height, AllocRenderBuffer, FreeRenderBuffer, this));
        SysTryReturn(NID_SHELL, pEcoreEvas, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
 
-       ecore_evas_alpha_set(pEcoreEvas.get(), EINA_TRUE);
        ecore_evas_manual_render_set(pEcoreEvas.get(), EINA_FALSE);
        ecore_evas_resize(pEcoreEvas.get(), __physicalSize.width, __physicalSize.height);
        ecore_evas_activate(pEcoreEvas.get());
@@ -193,7 +195,7 @@ _AppWidgetLayer::OnConstructed(void)
        SysTryReturn(NID_SHELL, pEvasObject, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
 
        evas_object_resize(pEvasObject.get(), __physicalSize.width, __physicalSize.height);
-       evas_object_color_set(pEvasObject.get(), 0, 0, 0, 255);
+//     evas_object_color_set(pEvasObject.get(), 0, 0, 0, 255);
 
        r = Initialize(pEvasObject.get());
        SysTryReturn(NID_SHELL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
@@ -212,10 +214,13 @@ _AppWidgetLayer::SetProviderId(const String& providerId)
 {
        __providerId = providerId;
 
-       __pixmapId = AcquirePixmap();
-       SysTryReturn(NID_SHELL, __pixmapId != -1, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
+       if (__pixmapId == -1)
+       {
+               __pixmapId = AcquirePixmap();
+               SysTryReturn(NID_SHELL, __pixmapId != -1, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
+       }
 
-       SysSecureLog(NID_SHELL, "pixmapId(%d) size(%f %f) physicalSize(%d %d)", __pixmapId, __size.width, __size.height, __physicalSize.width, __physicalSize.height);
+       SysSecureLog(NID_SHELL, "providerId (%ls) pixmapId(%d) size(%f %f) physicalSize(%d %d)", __providerId.GetPointer(), __pixmapId, __size.width, __size.height, __physicalSize.width, __physicalSize.height);
 
        result r = RegisterTouchEventListener();
        SysTryReturn(NID_SHELL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
@@ -284,7 +289,7 @@ _AppWidgetLayer::AllocCanvas(int size)
 
                __pRenderBuffer = __pAppWidgetBuffer->AllocBuffer(__pixmapId, __physicalSize);
                pBuffer = __pRenderBuffer;
-               __pAppWidgetBuffer->UnlockBuffer();
+//             __pAppWidgetBuffer->UnlockBuffer();
        }
 
        SysSecureLog(NID_SHELL, "buffer (0x%x 0x%x) size (%d) pixmap (%d)", __pTempBuffer, __pRenderBuffer, __bufferSize, __pixmapId);
@@ -373,7 +378,7 @@ _AppWidgetLayer::Sync(void)
 void
 _AppWidgetLayer::OnNativeCanvasPreRendered(void)
 {
-       if (!__flush)
+       if (!__flush && !__constructing)
        {
 //             SysLog(NID_SHELL, "ENTER (%d)", __type);
 
@@ -389,7 +394,7 @@ _AppWidgetLayer::OnNativeCanvasPreRendered(void)
 void
 _AppWidgetLayer::OnNativeCanvasPostRendered(void)
 {
-       if (!__flush)
+       if (!__flush && !__constructing)
        {
 //             SysLog(NID_SHELL, "ENTER (%d)", __type);
                __pAppWidgetBuffer->UnlockBuffer();
@@ -564,7 +569,13 @@ _AppWidgetLayer::Flush(void)
 {
        bool needed = IsFlushNeeded();
        __flush = true;
-       __pAppWidgetBuffer->LockBuffer();
+       
+       if (!__constructing)
+       {
+               __pAppWidgetBuffer->LockBuffer();
+       }
+
+       __constructing = false;
 
        if (needed)
        {
index e812955..b6b4f7b 100644 (file)
@@ -110,6 +110,7 @@ private:
        int __bufferSize;
        int __pixmapId;
        bool __flush;
+       bool __constructing;
        Tizen::Ui::_Window* __pWindow;
 };
 
index 95317f1..6673521 100644 (file)
@@ -94,17 +94,17 @@ _AppWidgetPopupLayer::RegisterTouchEventListener(void)
 int
 _AppWidgetPopupLayer::AcquirePixmap(void)
 {
-       long long ticks = 0;
+       /*long long ticks = 0;
        SystemTime::GetTicks(ticks);
        SysLog(NID_SHELL, "%lld", ticks);
-
+*/
        int pixmapId = -1;
 
        result r = _AppWidgetProviderManagerImpl::GetInstance()->AcquireRemoteBufferForPD(GetProviderId(), __physicalSize.width, __physicalSize.height, pixmapId);
        SysTryReturn(NID_SHELL, r == E_SUCCESS, -1, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       SystemTime::GetTicks(ticks);
-       SysLog(NID_SHELL, "%lld", ticks);
+       /*SystemTime::GetTicks(ticks);
+       SysLog(NID_SHELL, "%lld", ticks);*/
 
        SysSecureLog(NID_SHELL, "pixmapId(%d) size(%f %f) physicalSize(%d %d)", pixmapId, __size.width, __size.height, __physicalSize.width, __physicalSize.height);
 
@@ -193,7 +193,7 @@ _AppWidgetPopup::Initialize(const FloatDimension& size)
        r = SetBounds(bounds);
        SysTryReturn(NID_SHELL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       __pAppWidgetPopupLayer->SetLayerBounds(FloatRectangle(0.0f, 0.0f, 1.0f, 1.0f));
+       __pAppWidgetPopupLayer->SetLayerBounds(bounds);
        __pAppWidgetPopupLayer->SetShowState(false);
 
        __pAppWidgetPopupRootVisualElement->SetImplicitAnimationEnabled(false);
@@ -338,7 +338,7 @@ _AppWidgetPopup::UpdateClientBounds(const FloatDimension& size, FloatRectangle&
 result
 _AppWidgetPopup::CreateLayer(void)
 {
-       unique_ptr<_AppWidgetPopupLayer> pLayer(new (std::nothrow) _AppWidgetPopupLayer(GetProviderId(), FloatDimension(1.0f, 1.0f)));
+       unique_ptr<_AppWidgetPopupLayer> pLayer(new (std::nothrow) _AppWidgetPopupLayer(GetProviderId(), __appwidgetSize));
        SysTryReturn(NID_SHELL, pLayer, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
 
        result r = pLayer->Construct();