Mercurial > pidgin.yaz
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 * |