comparison pidgin/gtkconv.c @ 25721:aaf11cffe2b2

Prevent multiple voice and video sessions within the same conversation. Properly update the menu when starting or stopping a media session.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Thu, 14 Aug 2008 23:14:56 +0000
parents eb8c8a926589
children 1d9a2296d5d2
comparison
equal deleted inserted replaced
25720:551a462b346a 25721:aaf11cffe2b2
6379 6379
6380 #ifdef USE_VV 6380 #ifdef USE_VV
6381 /* check if account support voice calls, and if the current buddy 6381 /* check if account support voice calls, and if the current buddy
6382 supports it */ 6382 supports it */
6383 if (account != NULL && purple_conversation_get_type(conv) 6383 if (account != NULL && purple_conversation_get_type(conv)
6384 == PURPLE_CONV_TYPE_IM) { 6384 == PURPLE_CONV_TYPE_IM
6385 && gtkconv->gtkmedia == NULL) {
6385 gboolean audio = purple_prpl_can_do_media(account, 6386 gboolean audio = purple_prpl_can_do_media(account,
6386 purple_conversation_get_name(conv), 6387 purple_conversation_get_name(conv),
6387 PURPLE_MEDIA_AUDIO); 6388 PURPLE_MEDIA_AUDIO);
6388 gboolean video = purple_prpl_can_do_media(account, 6389 gboolean video = purple_prpl_can_do_media(account,
6389 purple_conversation_get_name(conv), 6390 purple_conversation_get_name(conv),
7730 if (media) 7731 if (media)
7731 purple_media_wait(media); 7732 purple_media_wait(media);
7732 } 7733 }
7733 7734
7734 static void 7735 static void
7736 pidgin_conv_gtkmedia_destroyed(GtkWidget *widget, PidginConversation *gtkconv)
7737 {
7738 gtk_widget_destroyed(widget, &(gtkconv->gtkmedia));
7739 gray_stuff_out(gtkconv);
7740 }
7741
7742 static void
7735 pidgin_conv_new_media_cb(PurpleMediaManager *manager, PurpleMedia *media, gpointer nul) 7743 pidgin_conv_new_media_cb(PurpleMediaManager *manager, PurpleMedia *media, gpointer nul)
7736 { 7744 {
7737 GtkWidget *gtkmedia; 7745 GtkWidget *gtkmedia;
7738 PurpleConversation *conv; 7746 PurpleConversation *conv;
7739 PidginConversation *gtkconv; 7747 PidginConversation *gtkconv;
7749 gtk_box_pack_start(GTK_BOX(gtkconv->topvbox), gtkmedia, FALSE, FALSE, 0); 7757 gtk_box_pack_start(GTK_BOX(gtkconv->topvbox), gtkmedia, FALSE, FALSE, 0);
7750 gtk_widget_show(gtkmedia); 7758 gtk_widget_show(gtkmedia);
7751 g_signal_connect(G_OBJECT(gtkmedia), "message", G_CALLBACK(pidgin_gtkmedia_message_cb), conv); 7759 g_signal_connect(G_OBJECT(gtkmedia), "message", G_CALLBACK(pidgin_gtkmedia_message_cb), conv);
7752 7760
7753 gtkconv->gtkmedia = gtkmedia; 7761 gtkconv->gtkmedia = gtkmedia;
7754 g_signal_connect(G_OBJECT(gtkmedia), "destroy", G_CALLBACK(gtk_widget_destroyed), &(gtkconv->gtkmedia)); 7762 g_signal_connect(G_OBJECT(gtkmedia), "destroy", G_CALLBACK(
7763 pidgin_conv_gtkmedia_destroyed), gtkconv);
7755 7764
7756 gtk_paned_pack2(GTK_PANED(gtkconv->middle_hpaned), 7765 gtk_paned_pack2(GTK_PANED(gtkconv->middle_hpaned),
7757 pidgin_media_get_display_widget(gtkmedia), FALSE, TRUE); 7766 pidgin_media_get_display_widget(gtkmedia), FALSE, TRUE);
7767
7768 gray_stuff_out(gtkconv);
7758 } 7769 }
7759 7770
7760 #endif 7771 #endif
7761 7772
7762 void * 7773 void *