~binli/ubuntu/vivid/pulseaudio/load-extcon-module

« back to all changes in this revision

Viewing changes to src/tests/gtk-test.c

  • Committer: Bin Li
  • Date: 2016-01-23 15:04:48 UTC
  • Revision ID: bin.li@canonical.com-20160123150448-5ockvw4p5xxntda4
init the 1:6.0-0ubuntu9.15 from silo 12

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
30
pa_context *ctxt;
 
31
pa_glib_mainloop *m;
 
32
 
 
33
static void context_state_callback(pa_context *c, void *userdata);
 
34
 
 
35
static 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
 
 
47
static 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
 
 
59
int 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
}