From 69ecc7469b4a54f8c674cd91d5250622e5a129ea Mon Sep 17 00:00:00 2001 From: HeeJu Kang Date: Mon, 8 Apr 2013 19:13:21 +0900 Subject: [PATCH] Fixed sync issue Change-Id: I85f1c4c05da35583dd3125da33df108558277f2f Signed-off-by: HeeJu Kang --- src/FShell_AppWidgetFrame.cpp | 2 ++ src/FShell_AppWidgetLayer.cpp | 17 ++++++++++++++++- src/FShell_AppWidgetLayer.h | 2 ++ src/FShell_AppWidgetPopup.cpp | 4 +++- src/FShell_AppWidgetPopupView.cpp | 3 ++- src/FShell_AppWidgetView.cpp | 4 +++- src/FShell_AppWidgetViewManager.cpp | 25 ++++++++++++++++++++++++- 7 files changed, 52 insertions(+), 5 deletions(-) diff --git a/src/FShell_AppWidgetFrame.cpp b/src/FShell_AppWidgetFrame.cpp index 420bf78..63afc95 100644 --- a/src/FShell_AppWidgetFrame.cpp +++ b/src/FShell_AppWidgetFrame.cpp @@ -230,6 +230,8 @@ _AppWidgetFrame::OnDraw(void) { __pAppWidgetFramePresenter->Draw(); } + + __pAppWidgetLayer->SetRenderEnabled(true); } }} // Tizen::Shell diff --git a/src/FShell_AppWidgetLayer.cpp b/src/FShell_AppWidgetLayer.cpp index 523378b..54c94f2 100644 --- a/src/FShell_AppWidgetLayer.cpp +++ b/src/FShell_AppWidgetLayer.cpp @@ -92,6 +92,7 @@ _AppWidgetLayer::_AppWidgetLayer(const FloatDimension& size) , __pRenderBuffer(null) , __bufferSize(0) , __pixmapId(-1) + , __rendered(true) { } @@ -168,6 +169,8 @@ _AppWidgetLayer::GetPixmapId(void) const void _AppWidgetLayer::SetLayerBounds(const FloatRectangle& bounds) { + SetRenderEnabled(false); + __size = FloatDimension(bounds.width, bounds.height); ecore_evas_resize(__pEcoreEvas.get(), __size.width, __size.height); @@ -261,7 +264,7 @@ _AppWidgetLayer::SyncPixmap(const FloatDimension& size) FILE* pFile = null; static int idx = 0; char filename[1024]; - snprintf(filename, sizeof(filename), "/opt/out%d.raw", idx++); + snprintf(filename, sizeof(filename), "/tmp/provider%d.raw", idx++); pFile = fopen(filename, "w+b"); if (pFile) { @@ -322,8 +325,20 @@ CATCH: } void +_AppWidgetLayer::SetRenderEnabled(bool enable) +{ + __rendered = enable; +} + +void _AppWidgetLayer::OnRendered(void) { + if (!__rendered) + { + SysLog(NID_UI_CTRL, "do not sync"); + return; + } + if (__pixmapId == -1) { __pixmapId = AcquirePixmap(); diff --git a/src/FShell_AppWidgetLayer.h b/src/FShell_AppWidgetLayer.h index db60470..fd32e4c 100644 --- a/src/FShell_AppWidgetLayer.h +++ b/src/FShell_AppWidgetLayer.h @@ -60,6 +60,7 @@ public: void FreeCanvas(void* pCanvas); int EventHandler(int eventType, double timestamp, double x, double y); result SyncPixmap(const Tizen::Graphics::FloatDimension& size); + void SetRenderEnabled(bool enable); void OnRendered(void); virtual result RegisterTouchEventListener(void); @@ -99,6 +100,7 @@ private: void* __pRenderBuffer; int __bufferSize; int __pixmapId; + bool __rendered; }; }} // Tizen::Shell diff --git a/src/FShell_AppWidgetPopup.cpp b/src/FShell_AppWidgetPopup.cpp index d3e3ed0..3a854dc 100644 --- a/src/FShell_AppWidgetPopup.cpp +++ b/src/FShell_AppWidgetPopup.cpp @@ -104,7 +104,7 @@ _AppWidgetPopupLayer::AcquirePixmap(void) SystemTime::GetTicks(ticks); SysLog(NID_UI_CTRL, "%lld", ticks); - SysLog(NID_UI_CTRL, "pixmapId(%d) size(%d %d)", pixmapId, __size.width, __size.height); + SysLog(NID_UI_CTRL, "pixmapId(%d) size(%f %f)", pixmapId, __size.width, __size.height); return pixmapId; } @@ -368,6 +368,8 @@ _AppWidgetPopup::OnDraw(void) { __pAppWidgetPopupPresenter->Draw(); } + + __pAppWidgetPopupLayer->SetRenderEnabled(true); } }} // Tizen::Shell diff --git a/src/FShell_AppWidgetPopupView.cpp b/src/FShell_AppWidgetPopupView.cpp index ed8bb20..b16916a 100644 --- a/src/FShell_AppWidgetPopupView.cpp +++ b/src/FShell_AppWidgetPopupView.cpp @@ -462,6 +462,7 @@ _AppWidgetPopupView::OnAppWidgetUpdated(const Tizen::Graphics::Bitmap& bitmap, c if (!__firstUpdated) { + Draw(true); PlayAnimation(true); __firstUpdated = true; } @@ -579,7 +580,7 @@ _AppWidgetPopupView::OnPixmapDamaged(void* pData, int type, void* pEvent) Ecore_X_Event_Damage* pDamageEvent = static_cast(pEvent); SysTryReturn(NID_UI_CTRL, pDamageEvent != null, ECORE_CALLBACK_PASS_ON, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid."); - int pixmap = pPopupView->__pixmap; + unsigned int pixmap = static_cast(pPopupView->__pixmap); SysTryReturn(NID_UI_CTRL, pDamageEvent->drawable == pixmap, ECORE_CALLBACK_PASS_ON, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid [%d %d].", pDamageEvent->drawable, pixmap); int x = 0; diff --git a/src/FShell_AppWidgetView.cpp b/src/FShell_AppWidgetView.cpp index 888b405..697f894 100644 --- a/src/FShell_AppWidgetView.cpp +++ b/src/FShell_AppWidgetView.cpp @@ -20,6 +20,8 @@ */ #include +#include +#include #include #include #include @@ -713,7 +715,7 @@ _AppWidgetView::OnPixmapDamaged(void* pData, int type, void* pEvent) Ecore_X_Event_Damage* pDamageEvent = static_cast(pEvent); SysTryReturn(NID_UI_CTRL, pDamageEvent != null, ECORE_CALLBACK_PASS_ON, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid."); - int pixmap = pAppWidgetView->__pixmap; + unsigned int pixmap = static_cast(pAppWidgetView->__pixmap); SysTryReturn(NID_UI_CTRL, pDamageEvent->drawable == pixmap, ECORE_CALLBACK_PASS_ON, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid [%d %d].", pDamageEvent->drawable, pixmap); int x = 0; diff --git a/src/FShell_AppWidgetViewManager.cpp b/src/FShell_AppWidgetViewManager.cpp index 6ef9901..ab1057f 100644 --- a/src/FShell_AppWidgetViewManager.cpp +++ b/src/FShell_AppWidgetViewManager.cpp @@ -20,6 +20,8 @@ */ #include +#include +#include #include #include extern "C" @@ -51,6 +53,7 @@ extern "C" #include "FShell_AppWidgetPopupView.h" //#define _PIXMAP_TEST +//#define _BUFFER_TEST #if defined(_PIXMAP_TEST) extern "C" @@ -576,6 +579,26 @@ _AppWidgetViewManager::GetBitmapN(void* pBuffer, const FloatDimension& size) con const int BITS_PER_PIXEL = 32; int length = size.width * size.height * BITS_PER_PIXEL / 8; +#if defined(_BUFFER_TEST) + { + FILE* pFile = null; + static int idx = 0; + char filename[1024]; + snprintf(filename, sizeof(filename), "/tmp/view%d.raw", idx++); + pFile = fopen(filename, "w+b"); + if (pFile) + { + fwrite(pBuffer, length, 1, pFile); + fclose(pFile); + SysLog(NID_UI_CTRL, "_BUFFER_TEST: buffer (0x%x) size (%d) width(%f) height(%f)", pBuffer, length, size.width, size.height); + } + else + { + SysLog(NID_UI_CTRL, "File open failed: (%s) buffer (0x%x) size (%d)", strerror(errno), pBuffer, length); + } + } +#endif // _BUFFER_TEST + unique_ptr pByteBuffer(new (std::nothrow) ByteBuffer()); SysTryReturn(NID_UI_CTRL, pByteBuffer, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient."); @@ -862,7 +885,7 @@ _AppWidgetViewManager::OnAppWidgetResized(livebox* pAppWidget, int ret, void* pD _AppWidgetViewManager* pAppWidgetViewManager = static_cast<_AppWidgetViewManager*>(pData); SysTryReturnVoidResult(NID_UI_CTRL, pAppWidgetViewManager, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid."); - pAppWidgetViewManager->OnAppWidgetUpdated(pAppWidget); +// pAppWidgetViewManager->OnAppWidgetUpdated(pAppWidget); } void -- 2.7.4