ssdp_state_e origin;
unsigned int resource_id;
+ gulong available_sid;
+ gulong unavailable_sid;
GSSDPResourceGroup *resource_group;
GSSDPResourceBrowser *resource_browser;
browser = (ssdp_service_s *)user_data;
if (browser == NULL) {
- SSDP_LOGE("Service not found");
+ SSDP_LOGE("Browser not found");
return;
}
}
/* Connect signals */
- g_signal_connect(browser->resource_browser, "resource-available",
+ browser->available_sid = g_signal_connect(browser->resource_browser, "resource-available",
G_CALLBACK(__ssdp_res_available_cb), browser);
- g_signal_connect(browser->resource_browser, "resource-unavailable",
+ browser->unavailable_sid = g_signal_connect(browser->resource_browser, "resource-unavailable",
G_CALLBACK(__ssdp_res_unavailable_cb), browser);
gssdp_resource_browser_set_active(browser->resource_browser, TRUE);
return SSDP_ERROR_SERVICE_NOT_FOUND;
}
+ g_signal_handler_disconnect(browser->resource_browser, browser->available_sid);
+ g_signal_handler_disconnect(browser->resource_browser, browser->unavailable_sid);
gssdp_resource_browser_set_active(browser->resource_browser, FALSE);
g_object_unref(browser->resource_browser);