385 lines
16 KiB
Plaintext
385 lines
16 KiB
Plaintext
|
Release 1.2 (2009-02-17)
|
||
|
========================
|
||
|
* Stop packaging auto-generated C files into tarball.
|
||
|
|
||
|
Release 1.1.93 (2008-12-11)
|
||
|
===========================
|
||
|
Enhancements:
|
||
|
* Apple: Enable support for launchd DISPLAY socket
|
||
|
* Treat XIDs the same as other cardinal values.
|
||
|
|
||
|
Release 1.1.92 (2008-11-01)
|
||
|
===========================
|
||
|
Enhancements:
|
||
|
* Added small fix to support trailing fixed fields; also warning for non-pad fixed fields
|
||
|
* Fixed overly aggressive warning about fixed field following variable
|
||
|
* Added generation of extern "C" for compatibility with C++
|
||
|
* Remove libxcb-xlib and xcbxlib.h.
|
||
|
* Inline _xcb_lock_io, _xcb_unlock_io, and _xcb_wait_io.
|
||
|
* Track 64-bit sequence numbers internally.
|
||
|
* Use sequence number ranges in pending replies
|
||
|
* Remove duplicate XCB_EXTENSION calls for Composite extension
|
||
|
* Factorize m4 macros and add one to set X extensions
|
||
|
* Allow compile-time setting for XCB queue buffer size
|
||
|
* Support handing off socket write permission to external code.
|
||
|
* Add support for the abstract socket namespace under Linux
|
||
|
|
||
|
Bug fixes:
|
||
|
* Fix tiny memory leak in read_packet
|
||
|
* Fix some fd leaks in _xcb_open_*()
|
||
|
|
||
|
Release 1.1 (2007-11-04)
|
||
|
========================
|
||
|
|
||
|
This release requires xcb-proto 1.1, due to the addition of the
|
||
|
extension-multiword attribute to the XML schema.
|
||
|
|
||
|
This release contains several important bug fixes, summarized below. It
|
||
|
also contains a patch much like Novell's libxcb-sloppy-lock.diff.
|
||
|
Rationale from the commit message follows. The patch and this rationale
|
||
|
were authored by Jamey Sharp <jamey@minilop.net>, with agreement from
|
||
|
Josh Triplett <josh@freedesktop.org>.
|
||
|
|
||
|
I strongly opposed proposals like this one for a long time.
|
||
|
Originally I had a very good reason: libX11, when compiled to use
|
||
|
XCB, would crash soon after a locking correctness violation, so it
|
||
|
was better to have an informative assert failure than a mystifying
|
||
|
crash soon after.
|
||
|
|
||
|
It took some time for me to realize that I'd changed the libX11
|
||
|
implementation (for unrelated reasons) so that it could survive most
|
||
|
invalid locking situations, as long as it wasn't actually being used
|
||
|
from multiple threads concurrently.
|
||
|
|
||
|
The other thing that has changed is that most of the code with
|
||
|
incorrect locking has now been fixed. The value of the assert is
|
||
|
accordingly lower.
|
||
|
|
||
|
However, remaining broken callers do need to be fixed. That's why
|
||
|
libXCB will still noisily print a stacktrace (if possible) on each
|
||
|
assertion failure, even when assert isn't actually invoked to
|
||
|
abort() the program; and that's why aborting is still default. This
|
||
|
environment variable is provided only for use as a temporary
|
||
|
workaround for broken applications.
|
||
|
|
||
|
Enhancements:
|
||
|
* Print a backtrace, if possible, on locking assertion failures.
|
||
|
* Skip abort() on locking assertions if LIBXCB_ALLOW_SLOPPY_LOCK is set.
|
||
|
* xcb_poll_for_event: Return already-read events before reading again.
|
||
|
* Output a configuration summary at the end of ./configure.
|
||
|
|
||
|
Bug fixes:
|
||
|
* Don't hold the xlib-xcb lock while sleeping: that allows deadlock.
|
||
|
* Allow unix:<screen> style display names again.
|
||
|
* Bug #9119: test xcb_popcount
|
||
|
* Fix unit tests for FreeBSD
|
||
|
* NetBSD doesn't have AI_ADDRCONFIG: use it only if it's available.
|
||
|
* Require libXau >= 0.99.2; earlier versions have a broken .pc file
|
||
|
* Use substitition variables in xcb-xinerama.pc.in
|
||
|
* Update autogen.sh to one that does objdir != srcdir
|
||
|
* Add tools/* and autogen.sh to EXTRA_DIST.
|
||
|
* Doxygen can now be fully disabled if desired.
|
||
|
|
||
|
Documentation improvements:
|
||
|
* Many fixes and updates to the tutorial.
|
||
|
* Iterators, requests, and replies get partial Doxygen documentation.
|
||
|
|
||
|
|
||
|
Release 1.0 (2006-11-23)
|
||
|
========================
|
||
|
|
||
|
The "Thanksgiving" release: We feel thankful to have it released. Five years
|
||
|
have passed since XCB's initial commit on September 3rd, 2001:
|
||
|
<http://gitweb.freedesktop.org/?p=xcb.git;a=commit;h=09e54c4a3c>
|
||
|
|
||
|
* Support IPv6. XCB now supports displays with IPv6 addresses, with or without
|
||
|
enclosing square brackets, or with hosts which resolve to IPv6 addresses, by
|
||
|
using getaddrinfo instead of gethostbyname, and by including support for
|
||
|
authentication for such connections. This allows such displays as "::1:1.1".
|
||
|
|
||
|
* XCB now uses the libpthread-stubs, to properly support optional use of
|
||
|
pthreads even on platforms which do not have all the necessary pthread stubs
|
||
|
in libc or otherwise available by default.
|
||
|
|
||
|
* Switch from the old AM_PATH_CHECK macro to pkg-config. check 0.9.4 is now
|
||
|
required to build XCB's unit tests. The version that we were requiring was
|
||
|
not actually new enough to let our unit tests compile, and the AM_PATH_CHECK
|
||
|
macro is now considered deprecated. We know that versions of check using
|
||
|
pkg-config are new enough to work, and the check dependency was optional
|
||
|
anyway, so we've dropped support for older versions.
|
||
|
|
||
|
* Provide a xcb_prefetch_maximum_request_length counterpart to
|
||
|
xcb_get_maximum_request_length.
|
||
|
|
||
|
* Fix Bug #5958: zero out padding bytes in requests.
|
||
|
|
||
|
* Change xcb_connect to pass the display number to _xcb_get_auth_info, which
|
||
|
passes it to get_authptr. This allows get_authptr to stop hacking the
|
||
|
display number out of the sockaddrs of various address families, such as
|
||
|
port - X_TCP_PORT, or the number after the last X in the UNIX socket path.
|
||
|
|
||
|
* Remove --with-opt and --with-debug options from configure.ac; configure
|
||
|
supports the use of custom CFLAGS, so please use that instead.
|
||
|
|
||
|
* Reove support for the <localfield> tag in protocol descriptions, since they
|
||
|
no longer use it, and since new protocol descriptions should not need it
|
||
|
either.
|
||
|
|
||
|
* xcb-proto has no libraries or headers, so don't use XCBPROTO_CFLAGS or
|
||
|
XCBPROTO_LIBS.
|
||
|
|
||
|
* XCB builds which use xdmcp now include it in Requires.private, to support
|
||
|
static linking.
|
||
|
|
||
|
* Replace "long" with uint32_t when used for a 32-bit quantity
|
||
|
|
||
|
* Various enhancements to the generation of documentation with Doxygen:
|
||
|
* Check for doxygen in configure.ac
|
||
|
* Fix some Doxygen warnings.
|
||
|
* Install documentation.
|
||
|
* Handle out-of-tree builds, with srcdir != builddir. xcb.doxygen now gets
|
||
|
generated from xcb.doxygen.in, so that it can use top_builddir and
|
||
|
top_srcdir to find source and to output documentation.
|
||
|
* Fill in PROJECT_NUMBER from @VERSION@, now that we have it readily
|
||
|
available via autoconf.
|
||
|
|
||
|
|
||
|
Release 1.0 RC3 (2006-11-02)
|
||
|
============================
|
||
|
|
||
|
Note: Version 0.9.4 of the test suite tool "check" provides a broken
|
||
|
version of the AM_PATH_CHECK macro, which causes autoconf to fail due to
|
||
|
insufficient quoting on the macro names it prints in its deprecation
|
||
|
message. We have written a patch to fix this problem, available at:
|
||
|
<http://bugs.debian.org/cgi-bin/bugreport.cgi/check-m4-am-path-check-use-quadrigraphs-in-macro-names-to-unbreak-autoconf.patch?bug=395466;msg=20;att=1>
|
||
|
Version 0.9.4-2 of the Debian package for check includes this patch.
|
||
|
Users of other distributions who want to re-autotool libxcb will need to
|
||
|
apply this patch, use an older version of check, or wait for a fixed
|
||
|
upstream version. This bug does not affect users who use the distributed
|
||
|
tarballs and do not re-autotool.
|
||
|
|
||
|
* Add library support for xcb-xinerama, using new protocol description
|
||
|
from xcb-proto.
|
||
|
* In the generated protocol code, define and use constants for opcode
|
||
|
numbers rather than hard-coding them.
|
||
|
* In the API conversion script, match only XCB-namespaced XID generators
|
||
|
when converting to xcb_generate_id.
|
||
|
* Quit treating xproto specially in Makefile.am: handle it like all the
|
||
|
extensions.
|
||
|
* Generate Doxygen documentation comments in the protocol stubs, and
|
||
|
provide a Doxygen config file for building HTML documentation for XCB.
|
||
|
* Add note to xcbxlib.h that nothing except Xlib/XCB should use it.
|
||
|
* Extend test suite to test xcb_parse_display with NULL argument and
|
||
|
display in $DISPLAY.
|
||
|
|
||
|
|
||
|
Release 1.0 RC2 (2006-10-07)
|
||
|
============================
|
||
|
|
||
|
API changes
|
||
|
-----------
|
||
|
|
||
|
In our announcement of XCB 1.0 RC1, we proposed two API changes for
|
||
|
community feedback:
|
||
|
|
||
|
We would greatly appreciate API review in this final release
|
||
|
candidate period. We've had some limited feedback that our attempts
|
||
|
to impose static type safety on XIDs in C pose more a hindrance than
|
||
|
a help, so we would appreciate discussion over whether this
|
||
|
constitutes a "serious issue with the API". Some question also
|
||
|
remains of whether xcb_poll_for_event should have the out-parameter
|
||
|
'error', now that XCB has a more uniform mechanism for reporting
|
||
|
connection errors. Speak now on these points or leave us alone. ;-)
|
||
|
|
||
|
Since we've received feedback agreeing with our proposed changes, and no
|
||
|
objections or requests to keep the existing API, we made both changes
|
||
|
and bumped the soname to libxcb.so.1.0.0 in preparation for the release
|
||
|
of XCB 1.0.
|
||
|
|
||
|
* Remove XID wrapper structures and replace them with uint32_t typedefs.
|
||
|
XID union types like xcb_drawable_t and xcb_fontable_t also become
|
||
|
uint32_t typedefs. The API conversion script now replaces xcb_*_new
|
||
|
with calls directly to xcb_generate_id. This change makes
|
||
|
xcb_generate_id part of the client API rather than the extension API,
|
||
|
so move xcb_generate_id from xcbext.h to xcb.h.
|
||
|
|
||
|
* Remove the 'int *error' out-parameter for xcb_poll_for_event.
|
||
|
xcb_poll_for_event now shuts down the xcb_connection_t on fatal
|
||
|
errors; use xcb_connection_has_error to check.
|
||
|
|
||
|
The Xlib-specific API in libxcb-xlib also changed:
|
||
|
|
||
|
* Stop exposing the XCB IO lock for Xlib's benefit, by removing
|
||
|
xcb_get_io_lock from the Xlib-specific XCB API; instead, libxcb-xlib
|
||
|
now provides xcb_xlib_lock and xcb_xlib_unlock.
|
||
|
|
||
|
Code generation changes
|
||
|
-----------------------
|
||
|
|
||
|
* The code generator no longer implicitly imports xproto for extensions.
|
||
|
xcb-proto 1.0 RC2 includes the corresponding change to explicitly
|
||
|
import xproto in extensions that need it
|
||
|
|
||
|
* The generated protocol headers now declare "struct foo", "union foo"
|
||
|
or "enum foo", not just the typedef "foo" of an unnamed
|
||
|
struct/union/enum type.
|
||
|
|
||
|
Bug Fixes
|
||
|
---------
|
||
|
|
||
|
* Make Plan 7 'checked' requests work correctly.
|
||
|
|
||
|
Documentation improvements
|
||
|
--------------------------
|
||
|
|
||
|
* Document xcb_generate_id.
|
||
|
|
||
|
* Tutorial enhancements.
|
||
|
|
||
|
|
||
|
Release 1.0 RC1 (2006-09-25)
|
||
|
============================
|
||
|
|
||
|
The Great XCB Renaming
|
||
|
----------------------
|
||
|
|
||
|
Rename API to follow a new naming convention:
|
||
|
|
||
|
* XCB_CONSTANTS_UPPERCASE_WITH_UNDERSCORES
|
||
|
* xcb_functions_lowercase_with_underscores
|
||
|
* xcb_types_lowercase_with_underscores_and_suffix_t
|
||
|
* expand all abbreviations like "req", "rep", and "iter"
|
||
|
|
||
|
Word boundaries for the names in the protocol descriptions fall:
|
||
|
|
||
|
* Wherever the protocol descriptions already have an underscore
|
||
|
* Between a lowercase letter and a subsequent uppercase letter
|
||
|
* Before the last uppercase letter in a string of uppercase letters
|
||
|
followed by a lowercase letter (such as in LSBFirst between LSB and
|
||
|
First)
|
||
|
* Before and after a string of digits (with exceptions for sized types
|
||
|
like xcb_char2b_t and xcb_glx_float32_t to match the stdint.h
|
||
|
convention)
|
||
|
|
||
|
Also fix up some particular naming issues:
|
||
|
|
||
|
* Rename shape_op and shape_kind to drop the "shape_" prefix, since
|
||
|
otherwise these types end up as xcb_shape_shape_{op,kind}_t.
|
||
|
* Remove leading underscores from enums in the GLX protocol description,
|
||
|
previously needed to ensure a word separator, but now redundant.
|
||
|
|
||
|
This renaming breaks code written for the previous API naming
|
||
|
convention. The scripts in XCB's tools directory will convert code
|
||
|
written for the old API to use the new API; they work well enough that
|
||
|
we used them to convert the non-program-generated code in XCB, and when
|
||
|
run on the old program-generated code, they almost exactly reproduce the
|
||
|
new program-generated code (modulo whitespace and bugs in the old code
|
||
|
generator).
|
||
|
|
||
|
Authors: Vincent Torri, Thomas Hunger, Josh Triplett
|
||
|
|
||
|
In addition to the API renaming, the library SONAMEs have changed to
|
||
|
libxcb.so and libxcb-extname.so. The library major version remains at 0,
|
||
|
to become version 1 before 1.0 is released; the SONAME lowercasing means
|
||
|
that this will not conflict with XCB 0.9 libraries.
|
||
|
|
||
|
The header files have moved from /usr/include/X11/XCB/ to
|
||
|
/usr/include/xcb/. The XML-XCB protocol descriptions have moved to
|
||
|
/usr/share/xcb, with extension descriptions no longer relegated to an
|
||
|
extensions/ subdirectory. The API conversion script api_conv.pl will fix
|
||
|
references to the header files, and packages using pkg-config will
|
||
|
automatically use the new library names.
|
||
|
|
||
|
Error handling Plan 7
|
||
|
---------------------
|
||
|
|
||
|
All request functions now come in an "unchecked" and "checked" variant.
|
||
|
The checked variant allows callers to handle errors inline where they
|
||
|
obtain the reply, or by calling xcb_request_check for requests with no
|
||
|
reply. The unchecked variant uses the event queue for errors. Requests
|
||
|
with replies default to checked, because the caller must already make a
|
||
|
function call to retrieve the reply and can see the error at that time;
|
||
|
the unchecked variant uses the suffix _unchecked. Requests without
|
||
|
replies default to unchecked, because the caller will not necessarily
|
||
|
expect to handle a response, and the checked variant uses the suffix
|
||
|
_checked.
|
||
|
|
||
|
Connection error handling
|
||
|
-------------------------
|
||
|
|
||
|
Fatal connection errors now put the xcb_connection_t object into an
|
||
|
error state, at which point all further operations on that connection
|
||
|
will fail. Callers can use the new xcb_connection_has_error function to
|
||
|
check for this state in a connection. Functions that return a
|
||
|
connection, such as the xcb_connect function, may instead return an
|
||
|
xcb_connection_t already in an error state.
|
||
|
|
||
|
In the future we expect to add additional API for getting more
|
||
|
information about the error condition that caused the connection to get
|
||
|
into an error state.
|
||
|
|
||
|
Smaller API changes
|
||
|
-------------------
|
||
|
|
||
|
All functions that have been marked 'deprecated' up to now have been
|
||
|
removed for this release. After XCB 1.0 is released, functions marked
|
||
|
'deprecated' will be preserved until the end of time to maintain
|
||
|
compatibility.
|
||
|
|
||
|
XCB no longer provides a sync function. Most callers of this function
|
||
|
should use xcb_flush instead, which usually provides the intended
|
||
|
functionality and does not require a round-trip to the server. If you
|
||
|
really need this functionality, either use xcb_get_input_focus like sync
|
||
|
used to do, or use the xcb_aux_sync function from the xcb-aux library in
|
||
|
xcb-util. However, note that we do not consider the libraries in
|
||
|
xcb-util remotely stable yet.
|
||
|
|
||
|
XCB no longer provides xcb_[extension_name]_init functions for each
|
||
|
extension. These functions previously caused XCB to issue and process a
|
||
|
QueryExtension request. Callers should now directly call
|
||
|
xcb_get_extension_data on the xcb_[extension_name]_id, or use
|
||
|
xcb_prefetch_extension_data if they do not need to force a round-trip
|
||
|
immediately.
|
||
|
|
||
|
The compatibility functions in xcbxlib.h, provided solely for use by
|
||
|
Xlib/XCB, now exist in a separate library libxcb-xlib. We don't want to
|
||
|
have to change the libxcb soname if we later change or remove the Xlib
|
||
|
compatibility functions, and nothing except Xlib/XCB should ever use
|
||
|
them. (Applications which use Xlib/XCB do not need this library either;
|
||
|
Xlib/XCB only uses it internally.)
|
||
|
|
||
|
The descriptions of several extensions have been updated to match the
|
||
|
latest versions implemented in the X.org X server.
|
||
|
|
||
|
GIT Repository split
|
||
|
--------------------
|
||
|
|
||
|
Previously, several XCB-related projects all existed under the umbrella
|
||
|
of a single monolithic GIT repository with per-project subdirectories.
|
||
|
We have split this repository into individual per-project repositories.
|
||
|
|
||
|
Josh Triplett and Jamey Sharp wrote a tool called git-split to
|
||
|
accomplish this repository split. git-split reconstructs the history of
|
||
|
a sub-project previously stored in a subdirectory of a larger
|
||
|
repository. It constructs new commit objects based on the existing tree
|
||
|
objects for the subtree in each commit, and discards commits which do
|
||
|
not affect the history of the sub-project, as well as merges made
|
||
|
unnecessary due to these discarded commits.
|
||
|
|
||
|
We would like to acknowledge the work of the gobby team in creating a
|
||
|
collaborative editor which greatly aided the development of git-split
|
||
|
(as well as these release notes).
|
||
|
|
||
|
Build and implementation fixes
|
||
|
------------------------------
|
||
|
|
||
|
XCB no longer needs proto/x11 from X.org; the XCB header xproto.h
|
||
|
provides the definitions from X.h, named according to XCB conventions.
|
||
|
|
||
|
XCB should now build with non-GNU implementations of Make.
|
||
|
|
||
|
XCB properly handles 32-bit wrap of sequence numbers, and thus now
|
||
|
supports issuing more than 2**32 requests in one connection.
|
||
|
|
||
|
Fixed bugs #7001, #7261.
|