Feedback must be not play twice on processing a event.
author“Bumseung <bumseung.cho@samsung.com>
Mon, 18 Mar 2013 13:59:21 +0000 (22:59 +0900)
committer“Bumseung <bumseung.cho@samsung.com>
Mon, 18 Mar 2013 13:59:21 +0000 (22:59 +0900)
Change-Id: Ib98ab1b862666a784ba07342ebee183010881df1
Signed-off-by: “Bumseung <bumseung.cho@samsung.com>
src/ui/FUi_ResourceManager.cpp
src/ui/FUi_UiEventManager.cpp
src/ui/inc/FUi_ResourceManager.h

index d7d4e52..9a3f937 100644 (file)
@@ -336,6 +336,8 @@ _ResourceManager::_ResourceManager(void)
        , __targetWidth(0)
        , __targetHeight(0)
        , __deviceDPI(0)
+       , __feedbackStatus(_RESOURCE_FEEDBACK_STATUS_INIT)
+       , __feedbackAcquireCount(0)
        , __pFallbackList(null)
 {
        __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT] = null;
@@ -1060,7 +1062,13 @@ _ResourceManager::PlayFeedback(_ResourceFeedbackPattern pattern)
                }
                __initializeFeedback = true;
        }
+       if (__feedbackStatus == _RESOURCE_FEEDBACK_STATUS_PLAYED)
+       {
+               SysLog(NID_UI, "feedback is already played.");
+               return E_SUCCESS;
+       }
        feedback_pattern_e playPattern = Convert_ResourceFeedbackPatternTofeedback_pattern_e(pattern);
+       __feedbackStatus = _RESOURCE_FEEDBACK_STATUS_PLAYED;
        int r = feedback_play(playPattern);
        if (r == FEEDBACK_ERROR_NONE)
        {
@@ -1595,4 +1603,20 @@ CATCH:
        return L"";
 }
 
+void
+_ResourceManager::AcquireFeedback(void)
+{
+       ++__feedbackAcquireCount;
+}
+
+void
+_ResourceManager::ReleaseFeedback(void)
+{
+       --__feedbackAcquireCount;
+       if(__feedbackAcquireCount == 0)
+       {
+               __feedbackStatus = _RESOURCE_FEEDBACK_STATUS_INIT;
+       }
+}
+
 }}//Tizen::Ui
index 22e7cd3..0becc63 100644 (file)
@@ -38,6 +38,7 @@
 #include "FUiAnim_ControlVisualElement.h"
 #include "FUi_UiKeyEvent.h"
 #include "FUi_KeyEventManager.h"
+#include "FUi_ResourceManager.h"
 #include "FUi_Window.h"
 
 using namespace std;
@@ -416,7 +417,7 @@ result
 _UiEventManager::ProcessEvent(const _UiEvent& event, bool& isFiltered)
 {
        result r = E_SUCCESS;
-
+       _ResourceManager::GetInstance()->AcquireFeedback();
        switch (event.GetRouteType())
        {
        case _UI_EVENT_ROUTE_TUNNEL_BUBBLE:
@@ -458,7 +459,7 @@ _UiEventManager::ProcessEvent(const _UiEvent& event, bool& isFiltered)
        default:
                break;
        }
-
+       _ResourceManager::GetInstance()->ReleaseFeedback();
        return r;
 }
 
index f069172..9b21130 100644 (file)
@@ -62,6 +62,12 @@ class MapContainer;
 namespace Tizen { namespace Ui
 {
 
+enum _ResourceFeedbackStatus
+{
+       _RESOURCE_FEEDBACK_STATUS_INIT = 0,
+       _RESOURCE_FEEDBACK_STATUS_PLAYED
+};// enum _ResourceFeedbackPattern
+
 enum _ResourceFeedbackPattern
 {
        _RESOURCE_FEEDBACK_PATTERN_TAP = 0,
@@ -169,6 +175,8 @@ public:
        bool IsCustomColor(const Tizen::Base::String& colorId);
        bool IsCustomBitmap(const Tizen::Base::String& bitmapId);
        result PlayFeedback(_ResourceFeedbackPattern pattern);
+       void AcquireFeedback(void);
+       void ReleaseFeedback(void);
 
 private:
        _ResourceManager(void);
@@ -230,6 +238,8 @@ private:
        int __deviceDPI;
        int __logicalWidth;
        int __logicalHeight;
+       _ResourceFeedbackStatus __feedbackStatus;
+       int __feedbackAcquireCount;
        Tizen::Base::Collection::ArrayListT<ResourceFallbackItem*>* __pFallbackList;
 };