1/*** 2 This file is part of PulseAudio. 3 4 PulseAudio is free software; you can redistribute it and/or modify 5 it under the terms of the GNU Lesser General Public License as published 6 by the Free Software Foundation; either version 2.1 of the License, 7 or (at your option) any later version. 8 9 PulseAudio is distributed in the hope that it will be useful, but 10 WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public License 15 along with PulseAudio; if not, see <http://www.gnu.org/licenses/>. 16***/ 17 18#pragma GCC diagnostic ignored "-Wstrict-prototypes" 19 20#ifdef HAVE_CONFIG_H 21#include <config.h> 22#endif 23 24#include <gtk/gtk.h> 25#include <glib.h> 26 27#include <pulse/context.h> 28#include <pulse/glib-mainloop.h> 29 30pa_context *ctxt; 31pa_glib_mainloop *m; 32 33static void context_state_callback(pa_context *c, void *userdata); 34 35static void connect(void) { 36 int r; 37 38 ctxt = pa_context_new(pa_glib_mainloop_get_api(m), NULL); 39 g_assert(ctxt); 40 41 r = pa_context_connect(ctxt, NULL, PA_CONTEXT_NOAUTOSPAWN|PA_CONTEXT_NOFAIL, NULL); 42 g_assert(r == 0); 43 44 pa_context_set_state_callback(ctxt, context_state_callback, NULL); 45} 46 47static void context_state_callback(pa_context *c, void *userdata) { 48 switch (pa_context_get_state(c)) { 49 case PA_CONTEXT_FAILED: 50 pa_context_unref(ctxt); 51 ctxt = NULL; 52 connect(); 53 break; 54 default: 55 break; 56 } 57} 58 59int main(int argc, char *argv[]) { 60 61 GtkWidget *window; 62 63 gtk_init(&argc, &argv); 64 65 g_set_application_name("This is a test"); 66 gtk_window_set_default_icon_name("foobar"); 67 g_setenv("PULSE_PROP_media.role", "phone", TRUE); 68 69 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 70 gtk_window_set_title(GTK_WINDOW (window), g_get_application_name()); 71 gtk_widget_show_all(window); 72 73 m = pa_glib_mainloop_new(NULL); 74 g_assert(m); 75 76 connect(); 77 gtk_main(); 78 79 pa_context_unref(ctxt); 80 pa_glib_mainloop_free(m); 81 82 return 0; 83} 84