Add unreleased controls logs for debugging
[platform/framework/native/uifw.git] / src / ui / FUi_ControlManager.cpp
index 9f68545..659a71b 100644 (file)
@@ -138,6 +138,28 @@ _UiPrintTree(int level)
                _UiPrintControl(*pWindow, true, level);
        }
 }
+
+_OSP_EXPORT_ void
+_UiPrintControlList(int level)
+{
+       _ControlManager* pControlManager = _ControlManager::GetInstance();
+       SysTryReturnVoidResult(NID_UI, pControlManager, E_SYSTEM, "[E_SYSTEM] System error occurred.");
+
+       int count = pControlManager->GetControlCount();
+       for (int i = 0; i< count; i++)
+       {
+               _Control* pControl = pControlManager->GetControl((count-1) - i);
+               if (pControl != null)
+               {
+                       SysSecureLog(NID_UI, "[Control Manager] pControl index %d", i);
+                       _UiPrintControl(*pControl, true, level);
+               }
+               else
+               {
+                       SysSecureLog(NID_UI, "[Control Manager] pControl is null");
+               }
+       }
+}
 }
 
 namespace Tizen { namespace Ui
@@ -207,6 +229,11 @@ _ControlManager::Register(_Control* pObject)
                return _ControlHandle();
        }
 
+       if (__pAllControlList)
+       {
+               __pAllControlList->Add(pObject);
+       }
+
        return __objectManager.Register(*pObject);
 }
 
@@ -219,6 +246,11 @@ _ControlManager::Release(const _ControlHandle& handle)
                SysLog(NID_UI, "A _Control Released()");
        }
 
+       if (__pAllControlList)
+       {
+               __pAllControlList->Remove(pObject);
+       }
+
        return __objectManager.Unregister(handle);
 }
 
@@ -305,6 +337,7 @@ _ControlManager::GetLogicalBaseScreenSize(void) const
 _ControlManager::_ControlManager(void) // [ToDo] exception check.
        : __pWindowList(null)
        , __pAllWindowList(null)
+       , __pAllControlList(null)
        , __isCoordinateSystemLogical(true)
        , __logicalCoordinateSystem(0)
        , __logicalBaseScreenSize(BASE_SCREEN_SIZE_NONE)
@@ -347,6 +380,9 @@ _ControlManager::_ControlManager(void) // [ToDo] exception check.
        __pAllWindowList = new (std::nothrow)LinkedListT<_Window*>;
        SysTryCatch(NID_UI, __pAllWindowList, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
 
+       __pAllControlList = new (std::nothrow)LinkedListT<_Control*>;
+       SysTryCatch(NID_UI, __pAllControlList, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+
        __pGestureList = new (std::nothrow)LinkedListT<_TouchGestureDetector*>;
        SysTryCatch(NID_UI, __pGestureList, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
 
@@ -375,6 +411,12 @@ CATCH:
                __pAllWindowList = null;
        }
 
+       if (__pAllControlList)
+       {
+               delete __pAllControlList;
+               __pAllControlList = null;
+       }
+
        if (__pGestureList)
        {
                delete __pGestureList;
@@ -386,6 +428,16 @@ _ControlManager::~_ControlManager(void)
 {
        _Clipboard::ReleaseInstance();
 
+       if (GetUsedHandleCount() != 0)
+       {
+               SysLog(NID_UI, "[Control Manager] The number of unreleased handle: %d", GetUsedHandleCount());
+       }
+
+       if (GetControlCount() != 0)
+       {
+               SysLog(NID_UI, "[Control Manager] The number of unreleased control: %d", GetControlCount());
+       }
+
        if (__pWindowList)
        {
                delete __pWindowList;
@@ -398,6 +450,12 @@ _ControlManager::~_ControlManager(void)
                __pAllWindowList = null;
        }
 
+       if (__pAllControlList)
+       {
+               delete __pAllControlList;
+               __pAllControlList = null;
+       }
+
        if (__pGestureList)
        {
                delete __pGestureList;
@@ -406,12 +464,6 @@ _ControlManager::~_ControlManager(void)
 
        DestroyEcoreEvasMgr();
 
-       if (GetUsedHandleCount() != 0)
-       {
-               SysLog(NID_UI, "[Control Manager] The number of unreleased controls: %d", GetUsedHandleCount());
-       }
-
-
        _IndicatorManager::ReleaseInstance();
 
        _DisplayManager::ReleaseInstance();
@@ -720,7 +772,7 @@ _ControlManager::CallOnDetachingFromMainTree(_Control& control)
                        pTop->SetFocusTraversalControl(&control, false);
                }
        }
-       
+
        r = control.GetControlDelegate().OnDetachingFromMainTree();
        SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
@@ -805,6 +857,21 @@ _ControlManager::CloseWindow(_Window& window) // [ToDo] exception check.
        return E_SUCCESS;
 }
 
+_Control*
+_ControlManager::GetControl(int index) const
+{
+       _Control* pControl;
+       __pAllControlList->GetAt(index, pControl);
+
+       return pControl;
+}
+
+int
+_ControlManager::GetControlCount(void) const
+{
+       return __pAllControlList->GetCount();
+}
+
 _Window*
 _ControlManager::GetWindow(int index) const
 {
@@ -820,6 +887,7 @@ _ControlManager::GetWindowCount(void) const
        return __pWindowList->GetCount();
 }
 
+
 _Window*
 _ControlManager::GetAllWindow(int index) const
 {
@@ -866,7 +934,6 @@ _ControlManager::AttachWindow(_Window& window)
                        _DisplayManager::GetInstance()->RegisterRoot(*pRootVE);
                }
        }
-
        __pAllWindowList->Add(&window);
 
        return __pWindowList->Add(&window);