Add api dbus_handle_emit_dbus_signal_sync() 54/232654/1 accepted/tizen_5.5_unified accepted/tizen_5.5_unified_wearable_hotfix tizen_5.5 tizen_5.5_wearable_hotfix accepted/tizen/5.5/unified/20200507.152408 accepted/tizen/5.5/unified/wearable/hotfix/20201027.113528 submit/tizen_5.5/20200507.053604 submit/tizen_5.5_wearable_hotfix/20201026.184304
authorsanghyeok.oh <sanghyeok.oh@samsung.com>
Thu, 7 May 2020 03:24:36 +0000 (12:24 +0900)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Thu, 7 May 2020 05:18:52 +0000 (05:18 +0000)
* dbus_handle_emit_dbus_signal_sync()
Emit signal immediately.

* dbus_handle_flush_sync()
g_dbus_connection_flush_sync() wrapper

Change-Id: I67a79426c78be5f524e85b1786f777028d336ee9
(cherry picked from commit b88c6d0ec832e887c3ec1a990bd45c3bee4f3b1f)

src/libgdbus/dbus-system.c
src/libgdbus/dbus-system.h

index f57f147f3d740d1ea55ade9f40b12e64e3be37c6..93b42dbdb7e2e7cec26dd0676ebe89e99111c779 100644 (file)
@@ -1768,7 +1768,61 @@ int dbus_handle_emit_dbus_signal(const char *dest,
 
        ret = g_dbus_connection_emit_signal(dh->conn, dest, path, iface, name, param, &err);
        if (err) {
-               _E("%d %s\n", ret, err ? err->message : NULL);
+               _E("%d %s\n", ret, err ? err->message : "NULL");
+               g_error_free(err);
+       }
+
+       return ret;
+}
+
+int dbus_handle_emit_dbus_signal_sync(const char *dest,
+                                       const char *path,
+                                       const char *iface,
+                                       const char *name,
+                                       GVariant *param)
+{
+       dbus_handle_s *dh = NULL;
+       GError *err = NULL;
+       gboolean ret = 0;
+
+       dh = _dbus_handle_get_default_connection();
+       if (!dh) {
+               _E("failed to get default connection, bustype:%d", (int)dbus_handle_get_default_bus_type());
+               return -1;
+       }
+
+       ret = g_dbus_connection_emit_signal(dh->conn, dest, path, iface, name, param, &err);
+       if (!ret) {
+               _E("%d %s\n", ret, err ? err->message : "NULL");
+               g_error_free(err);
+       }
+
+       ret = g_dbus_connection_flush_sync(dh->conn, NULL, &err);
+       if (!ret) {
+               _E("%d %s\n", ret, err ? err->message : "NULL");
+               g_error_free(err);
+       }
+
+       return ret;
+}
+
+int dbus_handle_flush_sync(dbus_handle_h handle)
+{
+       dcl_dbus_handle();
+       GError *err = NULL;
+       gboolean ret = 0;
+
+       if (!dh) {
+               dh = _dbus_handle_get_default_connection();
+               if (!dh) {
+                       _E("failed to get default connection, bustype:%d", (int)dbus_handle_get_default_bus_type());
+                       return 0;
+               }
+       }
+
+       ret = g_dbus_connection_flush_sync(dh->conn, NULL, &err);
+       if (!ret) {
+               _E("%d %s\n", ret, err ? err->message : "NULL");
                g_error_free(err);
        }
 
index 490419b72b8d6e6e6c5051f2417f1a1e0eeee1cf..faf5e0245dd787b0363f284afbf3155524a27841 100644 (file)
@@ -233,6 +233,14 @@ int dbus_handle_emit_dbus_signal           (const char *dest,
                                                const char *name,
                                                GVariant *param);
 
+int dbus_handle_emit_dbus_signal_sync(const char *dest,
+                                       const char *path,
+                                       const char *iface,
+                                       const char *name,
+                                       GVariant *param);
+
+int dbus_handle_flush_sync(dbus_handle_h handle);
+
 enum ctx_quit_reason {CTX_QUIT_UNKNOWN, CTX_QUIT_NORMAL, CTX_QUIT_TIMEOUT};
 
 typedef struct {