e2c8eb63fc4836728b2a325760c71ae196bcc058
[profile/ivi/pulseaudio.git] / src / main.c
1 #include <stdio.h>
2 #include <signal.h>
3 #include <stddef.h>
4 #include <assert.h>
5 #include <ltdl.h>
6 #include <memblock.h>
7
8 #include "core.h"
9 #include "mainloop.h"
10 #include "module.h"
11 #include "mainloop-signal.h"
12 #include "cmdline.h"
13
14 static struct pa_mainloop *mainloop;
15
16 static void exit_signal_callback(void *id, int sig, void *userdata) {
17     struct pa_mainloop_api* m = pa_mainloop_get_api(mainloop);
18     m->quit(m, 1);
19     fprintf(stderr, __FILE__": got signal.\n");
20 }
21
22 static void aux_signal_callback(void *id, int sig, void *userdata) {
23     struct pa_core *c = userdata;
24     assert(c);
25     pa_module_load(c, sig == SIGUSR1 ? "module-cli" : "module-cli-protocol-unix", NULL);
26 }
27
28 int main(int argc, char *argv[]) {
29     struct pa_core *c;
30     struct pa_cmdline *cmdline = NULL;
31     int r, retval = 0;
32
33     if (!(cmdline = pa_cmdline_parse(argc, argv))) {
34         fprintf(stderr, "Failed to parse command line.\n");
35         return 1;
36     }
37
38     if (cmdline->help) {
39         pa_cmdline_help(argv[0]);
40         pa_cmdline_free(cmdline);
41         return 0;
42     }
43     
44     r = lt_dlinit();
45     assert(r == 0);
46     
47     mainloop = pa_mainloop_new();
48     assert(mainloop);
49
50     r = pa_signal_init(pa_mainloop_get_api(mainloop));
51     assert(r == 0);
52     pa_signal_register(SIGINT, exit_signal_callback, NULL);
53     signal(SIGPIPE, SIG_IGN);
54
55     c = pa_core_new(pa_mainloop_get_api(mainloop));
56     assert(c);
57     
58     pa_module_load(c, "module-oss-mmap", "device=/dev/dsp playback=1 record=1");
59 /*    pa_module_load(c, "module-oss-mmap", "/dev/dsp1");*/
60 /*    pa_module_load(c, "module-pipe-sink", NULL);*/
61     pa_module_load(c, "module-simple-protocol-tcp", NULL);
62 /*    pa_module_load(c, "module-simple-protocol-unix", NULL);
63     pa_module_load(c, "module-cli-protocol-tcp", NULL);
64     pa_module_load(c, "module-cli-protocol-unix", NULL);
65     pa_module_load(c, "module-native-protocol-tcp", NULL);*/
66     pa_module_load(c, "module-native-protocol-unix", NULL);
67     pa_module_load(c, "module-esound-protocol-tcp", NULL);
68     pa_module_load(c, "module-cli", NULL);
69
70     pa_signal_register(SIGUSR1, aux_signal_callback, c);
71     pa_signal_register(SIGUSR2, aux_signal_callback, c);
72     
73     fprintf(stderr, "main: mainloop entry.\n");
74     if (pa_mainloop_run(mainloop, &retval) < 0)
75         retval = 1;
76     fprintf(stderr, "main: mainloop exit.\n");
77     
78     pa_core_free(c);
79
80     pa_signal_done();
81     pa_mainloop_free(mainloop);
82
83         
84         
85     lt_dlexit();
86     
87     return retval;
88 }