[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freedesktop-xcb
Subject:    [Xcb] [PATCH libxcb v3 4/5] Code generator: Use xcb_send_request_with_fds()
From:       Uli Schlachter <psychon () znc ! in>
Date:       2015-05-26 20:00:29
Message-ID: 5564D0DD.2090203 () znc ! in
[Download RAW message or body]

Signed-off-by: Uli Schlachter <psychon@znc.in>
---
 src/c_client.py | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/c_client.py b/src/c_client.py
index e55fc3c..53a1163 100644
--- a/src/c_client.py
+++ b/src/c_client.py
@@ -2298,6 +2298,9 @@ def _c_request_helper(self, name, void, regular, aux=False, \
reply_fds=False):  _c('    unsigned int i;')
         _c('    unsigned int xcb_tmp_len;')
         _c('    char *xcb_tmp;')
+    num_fds = len([field for field in param_fields if field.isfd])
+    if num_fds > 0:
+        _c('    int fds[%d];' % (num_fds))
     _c('')
 
     # fixed size fields
@@ -2398,11 +2401,16 @@ def _c_request_helper(self, name, void, regular, aux=False, \
                reply_fds=False):
         # no padding necessary - _serialize() keeps track of padding automatically
 
     _c('')
+    fd_index = 0
     for field in param_fields:
         if field.isfd:
-            _c('    xcb_send_fd(c, %s);', field.c_field_name)
+            _c('    fds[%d] = %s;', fd_index, field.c_field_name)
+            fd_index = fd_index + 1
 
-    _c('    xcb_ret.sequence = xcb_send_request(c, %s, xcb_parts + 2, &xcb_req);', \
func_flags) +    if num_fds == 0:
+        _c('    xcb_ret.sequence = xcb_send_request(c, %s, xcb_parts + 2, \
&xcb_req);', func_flags) +    else:
+        _c('    xcb_ret.sequence = xcb_send_request_with_fds(c, %s, xcb_parts + 2, \
&xcb_req, %d, fds);', func_flags, num_fds)  
     # free dyn. all. data, if any
     for f in free_calls:
-- 
2.1.4

_______________________________________________
Xcb mailing list
Xcb@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xcb


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic