diff options
-rw-r--r-- | include/app_signal.h | 1 | ||||
-rw-r--r-- | src/app_signal.c | 79 |
2 files changed, 67 insertions, 13 deletions
diff --git a/include/app_signal.h b/include/app_signal.h index 9df5b23b..aab4cb54 100644 --- a/include/app_signal.h +++ b/include/app_signal.h @@ -46,6 +46,7 @@ #define TEP_UNMOUNT_METHOD "Unmount" #define TEP_IS_MOUNTED_METHOD "IsMounted" +#define RESOURCED_DBUS_BUS_NAME "org.tizen.resourced" #define RESOURCED_PROC_PATH "/Org/Tizen/ResourceD/Process" #define RESOURCED_PROC_INTERFACE "org.tizen.resourced.process" #define RESOURCED_PROC_STATUS_SIGNAL "ProcStatus" diff --git a/src/app_signal.c b/src/app_signal.c index d9b29c36..18cbd34d 100644 --- a/src/app_signal.c +++ b/src/app_signal.c @@ -298,10 +298,12 @@ API int aul_listen_app_status_signal(int (*func)(int, int, void *), return AUL_R_OK; } -static int __system_dbus_send_signal(const char *object_path, +static int __system_dbus_send_message(const char *destination, + const char *object_path, const char *interface_name, - const char *signal_name, - GVariant *parameters) + const char *message_name, + GVariant *parameters, + gboolean sync) { GError *err = NULL; GDBusConnection *conn; @@ -314,16 +316,40 @@ static int __system_dbus_send_signal(const char *object_path, return AUL_R_ERROR; } - if (g_dbus_connection_emit_signal(conn, - NULL, - object_path, - interface_name, - signal_name, - parameters, - &err) == FALSE) { - _E("g_dbus_connection_emit_signal() is failed. %s", - err->message); - ret = AUL_R_ERROR; + if (sync) { + GVariant *result; + result = g_dbus_connection_call_sync(conn, + destination, + object_path, + interface_name, + message_name, + parameters, + NULL, + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &err); + if (result) { + g_variant_unref(result); + ret = AUL_R_OK; + } else { + ret = AUL_R_ERROR; + } + } else { + ret = (g_dbus_connection_emit_signal(conn, + NULL, + object_path, + interface_name, + message_name, + parameters, + &err) == FALSE) ? AUL_R_ERROR : AUL_R_OK; + + } + + if (ret == AUL_R_ERROR) { + _E("%s is failed. %s", + sync ? "g_dbus_connection_call_sync()" : "g_dbus_connection_emit_signal()", + err->message); goto end; } @@ -342,6 +368,33 @@ end: return ret; } +static inline int __system_dbus_send_call(const char *destination, + const char *object_path, + const char *interface_name, + const char *signal_name, + GVariant *parameters) +{ + return __system_dbus_send_message(destination, + object_path, + interface_name, + signal_name, + parameters, + TRUE); +} + +static inline int __system_dbus_send_signal(const char *object_path, + const char *interface_name, + const char *signal_name, + GVariant *parameters) +{ + return __system_dbus_send_message(NULL, + object_path, + interface_name, + signal_name, + parameters, + FALSE); +} + API int aul_update_freezer_status(int pid, const char *type) { int ret; |