2005-02-04 Havoc Pennington <hp@redhat.com>

* glib/dbus-gproxy.c (dbus_g_proxy_disconnect_signal): use
	g_quark_try_string() so it actually can return 0
	(dbus_g_proxy_connect_signal): ditto

2005-02-04  Havoc Pennington  <hp@redhat.com>

	* glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): fix a
	bogus warning
	(tristring_from_message): assert cleanly on null path/interface
	(should not be possible though I decided later)
	(dbus_g_proxy_dispose): move proxy manager unregistration here
	(DBUS_G_PROXY_DESTROYED): add this macro, and use it in a bunch of
	g_return_if_fail() checks
This commit is contained in:
Havoc Pennington 2005-02-05 04:15:57 +00:00
parent 849493eafb
commit dde6f303e5
2 changed files with 62 additions and 13 deletions

View file

@ -1,3 +1,19 @@
2005-02-04 Havoc Pennington <hp@redhat.com>
* glib/dbus-gproxy.c (dbus_g_proxy_disconnect_signal): use
g_quark_try_string() so it actually can return 0
(dbus_g_proxy_connect_signal): ditto
2005-02-04 Havoc Pennington <hp@redhat.com>
* glib/dbus-gproxy.c (dbus_g_proxy_emit_remote_signal): fix a
bogus warning
(tristring_from_message): assert cleanly on null path/interface
(should not be possible though I decided later)
(dbus_g_proxy_dispose): move proxy manager unregistration here
(DBUS_G_PROXY_DESTROYED): add this macro, and use it in a bunch of
g_return_if_fail() checks
2005-02-04 Havoc Pennington <hp@redhat.com>
* doc/Makefile.am (EXTRA_DIST): add DTDs to makefile

View file

