pidgin/gtksound.c

changeset 37519
09ff1d312b2a
parent 37421
ee3bd4532a33
child 37523
02346b6472b3
equal deleted inserted replaced
37514:ad2ee74b913a 37519:09ff1d312b2a
309 purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/got_attention", ""); 309 purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/got_attention", "");
310 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/conv_focus", TRUE); 310 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/conv_focus", TRUE);
311 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/mute", FALSE); 311 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/mute", FALSE);
312 purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/command", ""); 312 purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/command", "");
313 purple_prefs_add_string(PIDGIN_PREFS_ROOT "/sound/method", "automatic"); 313 purple_prefs_add_string(PIDGIN_PREFS_ROOT "/sound/method", "automatic");
314 purple_prefs_add_int(PIDGIN_PREFS_ROOT "/sound/volume", 50);
315 314
316 #ifdef USE_GSTREAMER 315 #ifdef USE_GSTREAMER
317 purple_debug_info("sound", "Initializing sound output drivers.\n"); 316 purple_debug_info("sound", "Initializing sound output drivers.\n");
318 gst_registry_fork_set_enabled(FALSE); 317 gst_registry_fork_set_enabled(FALSE);
319 if ((gst_init_failed = !gst_init_check(NULL, NULL, &error))) { 318 if ((gst_init_failed = !gst_init_check(NULL, NULL, &error))) {
437 static void 436 static void
438 pidgin_sound_play_file(const char *filename) 437 pidgin_sound_play_file(const char *filename)
439 { 438 {
440 const char *method; 439 const char *method;
441 #ifdef USE_GSTREAMER 440 #ifdef USE_GSTREAMER
442 float volume;
443 char *uri; 441 char *uri;
444 GstElement *sink = NULL; 442 GstElement *sink = NULL;
445 GstElement *play = NULL; 443 GstElement *play = NULL;
446 GstBus *bus = NULL; 444 GstBus *bus = NULL;
447 #endif 445 #endif
520 #endif /* _WIN32 */ 518 #endif /* _WIN32 */
521 519
522 #ifdef USE_GSTREAMER 520 #ifdef USE_GSTREAMER
523 if (gst_init_failed) /* Perhaps do gdk_beep instead? */ 521 if (gst_init_failed) /* Perhaps do gdk_beep instead? */
524 return; 522 return;
525 volume = (float)(CLAMP(purple_prefs_get_int(PIDGIN_PREFS_ROOT "/sound/volume"),0,100)) / 50;
526 #ifdef _WIN32 523 #ifdef _WIN32
527 if (!strcmp(method, "automatic")) { 524 if (!strcmp(method, "automatic")) {
528 sink = gst_element_factory_make("directsoundsink", "sink"); 525 sink = gst_element_factory_make("directsoundsink", "sink");
529 if (sink == NULL) 526 if (sink == NULL)
530 sink = gst_element_factory_make("waveformsink", "sink"); 527 sink = gst_element_factory_make("waveformsink", "sink");
566 #else 563 #else
567 uri = g_strdup_printf("file://%s", filename); 564 uri = g_strdup_printf("file://%s", filename);
568 #endif 565 #endif
569 566
570 g_object_set(G_OBJECT(play), "uri", uri, 567 g_object_set(G_OBJECT(play), "uri", uri,
571 "volume", volume,
572 "audio-sink", sink, NULL); 568 "audio-sink", sink, NULL);
573 569
574 bus = gst_pipeline_get_bus(GST_PIPELINE(play)); 570 bus = gst_pipeline_get_bus(GST_PIPELINE(play));
575 gst_bus_add_watch(bus, bus_call, play); 571 gst_bus_add_watch(bus, bus_call, play);
576 572

mercurial