b6eb9d0196279d0c76e377e1059f6134fa94ecc6
[platform/core/multimedia/libmm-wfd.git] / sink / include / mm_wfd_sink_manager.h
1 /*
2  * libmm-wfd
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: JongHyuk Choi <jhchoi.choi@samsung.com>, YeJin Cho <cho.yejin@samsung.com>,
7  * Seungbae Shin <seungbae.shin@samsung.com>, YoungHwan An <younghwan_.an@samsung.com>
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  * http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  */
22
23 #ifndef __MM_WFD_SINK_MANAGER_H__
24 #define __MM_WFD_SINK_MANAGER_H__
25
26 /*=======================================================================================
27 | INCLUDE FILES                                                                         |
28 ========================================================================================*/
29 #include "mm_wfd_sink_priv.h"
30 #include "mm_wfd_sink_util.h"
31
32 #ifdef __cplusplus
33         extern "C" {
34 #endif
35
36 #define WFD_SINK_MANAGER_LOCK(wfd_sink) \
37 do{\
38         if (wfd_sink)\
39         {\
40                 g_mutex_lock (&((wfd_sink)->manager_thread_mutex));\
41         }\
42 } while(0);
43
44 #define WFD_SINK_MANAGER_UNLOCK(wfd_sink) \
45 do{\
46         if (wfd_sink)\
47         {\
48                 g_mutex_unlock (&((wfd_sink)->manager_thread_mutex));\
49         }\
50 } while(0);
51
52 #define WFD_SINK_MANAGER_WAIT_CMD(wfd_sink) \
53 do{\
54         wfd_sink_debug ("manager thread is waiting for command signal\n");\
55         wfd_sink->waiting_cmd = TRUE; \
56         g_cond_wait (&((wfd_sink)->manager_thread_cond), &((wfd_sink)->manager_thread_mutex)); \
57         wfd_sink->waiting_cmd = FALSE; \
58 } while(0);
59
60 #define WFD_SINK_MANAGER_SIGNAL_CMD(wfd_sink, cmd) \
61 do{\
62         if (wfd_sink->manager_thread_cmd != WFD_SINK_MANAGER_CMD_EXIT)\
63         {\
64                 wfd_sink->manager_thread_cmd |= cmd;\
65                 if (wfd_sink->waiting_cmd)\
66                 {\
67                         wfd_sink_debug ("send command signal to manager thread with %x command\n", &(wfd_sink->manager_thread_cmd));\
68                         g_cond_signal (&((wfd_sink)->manager_thread_cond));\
69                 }\
70         }\
71 } while(0);
72
73 /**
74  * This function is to initialize manager
75  *
76  * @param[in]   handle          Handle of wfd_sink.
77  * @return      This function returns zero on success, or negative value with errors.
78  * @remarks
79  * @see
80  *
81  */
82 int _mm_wfd_sink_init_manager(mm_wfd_sink_t *wfd_sink);
83 /**
84  * This function is to release manager
85  *
86  * @param[in]   handle          Handle of wfd_sink.
87  * @return      This function returns zero on success, or negative value with errors.
88  * @remarks
89  * @see
90  *
91  */
92 int _mm_wfd_sink_release_manager(mm_wfd_sink_t* wfd_sink);
93
94
95 #ifdef __cplusplus
96         }
97 #endif
98
99 #endif