@ -355,10 +355,18 @@ tristring_from_proxy (DBusGProxy *proxy)
static char*
tristring_from_message (DBusMessage *message)
{
const char *path;
const char *interface;
path = dbus_message_get_path (message);
interface = dbus_message_get_interface (message);
g_assert (path);
g_assert (interface);
return tristring_alloc_from_strings (0,
dbus_message_get_sender (message),
dbus_message_get_path (message),
dbus_message_get_interface (message));
path, interface);
}
static DBusGProxyList*
@ -556,8 +564,8 @@ dbus_g_proxy_manager_list_all (DBusGProxyManager *manager)
static DBusHandlerResult
dbus_g_proxy_manager_filter (DBusConnection *connection,
DBusMessage *message,
void *user_data)
DBusMessage *message,
void *user_data)
{
DBusGProxyManager *manager;
@ -608,6 +616,11 @@ dbus_g_proxy_manager_filter (DBusConnection *connection,
{
char *tri;
DBusGProxyList *list;
/* dbus spec requires these, libdbus validates */
g_assert (dbus_message_get_path (message) != NULL);
g_assert (dbus_message_get_interface (message) != NULL);
g_assert (dbus_message_get_member (message) != NULL);
tri = tristring_from_message (message);
@ -668,6 +681,8 @@ dbus_g_proxy_manager_filter (DBusConnection *connection,
/* ---------- DBusGProxy -------------- */
#define DBUS_G_PROXY_DESTROYED(proxy) (DBUS_G_PROXY (proxy)->manager == NULL)
static void
marshal_dbus_message_to_g_marshaller (GClosure *closure,
GValue *return_value,
@ -728,6 +743,13 @@ dbus_g_proxy_dispose (GObject *object)
proxy = DBUS_G_PROXY (object);
if (proxy->manager)
{
dbus_g_proxy_manager_unregister (proxy->manager, proxy);
dbus_g_proxy_manager_unref (proxy->manager);
proxy->manager = NULL;
}
g_datalist_clear (&proxy->signal_signatures);
g_signal_emit (object, signals[DESTROY], 0);
@ -739,14 +761,10 @@ static void
dbus_g_proxy_finalize (GObject *object)
{
DBusGProxy *proxy;
proxy = DBUS_G_PROXY (object);
if (proxy->manager)
{
dbus_g_proxy_manager_unregister (proxy->manager, proxy);
dbus_g_proxy_manager_unref (proxy->manager);
}
g_return_if_fail (DBUS_G_PROXY_DESTROYED (proxy));
g_free (proxy->name);
g_free (proxy->path);
@ -954,6 +972,8 @@ dbus_g_proxy_emit_remote_signal (DBusGProxy *proxy,
const char *signal;
char *name;
GQuark q;
g_return_if_fail (!DBUS_G_PROXY_DESTROYED (proxy));
interface = dbus_message_get_interface (message);
signal = dbus_message_get_member (message);
@ -976,8 +996,13 @@ dbus_g_proxy_emit_remote_signal (DBusGProxy *proxy,
signature = g_datalist_id_get_data (&proxy->signal_signatures, q);
if (signature == NULL)
{
#if 0
/* this should not trigger a warning, as you shouldn't have to
* add signals you don't care about
*/
g_warning ("Signal '%s' has not been added to this proxy object\n",
name);
#endif
}
else if (!dbus_message_has_signature (message, signature))
{
@ -1249,6 +1274,7 @@ const char*
dbus_g_proxy_get_bus_name (DBusGProxy *proxy)
{
g_return_val_if_fail (DBUS_IS_G_PROXY (proxy), NULL);
g_return_val_if_fail (!DBUS_G_PROXY_DESTROYED (proxy), NULL);
return proxy->name;
}
@ -1283,6 +1309,7 @@ dbus_g_proxy_begin_call (DBusGProxy *proxy,
va_list args;
g_return_val_if_fail (DBUS_IS_G_PROXY (proxy), NULL);
g_return_val_if_fail (!DBUS_G_PROXY_DESTROYED (proxy), NULL);
message = dbus_message_new_method_call (proxy->name,
proxy->path,
@ -1355,6 +1382,7 @@ dbus_g_proxy_end_call (DBusGProxy *proxy,
DBusError derror;
g_return_val_if_fail (DBUS_IS_G_PROXY (proxy), FALSE);
g_return_val_if_fail (!DBUS_G_PROXY_DESTROYED (proxy), FALSE);
g_return_val_if_fail (pending != NULL, FALSE);
dbus_pending_call_block (DBUS_PENDING_CALL_FROM_G_PENDING_CALL (pending));
@ -1414,6 +1442,7 @@ dbus_g_proxy_call_no_reply (DBusGProxy *proxy,
va_list args;
g_return_if_fail (DBUS_IS_G_PROXY (proxy));
g_return_if_fail (!DBUS_G_PROXY_DESTROYED (proxy));
message = dbus_message_new_method_call (proxy->name,
proxy->path,
@ -1465,6 +1494,7 @@ dbus_g_proxy_send (DBusGProxy *proxy,
dbus_uint32_t *client_serial)
{
g_return_if_fail (DBUS_IS_G_PROXY (proxy));
g_return_if_fail (!DBUS_G_PROXY_DESTROYED (proxy));
if (proxy->name)
{
@ -1503,6 +1533,7 @@ dbus_g_proxy_add_signal (DBusGProxy *proxy,
char *name;
g_return_if_fail (DBUS_IS_G_PROXY (proxy));
g_return_if_fail (!DBUS_G_PROXY_DESTROYED (proxy));
g_return_if_fail (signal_name != NULL);
g_return_if_fail (signature != NULL);
#ifndef G_DISABLE_CHECKS
@ -1547,15 +1578,16 @@ dbus_g_proxy_connect_signal (DBusGProxy *proxy,
GQuark q;
g_return_if_fail (DBUS_IS_G_PROXY (proxy));
g_return_if_fail (!DBUS_G_PROXY_DESTROYED (proxy));
g_return_if_fail (signal_name != NULL);
g_return_if_fail (handler != NULL);
name = create_signal_name (proxy->interface, signal_name);
q = g_quark_from_string (name);
q = g_quark_try_string (name);
#ifndef G_DISABLE_CHECKS
if (g_datalist_id_get_data (&proxy->signal_signatures, q) == NULL)
if (q == 0 || g_datalist_id_get_data (&proxy->signal_signatures, q) == NULL)
{
g_warning ("Must add the signal '%s' with dbus_g_proxy_add_signal() prior to connecting to it\n", name);
g_free (name);
@ -1592,12 +1624,13 @@ dbus_g_proxy_disconnect_signal (DBusGProxy *proxy,
GQuark q;
g_return_if_fail (DBUS_IS_G_PROXY (proxy));
g_return_if_fail (!DBUS_G_PROXY_DESTROYED (proxy));
g_return_if_fail (signal_name != NULL);
g_return_if_fail (handler != NULL);
name = create_signal_name (proxy->interface, signal_name);
q = g_quark_from_string (name);
q = g_quark_try_string (name);
if (q != 0)
{