diff options
author | Regis Merlino <regis.merlino@intel.com> | 2013-04-04 17:31:27 +0200 |
---|---|---|
committer | Mark Ryan <mark.d.ryan@intel.com> | 2013-04-08 15:07:28 +0200 |
commit | 541f912da75d75b2e41eeb680e53e9b29600474d (patch) | |
tree | d6ebeb332bf7264c343f7923673a27a27a2c2455 | |
parent | ac8f6d96c5af526f5fdfbfafd3a13ef4654f05e8 (diff) | |
download | dleyna-server-541f912da75d75b2e41eeb680e53e9b29600474d.tar.gz |
[Device] Fix nested gupnp service calls
Signed-off-by: Regis Merlino <regis.merlino@intel.com>
-rw-r--r-- | libdleyna/server/device.c | 54 |
1 files changed, 32 insertions, 22 deletions
diff --git a/libdleyna/server/device.c b/libdleyna/server/device.c index ce86a56..1669345 100644 --- a/libdleyna/server/device.c +++ b/libdleyna/server/device.c @@ -1500,13 +1500,13 @@ static void prv_get_system_update_id_for_prop(GUPnPServiceProxy *proxy, goto on_complete; } - gupnp_service_proxy_begin_action(proxy, "GetSystemUpdateID", - prv_system_update_id_for_prop_cb, - cb_data, - NULL); + cb_data->action = gupnp_service_proxy_begin_action( + proxy, "GetSystemUpdateID", + prv_system_update_id_for_prop_cb, + cb_data, + NULL); cb_data->proxy = proxy; - g_object_add_weak_pointer((G_OBJECT(proxy)), (gpointer *)&cb_data->proxy); @@ -1595,17 +1595,22 @@ static void prv_get_system_update_id_for_props(GUPnPServiceProxy *proxy, goto on_complete; } - gupnp_service_proxy_begin_action(proxy, "GetSystemUpdateID", - prv_system_update_id_for_props_cb, - cb_data, - NULL); + cb_data->action = gupnp_service_proxy_begin_action( + proxy, "GetSystemUpdateID", + prv_system_update_id_for_props_cb, + cb_data, + NULL); - cb_data->proxy = proxy; + if (cb_data->proxy != NULL) + g_object_remove_weak_pointer((G_OBJECT(cb_data->proxy)), + (gpointer *)&cb_data->proxy); + cb_data->proxy = proxy; g_object_add_weak_pointer((G_OBJECT(proxy)), (gpointer *)&cb_data->proxy); - cb_data->cancel_id = g_cancellable_connect( + if (!cb_data->cancel_id) + cb_data->cancel_id = g_cancellable_connect( cb_data->cancellable, G_CALLBACK(dls_async_task_cancelled_cb), cb_data, NULL); @@ -1698,13 +1703,13 @@ static void prv_get_sr_token_for_prop(GUPnPServiceProxy *proxy, goto on_error; } - gupnp_service_proxy_begin_action(proxy, "GetServiceResetToken", - prv_service_reset_for_prop_cb, - cb_data, - NULL); + cb_data->action = gupnp_service_proxy_begin_action( + proxy, "GetServiceResetToken", + prv_service_reset_for_prop_cb, + cb_data, + NULL); cb_data->proxy = proxy; - g_object_add_weak_pointer((G_OBJECT(proxy)), (gpointer *)&cb_data->proxy); @@ -1786,17 +1791,22 @@ static void prv_get_sr_token_for_props(GUPnPServiceProxy *proxy, goto on_complete; /* No error here, just skip the property */ } - gupnp_service_proxy_begin_action(proxy, "GetServiceResetToken", - prv_service_reset_for_props_cb, - cb_data, - NULL); + cb_data->action = gupnp_service_proxy_begin_action( + proxy, "GetServiceResetToken", + prv_service_reset_for_props_cb, + cb_data, + NULL); - cb_data->proxy = proxy; + if (cb_data->proxy != NULL) + g_object_remove_weak_pointer((G_OBJECT(cb_data->proxy)), + (gpointer *)&cb_data->proxy); + cb_data->proxy = proxy; g_object_add_weak_pointer((G_OBJECT(proxy)), (gpointer *)&cb_data->proxy); - cb_data->cancel_id = g_cancellable_connect( + if (!cb_data->cancel_id) + cb_data->cancel_id = g_cancellable_connect( cb_data->cancellable, G_CALLBACK(dls_async_task_cancelled_cb), cb_data, NULL); |