From: hj kim Date: Fri, 10 Feb 2023 09:27:57 +0000 (+0900) Subject: Remove useless structures and use queue directly in socket X-Git-Tag: accepted/tizen/7.0/unified/20230303.102026~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=185b2f7cb7d06f23dbf2e1a4acadf197e39c52e1;p=platform%2Fcore%2Fapi%2Fmedia-controller.git Remove useless structures and use queue directly in socket Change-Id: I4c2cede650d9c822446d8bba1cacaaac64b67e74 (cherry picked from commit 64d2e34fd7efc25c68a4b7ee537b4325e63b3310) --- diff --git a/packaging/capi-media-controller.spec b/packaging/capi-media-controller.spec index ef47c5f..6138f60 100644 --- a/packaging/capi-media-controller.spec +++ b/packaging/capi-media-controller.spec @@ -1,6 +1,6 @@ Name: capi-media-controller Summary: A media controller library in Tizen Native API -Version: 0.2.32 +Version: 0.2.33 Release: 1 Group: Multimedia/API License: Apache-2.0 diff --git a/svc/media_controller_svc.c b/svc/media_controller_svc.c index 9e554c3..26b01f1 100644 --- a/svc/media_controller_svc.c +++ b/svc/media_controller_svc.c @@ -52,14 +52,6 @@ typedef struct { GList *cmds_to_send; } mc_app_data_set_t; -typedef struct { - GQueue *queue; -} mc_manage_queue_t; - -typedef struct { - mc_manage_queue_t *request; -} mc_service_t; - static int __mc_sys_get_uid(uid_t *uid) { uid_t *list = NULL; @@ -129,16 +121,6 @@ static void __mc_clean_connected_apps(void) } } -static void __mc_destroy_request_queue(mc_manage_queue_t *data) -{ - mc_retm_if_failed(data); - - g_queue_free_full(data->queue, __mc_destroy_queue); - data->queue = NULL; - - g_free(data); -} - static void __mc_add_cmd_to_send(gpointer data, gpointer user_data) { mc_app_data_set_t *_app_data = (mc_app_data_set_t *)data; @@ -192,27 +174,6 @@ static int __mc_list_get_index(GList *list, int pid, mc_priv_type_e priv_type) return -1; } -static void __mc_service_init(mc_service_t **data) -{ - mc_service_t *_service_data = g_new0(mc_service_t, 1); - - _service_data->request = g_new0(mc_manage_queue_t, 1); - _service_data->request->queue = g_queue_new(); - - *data = _service_data; -} - -static void __mc_service_deinit(mc_service_t *data) -{ - if (!data) - return; - - if (data->request != NULL) - __mc_destroy_request_queue(data->request); - - g_free(data); -} - static int __mc_service_check_db(uid_t uid) { int res = MEDIA_CONTROLLER_ERROR_NONE; @@ -349,11 +310,6 @@ static int __mc_service_reset_db(uid_t uid) return res; } -static gboolean __mc_service_is_valid_queue(mc_service_t *data) -{ - return (data && data->request && data->request->queue); -} - static gboolean __mc_service_is_exist_pid(GList *list, int pid, mc_priv_type_e priv_type) { return (__mc_list_get_index(list, pid, priv_type) != -1); @@ -587,13 +543,9 @@ static gboolean __mc_service_process(gpointer data) { unsigned int length_of_queue = 0; int msg = MEDIA_CONTROLLER_ERROR_NONE; - mc_service_t *_service_data = (mc_service_t*)data; mc_service_request *req = NULL; - mc_retvm_if(!_service_data, G_SOURCE_REMOVE, "invalid data"); - mc_retvm_if(!__mc_service_is_valid_queue(_service_data), G_SOURCE_REMOVE, "invalid queue"); - - GQueue *request_queue = _service_data->request->queue; + GQueue *request_queue = (GQueue *)data; length_of_queue = g_queue_get_length(request_queue); mc_info("Queue Length : %u", length_of_queue); @@ -627,21 +579,20 @@ static gboolean __mc_read_service_request_tcp_socket(GIOChannel *src, GIOConditi int client_sock = -1; int msg = MEDIA_CONTROLLER_ERROR_NONE; mc_service_request *req = NULL; - mc_service_t *_service_data = (mc_service_t*)data; - GQueue *request_queue = _service_data->request->queue; + GQueue *request_queue = (GQueue *)data; mc_info_fenter(); sock = g_io_channel_unix_get_fd(src); if (sock < 0) { mc_error("sock fd is invalid!"); - return TRUE; + return G_SOURCE_CONTINUE; } /* get client socket fd */ msg = mc_ipc_accept_client_tcp(sock, &(client_sock)); if (msg != MEDIA_CONTROLLER_ERROR_NONE) - return TRUE; + return G_SOURCE_CONTINUE; mc_peer_creds creds; memset(&creds, 0x00, sizeof(mc_peer_creds)); @@ -695,7 +646,7 @@ static gboolean __mc_read_service_request_tcp_socket(GIOChannel *src, GIOConditi if (!g_source) { g_source = g_idle_source_new(); - g_source_set_callback(g_source, __mc_service_process, _service_data, NULL); + g_source_set_callback(g_source, __mc_service_process, request_queue, NULL); g_source_attach(g_source, g_main_context_get_thread_default()); g_source_unref(g_source); } @@ -703,7 +654,7 @@ static gboolean __mc_read_service_request_tcp_socket(GIOChannel *src, GIOConditi MC_SAFE_FREE(creds.uid); MC_SAFE_FREE(creds.smack); - return TRUE; + return G_SOURCE_CONTINUE; ERROR: if (write(client_sock, &msg, sizeof(msg)) != sizeof(msg)) @@ -719,7 +670,19 @@ ERROR: MC_SAFE_FREE(creds.uid); MC_SAFE_FREE(creds.smack); - return TRUE; + return G_SOURCE_CONTINUE; +} + +static void __destroy_recv_msg_queue(gpointer data) +{ + GQueue *recv_msg_queue = (GQueue *)data; + + mc_debug_fenter(); + + if (!recv_msg_queue) + return; + + g_queue_free_full(recv_msg_queue, __mc_destroy_queue); } gpointer mc_svc_thread(gpointer data) @@ -729,7 +692,7 @@ gpointer mc_svc_thread(gpointer data) GSource *source = NULL; GIOChannel *channel = NULL; GMainContext *context = NULL; - mc_service_t *mc_service_data = NULL; + GQueue *recv_msg_queue = NULL; uid_t uid = DEFAULT_USER_UID; mc_debug_fenter(); @@ -797,12 +760,11 @@ gpointer mc_svc_thread(gpointer data) channel = g_io_channel_unix_new(sockfd); source = g_io_create_watch(channel, G_IO_IN); - /* Init data */ - __mc_service_init(&mc_service_data); - /* Set callback to be called when socket is readable */ - g_source_set_callback(source, (GSourceFunc)__mc_read_service_request_tcp_socket, mc_service_data, NULL); + recv_msg_queue = g_queue_new(); + g_source_set_callback(source, (GSourceFunc)__mc_read_service_request_tcp_socket, recv_msg_queue, __destroy_recv_msg_queue); g_source_attach(source, context); + g_source_unref(source); g_main_context_push_thread_default(context); @@ -818,8 +780,6 @@ gpointer mc_svc_thread(gpointer data) if (aul_listen_app_dead_signal(NULL, NULL) != AUL_R_OK) mc_error("Failed to unregister app_dead signal"); - __mc_service_deinit(mc_service_data); - if (g_source) { g_source_destroy(g_source); g_source = NULL; @@ -830,7 +790,7 @@ gpointer mc_svc_thread(gpointer data) /* Free resources */ g_io_channel_shutdown(channel, FALSE, NULL); g_io_channel_unref(channel); - g_source_unref(source); + g_source_destroy(source); /* close socket */ close(sockfd);