comparison libpurple/media.c @ 26100:23038e1a1754

Fix intermittent crash upon hangup when removing output windows.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Thu, 05 Feb 2009 11:47:36 +0000
parents 218f052b9bf5
children f06eb6e7d907
comparison
equal deleted inserted replaced
26084:218f052b9bf5 26100:23038e1a1754
2336 } 2336 }
2337 } 2337 }
2338 2338
2339 bin = gst_bin_new(NULL); 2339 bin = gst_bin_new(NULL);
2340 2340
2341 if (stream->sink != NULL)
2342 gst_bin_add(GST_BIN(GST_ELEMENT_PARENT(
2343 stream->sink)), bin);
2344
2345 name = g_strdup_printf("stream-sink_%s_%s", 2341 name = g_strdup_printf("stream-sink_%s_%s",
2346 session_id, participant); 2342 session_id, participant);
2347 sink = gst_element_factory_make("autovideosink", name); 2343 sink = gst_element_factory_make("autovideosink", name);
2348 2344
2349 gst_bin_add(GST_BIN(bin), sink); 2345 gst_bin_add(GST_BIN(bin), sink);
2407 gst_object_unref(pad); 2403 gst_object_unref(pad);
2408 2404
2409 gst_element_release_request_pad(GST_ELEMENT_PARENT(peer), peer); 2405 gst_element_release_request_pad(GST_ELEMENT_PARENT(peer), peer);
2410 gst_object_unref(peer); 2406 gst_object_unref(peer);
2411 2407
2408 gst_element_set_locked_state(sink, TRUE);
2412 gst_element_set_state(sink, GST_STATE_NULL); 2409 gst_element_set_state(sink, GST_STATE_NULL);
2413 2410
2414 gst_bin_remove(GST_BIN(GST_ELEMENT_PARENT(sink)), sink); 2411 gst_bin_remove(GST_BIN(GST_ELEMENT_PARENT(sink)), sink);
2415 session->sink = NULL; 2412 session->sink = NULL;
2416 return TRUE; 2413 return TRUE;
2447 } 2444 }
2448 2445
2449 peer = gst_pad_get_peer(pad); 2446 peer = gst_pad_get_peer(pad);
2450 gst_object_unref(pad); 2447 gst_object_unref(pad);
2451 gst_pad_set_blocked_async(peer, TRUE, dummy_block_cb, NULL); 2448 gst_pad_set_blocked_async(peer, TRUE, dummy_block_cb, NULL);
2449 gst_element_set_locked_state(sink, TRUE);
2452 gst_element_set_state(sink, GST_STATE_NULL); 2450 gst_element_set_state(sink, GST_STATE_NULL);
2453 gst_bin_remove(GST_BIN(parent), sink); 2451 gst_bin_remove(GST_BIN(parent), sink);
2454 2452
2455 /* Add fakesink */ 2453 /* Add fakesink */
2456 fakesink = gst_element_factory_make("fakesink", NULL); 2454 fakesink = gst_element_factory_make("fakesink", NULL);