1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
/*
Copyright 2010 Canonical Ltd.
Authors:
Robert Collins <robert.collins@canonical.com>
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License version 3, as published
by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranties of
MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <pulse/glib-mainloop.h>
#include <pulse/context.h>
#include <pulse/operation.h>
#include <pulse/introspect.h>
#include "mockpulse.h"
struct pa_context {
int refcount;
pa_context_notify_cb_t cb;
void *cbdata;
pa_context_state_t state;
};
pa_glib_mainloop *
pa_glib_mainloop_new(GMainContext *c)
{
return NULL;
}
pa_context *
pa_context_new(pa_mainloop_api *loop, char const *name) {
struct pa_context * result = g_new(pa_context, 1);
result->refcount = 1;
return result;
}
void
pa_context_unref(pa_context * context) {
context->refcount--;
if (!context->refcount)
g_free(context);
}
void
pa_context_set_state_callback(pa_context *c, pa_context_notify_cb_t cb, void *userdata)
{
c->cb = cb;
c->cbdata = userdata;
}
void set_pa_context_get_state_result(pa_context *c, pa_context_state_t state)
{
c->state = state;
}
pa_context_state_t
pa_context_get_state(pa_context *c)
{
return c->state;
}
struct pa_operation {
int refcount;
};
/* Can be made into a list if we need multiple callbacks */
static pa_sink_info *next_sink_info;
void
set_pa_context_get_sink_info(pa_sink_info *info) {
next_sink_info = info;
}
pa_operation *
pa_context_get_sink_info_by_index(pa_context *c, uint32_t idx, pa_sink_info_cb_t cb, void * userdata)
{
pa_operation *result = g_new(pa_operation, 1);
result->refcount = 1;
cb(c, next_sink_info, 0, userdata);
return result;
}
void
pa_operation_unref(pa_operation * foo)
{
foo->refcount--;
if (!foo->refcount)
g_free(foo);
}
|