]> git.sesse.net Git - vlc/blob - src/misc/probe.c
decoder: inline DecoderSignalWait()
[vlc] / src / misc / probe.c
1 /*****************************************************************************
2  * probe.c : run-time service listing
3  *****************************************************************************
4  * Copyright © 2009 Rémi Denis-Courmont
5  *
6  * This program is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation; either version 2.1 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
19  *****************************************************************************/
20
21 #ifdef HAVE_CONFIG_H
22 # include "config.h"
23 #endif
24
25 #include <vlc_common.h>
26 #include <vlc_probe.h>
27 #include <vlc_modules.h>
28 #include "libvlc.h"
29
30 #undef vlc_probe
31 void *vlc_probe (vlc_object_t *obj,
32                  const char *capability, size_t *restrict pcount)
33 {
34     vlc_probe_t *probe = vlc_custom_create (obj, sizeof(*probe), "probe");
35     if (unlikely(probe == NULL))
36     {
37         *pcount = 0;
38         return NULL;
39     }
40     probe->list = NULL;
41     probe->count = 0;
42
43     module_t *mod = module_need (probe, capability, NULL, false);
44     if (mod != NULL)
45     {
46         msg_Warn (probe, "probing halted");
47         module_unneed (probe, mod);
48     }
49
50     void *ret = probe->list;
51     *pcount = probe->count;
52     vlc_object_release (probe);
53     return ret;
54 }