From 9b0eb93116a57935bb8d9d452b7048836d6ff668 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Wed, 17 Jun 2015 16:43:38 +0900 Subject: [PATCH] move dbus codes into the eom_dbus.c Change-Id: Id39bf0f3f86e17b92c8e1072757d44230e9fd2f4 --- src/eom-dbus.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++--------- src/eom-dbus.h | 22 ++------------ src/eom-private.h | 8 ++--- src/eom.c | 48 ++---------------------------- 4 files changed, 81 insertions(+), 84 deletions(-) mode change 100644 => 100755 src/eom-dbus.c mode change 100644 => 100755 src/eom-dbus.h mode change 100644 => 100755 src/eom-private.h mode change 100644 => 100755 src/eom.c diff --git a/src/eom-dbus.c b/src/eom-dbus.c old mode 100644 new mode 100755 index 03a56a4..ff0b07b --- a/src/eom-dbus.c +++ b/src/eom-dbus.c @@ -37,10 +37,25 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "eom.h" #include "eom-log.h" #include "eom-dbus.h" +#include "eom-private.h" + +#define EOM_DBUS_SERVER "org.eom.server" +#define EOM_DBUS_CLIENT "org.eom.client" +#define EOM_DBUS_INTERFACE "org.eom.interface" +#define EOM_DBUS_PATH "/org/eom/path" + +#define STR_LEN 128 #define REPLY_TIME 1000 #define ARGV_NUM 64 +typedef struct _EomDBusClientMethod { + char name[STR_LEN]; + notify_func func; + void *data; + struct _EomDBusClientMethod *next; +} EomDBusClientMethod; + typedef struct _EomDBusClientInfo { DBusConnection *conn; char name[STR_LEN]; @@ -52,7 +67,10 @@ typedef struct _EomDBusClientInfo { static EomDBusClientInfo client_info; -static void _eom_dbus_client_deinit(EomDBusClientInfo *info); +static bool dbus_initialized; +static EomDBusClientMethod dbus_method; + +static void _eom_dbus_client_deinitialize(EomDBusClientInfo *info); static int _eom_dbus_need_private_conn(void) @@ -283,7 +301,7 @@ _eom_dbus_client_msg_filter(DBusConnection *conn, DBusMessage *msg, void *data) if (dbus_message_is_signal(msg, DBUS_INTERFACE_LOCAL, "Disconnected")) { INFO("[EOM] disconnected by signal"); - _eom_dbus_client_deinit(info); + _eom_dbus_client_deinitialize(info); return DBUS_HANDLER_RESULT_HANDLED; } @@ -292,7 +310,7 @@ _eom_dbus_client_msg_filter(DBusConnection *conn, DBusMessage *msg, void *data) } static int -_eom_dbus_client_init(EomDBusClientInfo *info) +_eom_dbus_client_initialize(EomDBusClientInfo *info) { DBusError err; int ret; @@ -387,7 +405,7 @@ free_err: } static void -_eom_dbus_client_deinit(EomDBusClientInfo *info) +_eom_dbus_client_deinitialize(EomDBusClientInfo *info) { DBusError err; @@ -414,8 +432,9 @@ _eom_dbus_client_deinit(EomDBusClientInfo *info) INFO("[EOM] disconnected"); } -bool -eom_dbus_client_connect(void) + +static bool +_eom_dbus_client_connect(void) { if (client_info.conn) return true; @@ -424,20 +443,20 @@ eom_dbus_client_connect(void) client_info.fd = -1; - if (!_eom_dbus_client_init(&client_info)) + if (!_eom_dbus_client_initialize(&client_info)) return false; return true; } -void -eom_dbus_client_disconnect(void) +static void +_eom_dbus_client_disconnect(void) { - _eom_dbus_client_deinit(&client_info); + _eom_dbus_client_deinitialize(&client_info); } -bool -eom_dbus_client_add_method(EomDBusClientMethod *method) +static bool +_eom_dbus_client_add_method(EomDBusClientMethod *method) { EomDBusClientMethod **prev; @@ -449,8 +468,8 @@ eom_dbus_client_add_method(EomDBusClientMethod *method) return true; } -void -eom_dbus_client_remove_method(EomDBusClientMethod *method) +static void +_eom_dbus_client_remove_method(EomDBusClientMethod *method) { EomDBusClientMethod **prev; @@ -462,6 +481,46 @@ eom_dbus_client_remove_method(EomDBusClientMethod *method) } } +bool +eom_dbus_client_init(notify_func func) +{ + if (dbus_initialized) + return true; + + if (!_eom_dbus_client_connect()) + return false; + + snprintf(dbus_method.name, sizeof(dbus_method.name), "%s", "Notify"); + dbus_method.func = func; + dbus_method.data = NULL; + _eom_dbus_client_add_method(&dbus_method); + + dbus_initialized = true; + + INFO("dbus init"); + + return true; +} + +void +eom_dbus_client_deinit(GList *cb_info_list) +{ + if (!dbus_initialized) + return; + + /* An output instance and a callback can be created and be added only by user. + * If there is cb_info_list, it means that user is still + * watching and interested with eom dbus message. + */ + if (cb_info_list) + return; + + _eom_dbus_client_remove_method(&dbus_method); + _eom_dbus_client_disconnect(); + + dbus_initialized = false; +} + GValueArray* eom_dbus_client_send_message(char *method, GValueArray *array) { diff --git a/src/eom-dbus.h b/src/eom-dbus.h old mode 100644 new mode 100755 index a5530fc..99cfbce --- a/src/eom-dbus.h +++ b/src/eom-dbus.h @@ -38,27 +38,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include #include "eom.h" +#include "eom-private.h" -#define EOM_DBUS_SERVER "org.eom.server" -#define EOM_DBUS_CLIENT "org.eom.client" -#define EOM_DBUS_INTERFACE "org.eom.interface" -#define EOM_DBUS_PATH "/org/eom/path" +bool eom_dbus_client_init(notify_func func); +void eom_dbus_client_deinit(GList *cb_info_list); -#define STR_LEN 128 - -typedef void (*MethodFunc) (void *data, GValueArray *noti_array); - -typedef struct _EomDBusClientMethod { - char name[STR_LEN]; - MethodFunc func; - void *data; - struct _EomDBusClientMethod *next; -} EomDBusClientMethod; - -bool eom_dbus_client_connect(void); -void eom_dbus_client_disconnect(void); GValueArray *eom_dbus_client_send_message(char *method, GValueArray *array); -bool eom_dbus_client_add_method(EomDBusClientMethod *method); -void eom_dbus_client_remove_method(EomDBusClientMethod *method); #endif /* __EOM_DBUS_H__ */ diff --git a/src/eom-private.h b/src/eom-private.h old mode 100644 new mode 100755 index dec29be..a8465fb --- a/src/eom-private.h +++ b/src/eom-private.h @@ -49,12 +49,8 @@ typedef struct { int mm_height; } eom_output_info; -struct _eom_output { - eom_output_id id; - eom_output_type_e type; - - eom_output_info *output_info; -}; +/* notify callback function prototype */ +typedef void (*notify_func) (void *data, GValueArray *array); void _eom_mutex_lock(void); void _eom_mutex_unlock(void); diff --git a/src/eom.c b/src/eom.c old mode 100644 new mode 100755 index 520bb5f..adcca4b --- a/src/eom.c +++ b/src/eom.c @@ -94,9 +94,6 @@ bool eom_debug_on; static pthread_mutex_t eom_lock; -static bool dbus_initialized; -static EomDBusClientMethod dbus_method; - static GList *cb_info_list; static GList *output_info_list; @@ -194,46 +191,6 @@ _eom_mutex_unlock(void) pthread_mutex_unlock(&eom_lock); } -static bool -_eom_dbus_init(void) -{ - if (dbus_initialized) - return true; - - if (!eom_dbus_client_connect()) - return false; - - snprintf(dbus_method.name, sizeof(dbus_method.name), "%s", "Notify"); - dbus_method.func = _eom_output_process_notify_cb; - dbus_method.data = NULL; - eom_dbus_client_add_method(&dbus_method); - - dbus_initialized = true; - - INFO("dbus init"); - - return true; -} - -static void -_eom_dbus_deinit(void) -{ - if (!dbus_initialized) - return; - - /* An output instance and a callback can be created and be added only by user. - * If there is cb_info_list, it means that user is still - * watching and interested with eom dbus message. - */ - if (cb_info_list) - return; - - eom_dbus_client_remove_method(&dbus_method); - eom_dbus_client_disconnect(); - - dbus_initialized = false; -} - static void _eom_set_output_info_mode(eom_output_info *output_info, int output_mode) { @@ -526,7 +483,7 @@ eom_init(void) g_type_init(); - ret = _eom_dbus_init(); + ret = eom_dbus_client_init(_eom_output_process_notify_cb); _eom_mutex_unlock(); @@ -541,7 +498,8 @@ eom_deinit(void) GList *l; _eom_mutex_lock(); - _eom_dbus_deinit(); + + eom_dbus_client_deinit(cb_info_list); /* TODO: redesign the life-cycle of output_infos */ /* destory output_info. */ -- 2.7.4