ProcessIdle method added to Adaptor.
[platform/core/uifw/dali-adaptor.git] / dali / internal / system / windows / callback-manager-win.cpp
index 539daa3..b840cc5 100755 (executable)
@@ -60,7 +60,10 @@ bool WinCallbackManager::AddIdleCallback( CallbackBase* callback, bool hasReturn
     return false;\r
   }\r
 \r
+  mCallbacks.insert(callback);\r
+\r
   WindowsPlatformImplementation::PostWinThreadMessage( WIN_CALLBACK_EVENT, reinterpret_cast<uint64_t>(callback), 0 );\r
+\r
   return true;\r
 }\r
 \r
@@ -69,6 +72,24 @@ void WinCallbackManager::RemoveIdleCallback( CallbackBase* callback )
   //Wait for deal\r
 }\r
 \r
+bool WinCallbackManager::ProcessIdle()\r
+{\r
+  const bool idleProcessed = !mCallbacks.empty();\r
+\r
+  for (CallbackBase* cb : mCallbacks)\r
+  {\r
+    Dali::CallbackBase::Execute(*cb);\r
+  }\r
+  mCallbacks.clear();\r
+\r
+  return idleProcessed;\r
+}\r
+\r
+void WinCallbackManager::ClearIdleCallbacks()\r
+{\r
+  mCallbacks.clear();\r
+}\r
+\r
 bool WinCallbackManager::AddIdleEntererCallback( CallbackBase* callback )\r
 {\r
   return AddIdleCallback( callback, true );\r