static IBusMessage * _dbus_request_name (BusDBusImpl *dbus, IBusMessage *message, BusConnection *connection) { IBusMessage *reply_message; IBusError *error; gchar *name; guint flags; guint retval; if (!ibus_message_get_args (message, &error, G_TYPE_STRING, &name, G_TYPE_UINT, &flags, G_TYPE_INVALID)) { reply_message = ibus_message_new_error (message, error->name, error->message); ibus_error_free (error); return reply_message; } if (g_hash_table_lookup (dbus->names, name) != NULL) { reply_message = ibus_message_new_error_printf (message, DBUS_ERROR_FAILED, "Name %s has owner", name); return reply_message; } retval = 1; g_hash_table_insert (dbus->names, (gpointer )bus_connection_add_name (connection, name), connection); reply_message = ibus_message_new_method_return (message); ibus_message_append_args (reply_message, G_TYPE_UINT, &retval, G_TYPE_INVALID); ibus_connection_send ((IBusConnection *) connection, reply_message); ibus_message_unref (reply_message); ibus_connection_flush ((IBusConnection *) connection); g_signal_emit (dbus, dbus_signals[NAME_OWNER_CHANGED], 0, name, "", bus_connection_get_unique_name (connection)); return NULL; }
void bus_panel_proxy_register_properties (BusPanelProxy *panel, IBusPropList *prop_list) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (prop_list != NULL); ibus_proxy_call ((IBusProxy *) panel, "RegisterProperties", IBUS_TYPE_PROP_LIST, &prop_list, G_TYPE_INVALID); ibus_connection_flush (ibus_proxy_get_connection((IBusProxy *)panel)); }
static IBusMessage * _dbus_hello (BusDBusImpl *dbus, IBusMessage *message, BusConnection *connection) { IBusMessage *reply_message; if (bus_connection_get_unique_name (connection) != NULL) { reply_message = ibus_message_new_error (message, DBUS_ERROR_FAILED, "Already handled an Hello message"); } else { gchar *name; name = g_strdup_printf (":1.%d", dbus->id ++); bus_connection_set_unique_name (connection, name); g_free (name); name = (gchar *) bus_connection_get_unique_name (connection); g_hash_table_insert (dbus->unique_names, name, connection); reply_message = ibus_message_new_method_return (message); ibus_message_append_args (reply_message, G_TYPE_STRING, &name, G_TYPE_INVALID); ibus_connection_send ((IBusConnection *) connection, reply_message); ibus_message_unref (reply_message); ibus_connection_flush ((IBusConnection *) connection); reply_message = NULL; g_signal_emit (dbus, dbus_signals[NAME_OWNER_CHANGED], 0, name, "", name); } return reply_message; }