summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* autogen.sh: Implement GNOME Build APIbaserock/morphColin Walters2013-01-161-1/+3
| | | | | | http://people.gnome.org/~walters/docs/build-api.txt Signed-off-by: Adam Jackson <ajax@redhat.com>
* c_client.py: Fix python-3 invalid except statementChí-Thanh Christopher Nguyễn2012-11-101-1/+1
| | | | | | | | | Replace except statement with a PEP-3110 compliant one. This fixes a regression introduced by c3deeaf714630531d693a6a902b8dabf791858b1 https://bugs.freedesktop.org/show_bug.cgi?id=55690 Reviewed-by: Peter Harris <pharris@opentext.com> Signed-off-by: Uli Schlachter <psychon@znc.in>
* c-client.py: Fix python-3 AttributeError: 'dict' object has no attribute ↵Chí-Thanh Christopher Nguyễn2012-11-101-3/+3
| | | | | | | | | | 'iteritems' This fixes a regression introduced by ea71d7d7e3f5d8189b80747678e9ca9a417b1d37 https://bugs.freedesktop.org/show_bug.cgi?id=55690 Reviewed-by: Peter Harris <pharris@opentext.com> Signed-off-by: Uli Schlachter <psychon@znc.in>
* Release libxcb 1.91.9Uli Schlachter2012-10-052-1/+14
| | | | Signed-off-by: Uli Schlachter <psychon@znc.in>
* Include static man pages in "make dist"Uli Schlachter2012-10-051-1/+2
| | | | | | | | | This was found by distcheck. It tried to install src/man/xcb-examples.3 and src/man/xcb-requests.3, but those files weren't in the distribution. Fix this by explicitly telling automake to distribute those files. Signed-off-by: Uli Schlachter <psychon@znc.in>
* Fix a multi-thread deadlockUli Schlachter2012-09-301-2/+12
| | | | | | | | | | | | | | This fixes a deadlock which was seen in-the-wild with wine. It could happen that two threads tried to read from the socket at the same time and one of the thread got stuck inside of poll()/select(). The fix works by making sure that the writing thread doesn't steal the reading thread's reply. Debugged-by: Erich Hoover <ehoover@mines.edu> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54671 Signed-off-by: Uli Schlachter <psychon@znc.in>
* Add a .gitignore for src/man/Uli Schlachter2012-09-251-0/+3
| | | | Signed-off-by: Uli Schlachter <psychon@znc.in>
* Allow xcb_send_request with >MAX_IOV iovecsPeter Harris2012-09-182-1/+13
| | | | | | | | | | | This allows an application to do a scatter/gather operation on a large image buffer to avoid the extra memcpy. Use autoconf to use UIO_MAXIOV where IOV_MAX is not available (and the POSIX minimum of 16 where neither are available). Reviewed-by: Uli Schlachter <psychon@znc.in> Signed-off-by: Peter Harris <pharris@opentext.com>
* Return connection failure if display string specifies non-existent screenAlan Coopersmith2012-08-293-0/+19
| | | | | | | | | | | | | Matches the behaviour of Xlib - if you set DISPLAY to :0.1 but only have one screen, closes connection and returns error. This introduces a new connection error code: XCB_CONN_CLOSED_INVALID_SCREEN Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
* Add AC_USE_SYSTEM_EXTENSIONS to allow use of more system functionalityAlan Coopersmith2012-08-251-0/+7
| | | | | | Copied from libX11 configure.ac Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
* Always include "config.h" at the start of all C source files.Alan Coopersmith2012-08-258-1/+31
| | | | | | | | Allows configure to set defines such as _POSIX_SOURCE in config.h that affect functions exposed by system headers and get consistent results across all the source files. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
* Fix "sppported" typo in doxygen comment for XCB_CONN_CLOSED_EXT_NOTSUPPORTEDAlan Coopersmith2012-08-251-1/+1
| | | | Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
* c_client: Fix parallel-make issue creating 'man' directoryColin Walters2012-08-141-1/+5
| | | | | | | With make -j, it was possible to hit a race condition in the code to make the 'man' directory. Signed-off-by: Julien Danjou <julien@danjou.info>
* xcb_connect: launchd: Don't fall back on tcp if $DISPLAY is a path to a ↵Jeremy Huddleston2012-04-211-1/+1
| | | | | | launchd socket Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
* Move static man to manJulien Danjou2012-03-273-1/+1
| | | | Signed-off-by: Julien Danjou <julien@danjou.info>
* Do not list manpages, use a wildcardJulien Danjou2012-03-272-5/+4
| | | | Signed-off-by: Julien Danjou <julien@danjou.info>
* Split manpage list in two (static/built)Julien Danjou2012-03-272-3/+5
| | | | Signed-off-by: Julien Danjou <julien@danjou.info>
* Allow undocumented code to be builtJulien Danjou2012-03-261-20/+20
| | | | Signed-off-by: Julien Danjou <julien@danjou.info>
* c_client.py: generate manpagesMichael Stapelberg2012-03-265-6/+827
| | | | Signed-off-by: Julien Danjou <julien@danjou.info>
* Release libxcb 1.8.11.8.1Julien Danjou2012-03-092-2/+12
| | | | Signed-off-by: Julien Danjou <julien@danjou.info>
* Fix a busy loop on BSD and Mac OSUli Schlachter2012-03-081-15/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On FreeBSD MSG_WAITALL on a non-blocking socket fails immediately if less bytes than were asked for are available. This is different than the behavior on linux where as many bytes as are available are returned in this case. Other OS apparently follow the FreeBSD behavior. _xcb_in_read() is used to fill xcb's read buffer, thus this function will call recv() with a big length argument (xcb's read buffer is by default 16 KiB large). That many bytes are highly unlikely to be available in the kernel buffer. This means that _xcb_in_read() always failed on FreeBSD. Since the socket was still signaled as readable by poll(), this bug even resulted in a busy loop. The same issue is present in read_block(), but here it is slightly different. read_block() is called when we read the first few bytes of an event or a reply, so that we already know its length. This means that we should be able to use MSG_WAITALL here, because we know how many bytes there have to be. However, that function could busy loop, too, when only the first few bytes of the packet were sent while the rest is stuck somewhere on the way to us. Thus, MSG_WAITALL should be removed here, too. Thanks to Christoph Egger from Debian for noticing the problem, doing all the necessary debugging and figuring out what the problem was! This patch is 99% from debian. Thanks for all the work. This bug was introduced in commit 2dcf8b025be88a25d4333abdc28d425b88238d96. This commit also reverts commit 9061ee45b8dbe5431c23e3f628089d703ccad0b1. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=45776 Signed-off-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
* darwin: Use read(2) rather than recv(2)Jeremy Huddleston2012-03-081-0/+8
| | | | | | | | 2dcf8b025be88a25d4333abdc28d425b88238d96 was causing some regressions on darwin, so go back to using read(2) there until I have time to investigate further. Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
* Fallback to TCP if no protocol is specified and the UNIX connection failsJulien Cristau2012-02-191-0/+5
| | | | | Signed-off-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Jamey Sharp <jamey@minilop.net>
* Add xkb_internals and xkb_issues to EXTRA_DIST.Arnaud Fontaine2012-02-101-1/+3
|
* Update use of error_connection under WIN32 to _xcb_conn_ret_error()Jon TURNEY2012-02-091-1/+1
| | | | | | | | | | | | Unfortunately, commit 31b57676 adding WSACleanup/WSAShutdown on Win32 adds a new use of error_connection, which was removed in commit 769acff0, applied 5 minutes earlier. src/xcb_util.c: In function 'xcb_connect_to_display_with_auth_info': src/xcb_util.c:433:39: error: 'error_connection' undeclared (first use in this function) Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk> Reviewed-by: Arvind Umrao <arvind.umrao@oracle.com> Signed-off-by: Uli Schlachter <psychon@znc.in>
* Fix build of xcb_auth.c with XDMCP on WIN32Jon TURNEY2012-01-281-0/+9
| | | | | | | | | | | | | | | | | | | | | | | Fix a redefinition problem which shows up when building for _WIN32 and libXdmcp is installed, so HASXDMAUTH is enabled It seems this is a special place in xcb as it uses other X11 library headers here If HASXDMAUTH is defined, include the wrapped windows.h before any header which includes it unwrapped, to avoid conflicts with types defined in X headers We need to include config.h and check HASXDMAUTH to avoid an unconditional dependency on x11proto headers In file included from install/include/X11/Xdmcp.h:19:0, from git/xcb/libxcb/src/xcb_auth.c:52: install/include/X11/Xmd.h:120:14: error: conflicting types for 'INT32' /usr/i686-pc-mingw32/sys-root/mingw/include/basetsd.h:54:13: note: previous declaration of 'INT32' was here install/include/X11/Xmd.h:143:15: error: conflicting types for 'BOOL' /usr/i686-pc-mingw32/sys-root/mingw/include/windef.h:234:17: note: previous declaration of 'BOOL' was here Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
* Revert "Fix include order with Xdmcp on WIN32"Jeremy Huddleston2012-01-281-4/+3
| | | | | | | | | | | | | This reverts commit 0e9246def562be97cc816f824f702233a826ec56. This change caused build failures because <X11/Xdmcp.h> was never included under any circumstance. This is because the check for HASXDMAUTH was moved before the inclusion of config.h (via xcbint.h) which defined it. Found-by: Tinderbox Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> Reviewed-by: Jon TURNEY <jon.turney@dronecode.org.uk>
* Bump xcb-proto requirementJulien Danjou2012-01-121-1/+1
| | | | | | We are now unable to build xcb-proto before 1.7. Signed-off-by: Julien Danjou <julien@danjou.info>
* Release libxcb 1.81.8Julien Danjou2012-01-112-1/+46
| | | | Signed-off-by: Julien Danjou <julien@danjou.info>
* Use WSAStartup()/WSACleanup() on WIN32Ryan Pavlik2012-01-112-1/+16
| | | | | | | | | | | | | | | | | | The alternative is to use these in every WIN32 application which uses xcb. Doing it this way should be safe, as, according to MSDN, "There must be a call to WSACleanup for each successful call to WSAStartup. Only the final WSACleanup function call performs the actual cleanup. The preceding calls simply decrement an internal reference count" (We should probably also include ws2_32 in Libs.private for libxcb, as anything which links with libxcb will also need that, but there seems to be some pkg-config issues to resolve first...) v2: Check for errors so WSAStartup()/WSACleanup() uses are balanced v3: Use same indentation style as surrounding code Reviewed-by: Peter Harris <pharris@opentext.com> Signed-off-by: Julien Danjou <julien@danjou.info>
* Fix include order with Xdmcp on WIN32Ryan Pavlik2012-01-111-3/+4
| | | | | | | | | Fix a redefinition problem due to include order which shows up when building for _WIN32 and libXdmcp is installed, so HASXDMAUTH is enabled Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk> Reviewed-by: Peter Harris <pharris@opentext.com> Signed-off-by: Julien Danjou <julien@danjou.info>
* Fix WIN32 compilation after commit 163c47bdc0d32785d831e4c93fea9ab7e023446bJon TURNEY2012-01-112-2/+2
| | | | | | | | | WIN32 does not have arpa/inet.h, so do not try to include it unless _WIN32 is not defined Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk> Reviewed-by: Peter Harris <pharris@opentext.com> Signed-off-by: Julien Danjou <julien@danjou.info>
* Added more error states and removed global error_connectionArvind Umrao2012-01-116-26/+72
| | | | | | | | | | | | | | | | | | | | Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=41443 Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=42304 I have added more xcb connection error states at xcb.h header. Also I have removed global error_connection variable, and added an interface that returns connection error state. TBD: I will segregate errors states in a separate header file and try to provide more precise error states, in future. Also I will give patch for libX11, in that patch xcb_connection_t::has_error will be passed to default io handler of libX11. This value can then be used for displaying error messages. Reviewed-by: Rami Ylimäki <rami.ylimaki@vincit.fi> Reviewed-by: Uli Schlachter <psychon@znc.in> Signed-off-by: Arvind Umrao <arvind.umrao@oracle.com>
* Make xcb_take_socket keep flushing until idleKeith Packard2012-01-111-1/+7
| | | | | | | | | | | _xcb_out_flush_to will drop the iolock in pthread_cond_wait allowing other threads to queue new requests. When this happened, there would be requests queued for the socket after _xcb_out_flush_to returned, and xcb_take_socket would throw an assert. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29875 Signed-off-by: Keith Packard <keithp@keithp.com> Signed-off-by: Julien Danjou <julien@danjou.info>
* Fix a dead-lock due to xcb_poll_for_replyUli Schlachter2011-09-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Imagine two threads: Thread#1: for(;;) { xcb_get_input_focus_reply(c, xcb_get_input_focus(c), 0); } Thread#2: for(;;) { xcb_poll_for_event(c); } Since xcb_poll_for_event() calls _xcb_in_read() directly without synchronizing with any other readers, this causes two threads to end up calling recv() at the same time. We now have a race because any of these two threads could get read the GetInputFocus reply. If thread#2 reads this reply, it will be put in the appropriate queue and thread#1 will still be stuck in recv(), although its reply was already received. If no other reply or event causes this thread to wake up, the process deadlocks. To fix this, we have to make sure that there is only ever one thread reading from the connection. The obvious solution is to check in poll_for_next_event() if another thread is already reading (in which case c->in.reading != 0) and not to read from the wire in this case. This solution is actually correct if we assume that the other thread is blocked in poll() which means there isn't any data which can be read. Since we already checked that there is no event in the queue this means that poll_for_next_event() didn't find any event to return. There might be a small race here where the other thread already determined that there is data to read, but it still has to wait for c->iolock. However, this means that the next poll_for_next_event() will be able to read the event, so this shouldn't cause any problems. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=40372 Signed-off-by: Uli Schlachter <psychon@znc.in> Signed-off-by: Peter Harris <pharris@opentext.com>
* Keep ALIGNOF definition out of the public namespace.Jamey Sharp2011-08-241-3/+3
| | | | | | | | Uli's patch is an excellent solution; I just want to keep the new ALIGNOF macro hidden from XCB's users, as they don't need it to call XCB. Signed-off-by: Jamey Sharp <jamey@minilop.net>
* Support pre-IPv6 systems (without getaddrinfo)Markus Duft2011-08-243-7/+54
| | | | | | | Some of these systems (eg. Interix on XP) are still in use. Reviewed-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Peter Harris <pharris@opentext.com>
* Compute alignment correctlyUli Schlachter2011-08-241-1/+11
| | | | | | | | | | | | | | | | | | | | The code previously assumed that everything has to be aligned to a 4 byte boundary. This assumption is wrong as e.g. the STR struct from xproto shows. Instead, each type has to be aligned to its natural alignment. So a char doesn't need any alignment, a INT16 gets aligned to a 2-byte-boundary and a INT32 gets the old 4 byte alignment. I'm not 100% sure that this commit is correct, but some quick tests with awesome and cairo-xcb went well. This commit causes lots of dead assignments to xcb_align_to since only the last field's alignment is actually used, but this simplified this patch a lot. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=34037 Signed-off-by: Uli Schlachter <psychon@znc.in> Signed-off-by: Peter Harris <pharris@opentext.com>
* Drop AI_ADDRCONFIG when resolving TCP addressesMichael Stapelberg2011-08-181-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a system is completely offline (no interface has an IP address but 'lo'), xcb could not connect to localhost via TCP, e.g. connections with DISPLAY=127.0.0.1:0 fail. AI_ADDRCONFIG will only return IPv4 addresses if the system has an IPv4 address configured (likewise for IPv6). This also takes place when resolving localhost (or 127.0.0.0/8 or ::1). Also, as per RFC 3493, loopback addresses are not considered as valid addresses when determining whether to return IPv4 or IPv6 addresses. As per mailing-list discussion on the xcb list started with message 20110813215405.5818a0c1@x200, the AI_ADDRCONFIG flag is there for historical reasons: In the old days, the "default on-link" assumption in IPv6 made the flag vey much indispensable for dual-stack hosts on IPv4-only networks. Without it, there would be long timeouts trying non-existent IPv6 connectivity. Nowadays, this assumption has been flagged as historic bad practice by IETF, and hosts should have been updated to not make it anymore. Then AI_ADDRCONFIG became mostly cosmetic: it avoids phony "Protocol family not supported" or "Host unreachable" errors while trying to connect to a dual- stack mode from a host with no support for source address selection. Nowadays, on up-to-date systems, this flag is completely useless. Then again, I understood only the very latest MacOS release is "up-to-date" with this definition.
* Insert, not append explicit xcbgen dir python pathJames Jones2011-05-111-1/+1
| | | | | | | | | | | | If a the path to the xcb python generate libs is explicitly specified to c_client.py, insert it in the python path list just after the local dir entry, rather than appending it to the existing paths. This keeps a global/distro install of xcb from overriding a local build of the xcb proto files. Signed-off-by: James Jones <jajones@nvidia.com> Signed-off-by: Jamey Sharp <jamey@minilop.net>
* Add support for building with Python 3David Coles2011-05-042-20/+21
| | | | | | | | | | | | | | | | | | | | | | | Python 3 introduces some language changes that cause issues when running c_client.py. This also breaks compatibility with Python 2.5 since it does not support the "as" statement in try/except blocks and does not have reduce() in the functools package. The main changes are: * try/except blocks require `except ... as ...:` to resolve syntactical ambiguity * map() and filter() return iterators rather than lists in Python 3 * reduce() is now in functools package (and not built-in in Python 3) * Dictionaries don't have a has_key() method in Python 3 * None and int types can't be directly compared in Python 3 * print() is a statement in Python 3 See http://diveintopython3.org/porting-code-to-python-3-with-2to3.html and PEP-3110 for details. Verified on Python 2.6.5 and 3.1.3. Signed-off-by: David Coles <dcoles@gaikai.com> Signed-off-by: Julien Danjou <julien@danjou.info>
* Revert "Introduce xcb_wait_for_event_until, for consuming responses in ↵Jamey Sharp2011-04-123-79/+3
| | | | | | | | | | | | | | | | | | wire-order." This function was intended to allow libX11 to fix a multi-threaded hang, but the corresponding libX11 patch caused single-threaded apps to spin sometimes. Since I've retracted that patch, this patch has no users and shouldn't go into a release unless/until that changes. This reverts commit 2415c11dec5e5adb0c17f98aa52fbb371a4f8f23. Conflicts: src/xcb.h src/xcb_in.c Signed-off-by: Jamey Sharp <jamey@minilop.net>
* Introduce a variant of xcb_poll_for_event for examining event queue.Rami Ylimäki2011-04-122-2/+28
| | | | | | | | | In some circumstances using xcb_poll_for_event is suboptimal because it checks the connection for new events. This may lead to a lot of failed nonblocking read system calls. Signed-off-by: Rami Ylimäki <rami.ylimaki@vincit.fi> Signed-off-by: Jamey Sharp <jamey@minilop.net>
* If protocol is "unix", use a Unix domain socket, not TCPAlan Coopersmith2011-04-121-8/+6
| | | | | | | | | | | Fixes fallback to local connections from Xlib's XOpenDisplay(), which will try with protocol "unix" if a hostname is specified and tcp fails (as it usually will now that most OS'es ship with -nolisten tcp enabled). Also fixes explicitly specifying DISPLAY as "unix/foo:0", which Xlib previously accepted for Unix domain sockets. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
* Make launchd code in xcb_util.c match surrounding code indent levelsAlan Coopersmith2011-04-121-5/+5
| | | | Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
* Handle XGE events with the "send event" flagCarlos Garnacho2011-04-121-1/+1
| | | | | | | | This patch is necessary so xcb reads the payload after the message for GenericEvents with the 0x80 flag turned on. Signed-off-by: Carlos Garnacho <carlosg@gnome.org> Signed-off-by: Jamey Sharp <jamey@minilop.net>
* Add #include <sys/socket.h> to xcb_conn.cAlan Coopersmith2011-04-041-0/+1
| | | | | | | | | | Solves compiler warning on Solaris: "xcb_conn.c", line 304: warning: implicit function declaration: shutdown Also provides system definition of SHUT_RDWR on Solaris 11. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Jamey Sharp <jamey@minilop.net>
* Remove unused DECnet codeAlan Coopersmith2011-04-041-65/+6
| | | | | | | | | | | "unifdef -UDNETCONN src/xcb_util.c" plus re-indenting code that was formerly in the else clause after a DECnet check. DECnet support has been removed from most of the X.Org code base for several years, and it appears DNETCONN was never defined in XCB. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Jamey Sharp <jamey@minilop.net>
* Use special path to sockets when running under Solaris Trusted ExtensionsAlan Coopersmith2011-04-042-0/+25
| | | | | | | | | Solaris Trusted Extensions puts the endpoints for the X server's Unix domain sockets in a special directory shared from the global zone to each of the labeled zones, since each labeled zone has a separate /tmp. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Peter Harris <pharris@opentext.com>
* Prevent theoretical double free and leak on get_peer_sock_name.Rami Ylimäki2011-03-241-4/+7
| | | | | | | | | | | | | Variable new_sockname will leak and sockname will be double freed if both of the cases shown below are true. 1. realloc succeeds and doesn't return the original pointer 2. calling socket_func fails Signed-off-by: Rami Ylimäki <rami.ylimaki@vincit.fi> Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi> Reviewed-by: Arnaud Fontaine <arnau@debian.org> Signed-off-by: Peter Harris <pharris@opentext.com>