Throw invalid operation error when unprepare() is called at inside of pulse-thread
[platform/core/api/audio-io.git] / include / CAudioSessionHandler.h
index 054403d..cd971b2 100644 (file)
@@ -20,7 +20,7 @@
 
 #ifdef __cplusplus
 
-
+#include <pthread.h>
 #include <mm_session.h>
 #include <mm_session_private.h>
 #include <mm_sound.h>
@@ -46,17 +46,17 @@ namespace tizen_media_audio {
         virtual ~CAudioSessionHandler();
 
         /* Methods */
-        virtual void initialize() throw(CAudioError);
+        virtual void initialize();
         virtual void finalize();
 
-        bool isSkipSession() throw(CAudioError);
+        bool isSkipSession();
 
-        void registerSound() throw(CAudioError);
-        void unregisterSound() throw(CAudioError);
+        void registerSound();
+        void unregisterSound();
 
-        void updatePlaying() throw(CAudioError);
-        void updateStop() throw(CAudioError);
-        void disableSessionHandler() throw(CAudioError);
+        void updatePlaying();
+        void updateStop();
+        void disableSessionHandler();
 
         /* Setter & Getter */
         int getId();
@@ -115,6 +115,12 @@ namespace tizen_media_audio {
         CAudioError __convertStreamType(EAudioSessionType type1, MMSessionType type2, int *index);
         CAudioError __getAsmInformation(MMSessionType *type, int *options);
         bool __isFocusRequired(MMSessionType type, int options);
+        bool __isFocusDisableReacquisitionRequired(MMSessionType type, int options);
+        void __lockFocusIdMutex();
+        void __unlockFocusIdMutex();
+        void __lockFocusCBMutex();
+        void __unlockFocusCBMutex();
+        bool __checkNeedBlock(const char *focus_acquired_by);
 
         /* Static Member */
         static int                  __sCaptureRef;
@@ -135,10 +141,12 @@ namespace tizen_media_audio {
         unsigned int                __mSubscribeId;
 
         bool                        __mUseFocus;
-        mm_sound_focus_type_e       __mFocusType;        /* For audio focus */
-        mm_sound_focus_state_e      __mState;            /* For audio focus */
+        int                         __mAcquiredFocus;    /* For audio focus */
         char*                       __mReasonForChange;  /* For audio focus */
         char*                       __mAdditionalInfo;   /* For audio focus */
+
+        pthread_mutex_t             __mFocusIdMutex;
+        pthread_mutex_t             __mFocusCBMutex;
     };