comparison pidgin/gtkmedia.c @ 32672:3828a61c44da

A boring and large patch so I can merge heads.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Fri, 23 Dec 2011 08:21:58 +0000
parents e2a1510da13d
children
comparison
equal deleted inserted replaced
32671:0e69949b3e61 32672:3828a61c44da
38 #ifdef USE_VV 38 #ifdef USE_VV
39 #include "media-gst.h" 39 #include "media-gst.h"
40 40
41 #ifdef _WIN32 41 #ifdef _WIN32
42 #include <gdk/gdkwin32.h> 42 #include <gdk/gdkwin32.h>
43 #elif defined(GDK_WINDOWING_QUARTZ)
44 #include <gdk/gdkquartz.h>
43 #endif 45 #endif
44 46
45 #include <gst/interfaces/xoverlay.h> 47 #include <gst/interfaces/xoverlay.h>
46 48
47 #define PIDGIN_TYPE_MEDIA (pidgin_media_get_type()) 49 #define PIDGIN_TYPE_MEDIA (pidgin_media_get_type())
288 GError *error; 290 GError *error;
289 GtkAccelGroup *accel_group; 291 GtkAccelGroup *accel_group;
290 GtkWidget *menu; 292 GtkWidget *menu;
291 293
292 action_group = gtk_action_group_new("MediaActions"); 294 action_group = gtk_action_group_new("MediaActions");
295 #ifdef ENABLE_NLS
296 gtk_action_group_set_translation_domain(action_group,
297 PACKAGE);
298 #endif
293 gtk_action_group_add_actions(action_group, 299 gtk_action_group_add_actions(action_group,
294 menu_entries, 300 menu_entries,
295 G_N_ELEMENTS(menu_entries), 301 G_N_ELEMENTS(menu_entries),
296 GTK_WINDOW(window)); 302 GTK_WINDOW(window));
297 #ifdef ENABLE_NLS
298 gtk_action_group_set_translation_domain(action_group,
299 PACKAGE);
300 #endif
301 303
302 window->priv->ui = gtk_ui_manager_new(); 304 window->priv->ui = gtk_ui_manager_new();
303 gtk_ui_manager_insert_action_group(window->priv->ui, action_group, 0); 305 gtk_ui_manager_insert_action_group(window->priv->ui, action_group, 0);
304 306
305 accel_group = gtk_ui_manager_get_accel_group(window->priv->ui); 307 accel_group = gtk_ui_manager_get_accel_group(window->priv->ui);
453 progress = gtkmedia->priv->send_progress; 455 progress = gtkmedia->priv->send_progress;
454 else 456 else
455 progress = pidgin_media_get_widget(gtkmedia, session_id, participant); 457 progress = pidgin_media_get_widget(gtkmedia, session_id, participant);
456 458
457 if (progress) 459 if (progress)
458 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), level * 5); 460 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), level);
459 } 461 }
460 462
461 463
462 static void 464 static void
463 pidgin_media_disconnect_levels(PurpleMedia *media, PidginMedia *gtkmedia) 465 pidgin_media_disconnect_levels(PurpleMedia *media, PidginMedia *gtkmedia)
557 if (window) { 559 if (window) {
558 gulong window_id; 560 gulong window_id;
559 #ifdef _WIN32 561 #ifdef _WIN32
560 window_id = GDK_WINDOW_HWND(window); 562 window_id = GDK_WINDOW_HWND(window);
561 #elif defined(HAVE_X11) 563 #elif defined(HAVE_X11)
562 window_id = gdk_x11_window_get_xid(window); 564 window_id = GDK_WINDOW_XWINDOW(window);
565 #elif defined(GDK_WINDOWING_QUARTZ)
566 window_id = (gulong) gdk_quartz_window_get_nsview(window);
563 #else 567 #else
564 # error "Unsupported windowing system" 568 # error "Unsupported windowing system"
565 #endif 569 #endif
566 570
567 purple_media_set_output_window(priv->media, data->session_id, 571 purple_media_set_output_window(priv->media, data->session_id,
787 FALSE, TRUE, 0); 791 FALSE, TRUE, 0);
788 gtk_widget_show(send_widget); 792 gtk_widget_show(send_widget);
789 793
790 /* Hold button */ 794 /* Hold button */
791 gtkmedia->priv->hold = 795 gtkmedia->priv->hold =
792 gtk_toggle_button_new_with_mnemonic("_Hold"); 796 gtk_toggle_button_new_with_mnemonic(_("_Hold"));
793 gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->hold, 797 gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->hold,
794 FALSE, FALSE, 0); 798 FALSE, FALSE, 0);
795 gtk_widget_show(gtkmedia->priv->hold); 799 gtk_widget_show(gtkmedia->priv->hold);
796 g_signal_connect(gtkmedia->priv->hold, "toggled", 800 g_signal_connect(gtkmedia->priv->hold, "toggled",
797 G_CALLBACK(pidgin_media_hold_toggled), 801 G_CALLBACK(pidgin_media_hold_toggled),
876 PURPLE_MEDIA_RECV_AUDIO, sid), FALSE, FALSE, 0); 880 PURPLE_MEDIA_RECV_AUDIO, sid), FALSE, FALSE, 0);
877 } 881 }
878 882
879 if (type & PURPLE_MEDIA_SEND_AUDIO) { 883 if (type & PURPLE_MEDIA_SEND_AUDIO) {
880 gtkmedia->priv->mute = 884 gtkmedia->priv->mute =
881 gtk_toggle_button_new_with_mnemonic("_Mute"); 885 gtk_toggle_button_new_with_mnemonic(_("_Mute"));
882 gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->mute, 886 gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->mute,
883 FALSE, FALSE, 0); 887 FALSE, FALSE, 0);
884 gtk_widget_show(gtkmedia->priv->mute); 888 gtk_widget_show(gtkmedia->priv->mute);
885 g_signal_connect(gtkmedia->priv->mute, "toggled", 889 g_signal_connect(gtkmedia->priv->mute, "toggled",
886 G_CALLBACK(pidgin_media_mute_toggled), 890 G_CALLBACK(pidgin_media_mute_toggled),
967 if (local == TRUE) 971 if (local == TRUE)
968 purple_request_close_with_handle(gtkmedia); 972 purple_request_close_with_handle(gtkmedia);
969 pidgin_media_set_state(gtkmedia, PIDGIN_MEDIA_ACCEPTED); 973 pidgin_media_set_state(gtkmedia, PIDGIN_MEDIA_ACCEPTED);
970 pidgin_media_emit_message(gtkmedia, _("Call in progress.")); 974 pidgin_media_emit_message(gtkmedia, _("Call in progress."));
971 gtk_statusbar_push(GTK_STATUSBAR(gtkmedia->priv->statusbar), 975 gtk_statusbar_push(GTK_STATUSBAR(gtkmedia->priv->statusbar),
972 0, _("Call in progress.")); 976 0, _("Call in progress"));
973 gtk_widget_show(GTK_WIDGET(gtkmedia)); 977 gtk_widget_show(GTK_WIDGET(gtkmedia));
974 } 978 }
975 } 979 }
976 980
977 static void 981 static void
1080 src = gst_element_factory_make("ksvideosrc", NULL); 1084 src = gst_element_factory_make("ksvideosrc", NULL);
1081 if (src == NULL) 1085 if (src == NULL)
1082 src = gst_element_factory_make("dshowvideosrc", NULL); 1086 src = gst_element_factory_make("dshowvideosrc", NULL);
1083 if (src == NULL) 1087 if (src == NULL)
1084 src = gst_element_factory_make("autovideosrc", NULL); 1088 src = gst_element_factory_make("autovideosrc", NULL);
1089 #elif defined(__APPLE__)
1090 src = gst_element_factory_make("osxvideosrc", NULL);
1091 if (src == NULL)
1092 src = gst_element_factory_make("autovideosrc", NULL);
1085 #else 1093 #else
1086 src = gst_element_factory_make("gconfvideosrc", NULL); 1094 src = gst_element_factory_make("gconfvideosrc", NULL);
1087 if (src == NULL) 1095 if (src == NULL)
1088 src = gst_element_factory_make("autovideosrc", NULL); 1096 src = gst_element_factory_make("autovideosrc", NULL);
1089 if (src == NULL) 1097 if (src == NULL)
1134 src = gst_element_factory_make("alsasrc", NULL); 1142 src = gst_element_factory_make("alsasrc", NULL);
1135 if (src == NULL) 1143 if (src == NULL)
1136 src = gst_element_factory_make("osssrc", NULL); 1144 src = gst_element_factory_make("osssrc", NULL);
1137 if (src == NULL) 1145 if (src == NULL)
1138 src = gst_element_factory_make("dshowaudiosrc", NULL); 1146 src = gst_element_factory_make("dshowaudiosrc", NULL);
1147 if (src == NULL)
1148 src = gst_element_factory_make("osxaudiosrc", NULL);
1139 if (src == NULL) { 1149 if (src == NULL) {
1140 purple_debug_error("gtkmedia", "Unable to find a suitable " 1150 purple_debug_error("gtkmedia", "Unable to find a suitable "
1141 "element for the default audio source.\n"); 1151 "element for the default audio source.\n");
1142 return NULL; 1152 return NULL;
1143 } 1153 }