[gupnp-tools] av-cp: Avoid possible crash on rescan click



commit f17b6ddba34caba39b2530b04a72878ff6c429a8
Author: Jens Georg <mail jensge org>
Date:   Tue Nov 24 23:15:50 2015 +0100

    av-cp: Avoid possible crash on rescan click
    
    Signed-off-by: Jens Georg <mail jensge org>
    
    https://bugzilla.gnome.org/show_bug.cgi?id=697315

 src/av-cp/main.c |   19 +++++++++----------
 1 files changed, 9 insertions(+), 10 deletions(-)
---
diff --git a/src/av-cp/main.c b/src/av-cp/main.c
index 2a420b7..0b1b035 100644
--- a/src/av-cp/main.c
+++ b/src/av-cp/main.c
@@ -85,9 +85,9 @@ static void
 on_rescan_button_clicked (GtkButton *button,
                           gpointer user_data)
 {
-        GSSDPResourceBrowser *browser = GSSDP_RESOURCE_BROWSER (user_data);
+        GUPnPContextManager *cm = GUPNP_CONTEXT_MANAGER (user_data);
 
-        gssdp_resource_browser_rescan (browser);
+        gupnp_context_manager_rescan_control_points (cm);
 }
 
 static void
@@ -97,7 +97,6 @@ on_context_available (GUPnPContextManager *cm,
 {
         GUPnPControlPoint *dms_cp;
         GUPnPControlPoint *dmr_cp;
-        GtkButton *button;
 
         dms_cp = gupnp_control_point_new (context, MEDIA_SERVER);
         dmr_cp = gupnp_control_point_new (context, MEDIA_RENDERER);
@@ -119,18 +118,11 @@ on_context_available (GUPnPContextManager *cm,
                           G_CALLBACK (dmr_proxy_unavailable_cb),
                           NULL);
 
-        button = get_rescan_button ();
-
         gssdp_resource_browser_set_active (GSSDP_RESOURCE_BROWSER (dms_cp),
                                            TRUE);
         gssdp_resource_browser_set_active (GSSDP_RESOURCE_BROWSER (dmr_cp),
                                            TRUE);
 
-        g_signal_connect (button, "clicked",
-                          G_CALLBACK (on_rescan_button_clicked), dms_cp);
-        g_signal_connect (button, "clicked",
-                          G_CALLBACK (on_rescan_button_clicked), dmr_cp);
-
         /* Let context manager take care of the control point life cycle */
         gupnp_context_manager_manage_control_point (context_manager, dms_cp);
         gupnp_context_manager_manage_control_point (context_manager, dmr_cp);
@@ -144,6 +136,7 @@ static gboolean
 init_upnp (int port)
 {
         GUPnPWhiteList *white_list;
+        GtkButton *button;
 
 #if !GLIB_CHECK_VERSION(2, 35, 0)
         g_type_init ();
@@ -164,6 +157,12 @@ init_upnp (int port)
                           G_CALLBACK (on_context_available),
                           NULL);
 
+        button = get_rescan_button ();
+        g_signal_connect (G_OBJECT (button),
+                          "clicked",
+                          G_CALLBACK (on_rescan_button_clicked),
+                          context_manager);
+
         return TRUE;
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]