SwfdecPlayback * swfdec_playback_open (SwfdecPlayer *player, GMainContext *context) { SwfdecPlayback *sound; const GList *walk; g_return_val_if_fail (SWFDEC_IS_PLAYER (player), NULL); g_return_val_if_fail (context != NULL, NULL); sound = g_new0 (SwfdecPlayback, 1); sound->player = player; g_signal_connect (player, "advance", G_CALLBACK (advance_before), sound); g_signal_connect (player, "audio-added", G_CALLBACK (audio_added), sound); g_signal_connect (player, "audio-removed", G_CALLBACK (audio_removed), sound); for (walk = swfdec_player_get_audio (player); walk; walk = walk->next) { swfdec_playback_stream_open (sound, walk->data); } g_main_context_ref (context); sound->context = context; return sound; }
SwfdecPlayback * swfdec_playback_open (SwfdecPlayer *player, GMainContext *context) { SwfdecPlayback *sound; const GList *walk; pa_mainloop_api *pa_api; g_return_val_if_fail (SWFDEC_IS_PLAYER (player), NULL); g_return_val_if_fail (context != NULL, NULL); sound = g_new0 (SwfdecPlayback, 1); sound->player = player; g_signal_connect (player, "advance", G_CALLBACK (advance_before), sound); g_signal_connect (player, "audio-added", G_CALLBACK (audio_added), sound); g_signal_connect (player, "audio-removed", G_CALLBACK (audio_removed), sound); /* Create our mainloop attachment to glib. XXX: I hope this means we don't * have to run the main loop using pa functions. */ sound->pa_mainloop = pa_glib_mainloop_new (context); pa_api = pa_glib_mainloop_get_api (sound->pa_mainloop); sound->pa = pa_context_new (pa_api, "swfdec"); pa_context_set_state_callback (sound->pa, context_state_callback, sound); pa_context_connect (sound->pa, NULL, /* default server */ 0, /* default flags */ NULL /* spawning api */ ); for (walk = swfdec_player_get_audio (player); walk; walk = walk->next) { swfdec_playback_stream_open (sound, walk->data); } g_main_context_ref (context); sound->context = context; return sound; }
static void audio_added (SwfdecPlayer *player, SwfdecAudio *audio, SwfdecPlayback *sound) { swfdec_playback_stream_open (sound, audio); }