]>
code.delx.au - pulseaudio/blob - polyp/mainloop-api.c
4 This file is part of polypaudio.
6 polypaudio is free software; you can redistribute it and/or modify
7 it under the terms of the GNU Lesser General Public License as
8 published by the Free Software Foundation; either version 2.1 of the
9 License, or (at your option) any later version.
11 polypaudio is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with polypaudio; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
29 #include "mainloop-api.h"
33 void (*callback
)(struct pa_mainloop_api
*m
, void *userdata
);
37 static void once_callback(struct pa_mainloop_api
*m
, struct pa_defer_event
*e
, void *userdata
) {
38 struct once_info
*i
= userdata
;
39 assert(m
&& i
&& i
->callback
);
41 i
->callback(m
, i
->userdata
);
43 assert(m
->defer_free
);
47 static void free_callback(struct pa_mainloop_api
*m
, struct pa_defer_event
*e
, void *userdata
) {
48 struct once_info
*i
= userdata
;
53 void pa_mainloop_api_once(struct pa_mainloop_api
* m
, void (*callback
)(struct pa_mainloop_api
*m
, void *userdata
), void *userdata
) {
55 struct pa_defer_event
*e
;
56 assert(m
&& callback
);
58 i
= pa_xmalloc(sizeof(struct once_info
));
59 i
->callback
= callback
;
60 i
->userdata
= userdata
;
63 e
= m
->defer_new(m
, once_callback
, i
);
65 m
->defer_set_destroy(e
, free_callback
);