VLC
2.1.0-git
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
vlc_xlib.h
Go to the documentation of this file.
1
/*****************************************************************************
2
* vlc_xlib.h: initialization of Xlib
3
*****************************************************************************
4
* Copyright (C) 2010 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
#ifndef VLC_XLIB_H
22
# define VLC_XLIB_H 1
23
24
# include <stdio.h>
25
# include <stdlib.h>
26
# include <X11/Xlib.h>
27
# include <X11/Xlibint.h>
28
29
static
inline
bool
vlc_xlib_init
(
vlc_object_t
*obj)
30
{
31
if
(!
var_InheritBool
(obj,
"xlib"
))
32
return
false
;
33
34
bool
ok =
false
;
35
36
/* XInitThreads() can be called multiple times,
37
* but it is not reentrant, so we need this global lock. */
38
vlc_global_lock
(
VLC_XLIB_MUTEX
);
39
40
if
(_Xglobal_lock == NULL &&
unlikely
(_XErrorFunction != NULL))
41
/* (_Xglobal_lock == NULL) => Xlib threads not initialized */
42
/* (_XErrorFunction != NULL) => Xlib already in use */
43
fprintf (stderr,
"%s:%u:%s: Xlib not initialized for threads.\n"
44
"This process is probably using LibVLC incorrectly.\n"
45
"Pass \"--no-xlib\" to libvlc_new() to fix this.\n"
,
46
__FILE__, __LINE__, __func__);
47
else
if
(XInitThreads ())
48
ok =
true
;
49
50
vlc_global_unlock
(
VLC_XLIB_MUTEX
);
51
52
if
(!ok)
53
msg_Err
(obj,
"Xlib not initialized for threads"
);
54
return
ok;
55
}
56
57
#endif
Generated by
1.8.1.2