int signal_subscribed;
} signal_client_data_t;
+int map_dbus_call_error_to_return_value(const GError *error) {
+
+ g_assert(error);
+
+ if (error->domain == G_DBUS_ERROR)
+ if (error->code == G_DBUS_ERROR_NAME_HAS_NO_OWNER || error->code == G_DBUS_ERROR_SERVICE_UNKNOWN)
+ return SUBSESSION_ERROR_NOT_SUPPORTED;
+
+ return SUBSESSION_ERROR_IO_ERROR;
+}
+
signal_client_data_t *make_new_signal_callback_client_data(void *client_callback, void *client_callback_data, GVariant *params) {
signal_client_data_t *signal_data = (signal_client_data_t *)malloc(sizeof(signal_client_data_t));
);
if (!retgv || call_sync_error) {
+ int ret = map_dbus_call_error_to_return_value(call_sync_error);
g_error_free(call_sync_error);
-
- return -EFAULT;
+ return ret;
}
g_variant_unref(retgv);
);
if (!retgv || call_sync_error) {
+ int ret = map_dbus_call_error_to_return_value(call_sync_error);
g_error_free(call_sync_error);
- return -EFAULT;
+ return ret;
}
g_variant_unref(retgv);
return 0;
);
if (!retgv || call_sync_error) {
+ int ret = map_dbus_call_error_to_return_value(call_sync_error);
g_error_free(call_sync_error);
- return -EFAULT;
+ return ret;
}
*out = retgv;