#define POWEROFF_INTERFACE_NAME POWEROFF_BUS_NAME".Powerkey"
#define METHOD_POWEROFF_NAME "PopupLaunch"
+static E_DBus_Connection *g_e_conn;
+
+static E_DBus_Connection *_get_e_dbus_connection(void)
+{
+ if (!g_e_conn)
+ g_e_conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+
+ return g_e_conn;
+}
+
static int _append_variant(DBusMessageIter *iter, const char *sig, char *param[])
{
char *ch;
msg = dbus_message_new_method_call(dest, path, interface, method);
if (!msg) {
_E("Failed to dbus_message_new_method_call(%s:%s-%s).", path, interface, method);
+ dbus_connection_unref(conn);
return -EBADMSG;
}
dbus_message_unref(msg);
if (!reply) {
_E("Failed to dbus_connection_send. dest=%s %s:%s-%s. err.name=%s: %s", dest, path, interface, method, err.name, err.message);
+ dbus_connection_unref(conn);
dbus_error_free(&err);
return -ECOMM;
}
dbus_message_unref(reply);
if (!ret) {
_E("No message dest=%s %s:%s-%s. err.name=%s: %s", dest, path, interface, method, err.name, err.message);
+ dbus_connection_unref(conn);
dbus_error_free(&err);
return -ENOMSG;
}
+ dbus_connection_unref(conn);
return result;
}
-void dbus_util_broadcast_signal(const char *path, const char *interface, const char *name, const char *type, char *signal[])
+static void dbus_util_broadcast_signal(const char *path, const char *interface, const char *name, const char *type, char *signal[])
{
DBusMessage *msg;
DBusMessageIter iter;
r = _append_variant(&iter, type, signal);
if (r < 0) {
_E("Failed to append variant[%d]", r);
+ dbus_message_unref(msg);
return;
}
conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
if (conn == NULL) {
_E("Failed to get bus");
+ dbus_message_unref(msg);
return;
}
r = dbus_connection_send(conn, msg, NULL);
- if (!r) {
+ if (!r)
_E("Failed to send message[%s][%s][%s]", path, interface, name);
- return;
- }
- _D("dbus_util_broadcast_signal success");
+ else
+ _D("dbus_util_broadcast_signal success");
+
dbus_message_unref(msg);
+ dbus_connection_unref(conn);
}
void dbus_util_send_sys_lock_teminate_signal(void)
{
- E_DBus_Connection *conn;
+ DBusConnection *conn = NULL;
DBusMessage *msg;
int ret = 1;
- conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
if (conn == NULL) {
- _E("e_dbus_bus_get error");
+ _E("Failed to get bus");
+ return;
}
msg = dbus_message_new_signal(SYS_LOCK_OBJECT_PATH,
SYS_LOCK_INTERFACE_TERMINATE,
SYS_LOCK_MEMBER_TERMINATE);
+ if (msg == NULL) {
+ _E("Failed to dbus_message_new_signal");
+ dbus_connection_unref(conn);
+ return;
+ }
if (!dbus_message_append_args(msg, DBUS_TYPE_INT32, &ret, DBUS_TYPE_INVALID)) {
_E("dbus_message_append_args error");
}
- e_dbus_message_send(conn, msg, NULL, -1, NULL);
+ dbus_connection_send(conn, msg, NULL);
dbus_message_unref(msg);
_D("%s-%s", SYS_LOCK_INTERFACE_TERMINATE, SYS_LOCK_MEMBER_TERMINATE);
+ dbus_connection_unref(conn);
}
E_DBus_Connection *conn;
E_DBus_Signal_Handler *handler;
- conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+ conn = _get_e_dbus_connection();
if (conn == NULL) {
- _E("e_dbus_bus_get error");
- return 0;
+ _E("_get_e_dbus_connection error");
+ return -1;
}
handler = e_dbus_signal_handler_add(conn, NULL, DISPLAY_OBJECT_PATH,
changed_cb, data);
if (handler == NULL) {
_E("e_dbus_signal_handler_add error");
- return 0;
+ return -1;
}
handler = e_dbus_signal_handler_add(conn, NULL, DISPLAY_OBJECT_PATH,
changed_cb, data);
if (handler == NULL) {
_E("e_dbus_signal_handler_add error");
- return 0;
+ return -1;
}
- return 1;
+ return 0;
}
E_DBus_Connection *conn;
E_DBus_Signal_Handler *handler;
- conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+ conn = _get_e_dbus_connection();
if (conn == NULL) {
- _E("e_dbus_bus_get error");
+ _E("_get_e_dbus_connection error");
return -1;
}
return NULL;
}
+
+void dbus_util_resource_cleanup(void)
+{
+ if (g_e_conn) {
+ e_dbus_connection_close(g_e_conn);
+ g_e_conn = NULL;
+ }
+}