aboutsummaryrefslogtreecommitdiff
path: root/libxcb
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2014-03-04 12:18:13 +0100
committermarha <marha@users.sourceforge.net>2014-03-04 12:23:48 +0100
commit45392e4a0642880b569ea5d4a350cdc395a2c7db (patch)
treec3c2a49de903a18c3f8e1bf79684c29337ebcf7c /libxcb
parent5ec0616d4e3c4c6095f4975abbe9c21e5b6af967 (diff)
parent321c01267ae1c446f1bd22b642567fcafa016c02 (diff)
downloadvcxsrv-45392e4a0642880b569ea5d4a350cdc395a2c7db.tar.gz
vcxsrv-45392e4a0642880b569ea5d4a350cdc395a2c7db.tar.bz2
vcxsrv-45392e4a0642880b569ea5d4a350cdc395a2c7db.zip
Merge remote-tracking branch 'origin/released'
* origin/released: libX11 libxcb mesa xserver xcb-proto xkeyboard-config git update 4 Mar 2014 Conflicts: mesalib/src/mapi/glapi/glapi.h mesalib/src/mapi/glapi/glthread.c mesalib/src/mesa/drivers/dri/common/dri_util.c mesalib/src/mesa/main/bufferobj.c xorg-server/dix/dispatch.c xorg-server/hw/xwin/glx/gen_gl_wrappers.py xorg-server/hw/xwin/winmultiwindowwm.c
Diffstat (limited to 'libxcb')
-rw-r--r--libxcb/src/xcb_conn.c3
-rw-r--r--libxcb/src/xcbint.h1
-rw-r--r--libxcb/xcb-proto/xcbgen/matcher.py2
-rw-r--r--libxcb/xcb-proto/xcbgen/state.py4
4 files changed, 10 insertions, 0 deletions
diff --git a/libxcb/src/xcb_conn.c b/libxcb/src/xcb_conn.c
index 72c4af7c2..7a4ae5646 100644
--- a/libxcb/src/xcb_conn.c
+++ b/libxcb/src/xcb_conn.c
@@ -395,6 +395,9 @@ void _xcb_conn_shutdown(xcb_connection_t *c, int err)
/* Return connection error state.
* To make thread-safe, I need a seperate static
* variable for every possible error.
+ * has_error is the first field in xcb_connection_t, so just
+ * return a casted int here; checking has_error (and only
+ * has_error) will be safe.
*/
xcb_connection_t *_xcb_conn_ret_error(int err)
{
diff --git a/libxcb/src/xcbint.h b/libxcb/src/xcbint.h
index b25f03b3e..67cf5711e 100644
--- a/libxcb/src/xcbint.h
+++ b/libxcb/src/xcbint.h
@@ -192,6 +192,7 @@ void _xcb_ext_destroy(xcb_connection_t *c);
/* xcb_conn.c */
struct xcb_connection_t {
+ /* This must be the first field; see _xcb_conn_ret_error(). */
int has_error;
/* constant data */
diff --git a/libxcb/xcb-proto/xcbgen/matcher.py b/libxcb/xcb-proto/xcbgen/matcher.py
index 6e45b236c..bfa315eb5 100644
--- a/libxcb/xcb-proto/xcbgen/matcher.py
+++ b/libxcb/xcb-proto/xcbgen/matcher.py
@@ -18,10 +18,12 @@ def import_(node, module, namespace):
'''
# To avoid circular import error
from xcbgen import state
+ module.import_level = module.import_level + 1
new_file = join(namespace.dir, '%s.xml' % node.text)
new_root = parse(new_file).getroot()
new_namespace = state.Namespace(new_file)
execute(module, new_namespace)
+ module.import_level = module.import_level - 1
if not module.has_import(node.text):
module.add_import(node.text, new_namespace)
diff --git a/libxcb/xcb-proto/xcbgen/state.py b/libxcb/xcb-proto/xcbgen/state.py
index 52b8d8da7..a6ad3a11e 100644
--- a/libxcb/xcb-proto/xcbgen/state.py
+++ b/libxcb/xcb-proto/xcbgen/state.py
@@ -65,6 +65,8 @@ class Module(object):
self.output = output
self.imports = []
+ self.direct_imports = []
+ self.import_level = 0
self.types = {}
self.events = {}
self.errors = {}
@@ -107,6 +109,8 @@ class Module(object):
# Keeps track of what's been imported so far.
def add_import(self, name, namespace):
+ if self.import_level == 0:
+ self.direct_imports.append((name, namespace.header))
self.imports.append((name, namespace.header))
def has_import(self, name):