/* widget list */
static GSList *g_widget_list = NULL;
+static pthread_mutex_t g_widget_list_mutex = PTHREAD_MUTEX_INITIALIZER;
+
vc_widget_s* widget_get(vc_h vc)
{
if (vc == NULL) {
return NULL;
}
+ pthread_mutex_lock(&g_widget_list_mutex);
+
vc_widget_s *data = NULL;
int count = g_slist_length(g_widget_list);
if (NULL != data) {
if (vc->handle == data->vc->handle) {
+ pthread_mutex_unlock(&g_widget_list_mutex);
return data;
}
}
SLOG(LOG_DEBUG, TAG_VCW, "[DEBUG] Fail to get widget by vc");
+ pthread_mutex_unlock(&g_widget_list_mutex);
return NULL;
}
widget->cb_ref_count = 0;
+ pthread_mutex_lock(&g_widget_list_mutex);
g_widget_list = g_slist_append(g_widget_list, widget);
+ pthread_mutex_unlock(&g_widget_list_mutex);
*vc = temp;
vc_widget_s *data = NULL;
+ pthread_mutex_lock(&g_widget_list_mutex);
int count = g_slist_length(g_widget_list);
int i;
data = NULL;
vc = NULL;
+ pthread_mutex_unlock(&g_widget_list_mutex);
return 0;
}
}
SLOG(LOG_ERROR, TAG_VCW, "[ERROR] widget Not found");
+ pthread_mutex_unlock(&g_widget_list_mutex);
return -1;
}
GSList* vc_widget_client_get_client_list()
{
- return g_widget_list;
+ pthread_mutex_lock(&g_widget_list_mutex);
+ GSList *ret = g_widget_list;
+ pthread_mutex_unlock(&g_widget_list_mutex);
+ return ret;
}
bool vc_widget_client_is_valid(vc_h vc)
{
vc_widget_s *data = NULL;
+ pthread_mutex_lock(&g_widget_list_mutex);
int count = g_slist_length(g_widget_list);
int i;
data = g_slist_nth_data(g_widget_list, i);
if (NULL != data) {
- if (uid == data->vc->handle)
+ if (uid == data->vc->handle) {
+ pthread_mutex_unlock(&g_widget_list_mutex);
return true;
+ }
}
}
SLOG(LOG_DEBUG, TAG_VCW, "[DEBUG] Fail to get widget by vc");
+ pthread_mutex_unlock(&g_widget_list_mutex);
return false;
}
{
vc_widget_s *data = NULL;
+ pthread_mutex_lock(&g_widget_list_mutex);
int count = g_slist_length(g_widget_list);
int i;
if (NULL != data) {
if (uid == data->vc->handle) {
*vc = data->vc;
+ pthread_mutex_unlock(&g_widget_list_mutex);
return 0;
}
}
}
+ pthread_mutex_unlock(&g_widget_list_mutex);
return -1;
}
{
vc_widget_s *data = NULL;
+ pthread_mutex_lock(&g_widget_list_mutex);
int count = g_slist_length(g_widget_list);
int i;
if (NULL != data) {
if (uid == data->vc->handle) {
*state = data->current_state;
+ pthread_mutex_unlock(&g_widget_list_mutex);
return 0;
}
}
}
+ pthread_mutex_unlock(&g_widget_list_mutex);
return -1;
}
int vc_widget_client_get_count()
{
- return g_slist_length(g_widget_list);
+ pthread_mutex_lock(&g_widget_list_mutex);
+ int ret = g_slist_length(g_widget_list);
+ pthread_mutex_unlock(&g_widget_list_mutex);
+ return ret;
}
int vc_widget_client_use_callback(vc_h vc)