# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased] - - various authors
## [1.5.0] - 2024-11-09 - various authors
### Added
- `UnknownError` and no more panic for failed resolution (#266)
- unsafe public API to resolve FFI events and errors (#266)
- `Reply::as_raw` (#267)
- `GetModifierMappingReply::keycodes_per_modifier` is public (#271)
### Fixed
- Compilation warnings (#275)
## [1.4.0] - 2024-04-23 - various authors
### Added
- `BaseEvent::is_from_send_event` (#262)
- feature `libxcb_v1_14` (enabled by default) (#250)
### Fixed
- Special event API (#261)
- DisplayInfo members visibility (#263)
## [1.3.0] - 2023-12-09 - various authors
### Added
- add `Connection::poll_for_reply` and `Connection::poll_for_reply_unchecked` (#245)
### Fixed
- fix more alignment panic (#246, #247)
## [1.2.2] - 2023-07-22 - various authors
### Fixed
- fix serialization panic (impl WiredOut #226, #227)
- fix `Send` and `Sync` for events (#233)
## [1.2.1] - 2023-04-23 - various authors
### Fixed
- updated `quick-xml` as the old one will no longer be compatible with future rust versions
- fixed alignment issue
### Changed
- Implement `AsRawXcbConnection` for `Connection`
## [1.2.0] - 2022-11-03 - various authors
### Fixed
- Segfault when DISPLAY is unset when using xlib
- Return `Unknown` instead of panic for unknown events (disabled feature) (#195)
### Changed
- `resolve_event` returns `Event::Unknown` instead of panicking when the event could not be resolved.
- Types such as `x::Cw` implement `Ord` and can be sorted dynamically (i.e. for `x::CreateWindow`)
- `atoms_struct!` macro can specify `only_if_exists`
- add `Event::as_raw()`, `Connection::resolve_event()`
## [1.1.1] - 2022-03-19 - rtbo
### Fixed
- Padding offset in events constructors ([x11-clipboard/#26](https://github.com/quininer/x11-clipboard/pull/26))
## [1.1.0] - 2022-03-16 - rtbo
### Added
- Xid types (`x::Atom`, `x::Window`, ...) implement `Hash`
- `atoms_struct!` macro
- `Connection::send_and_check_request`
### Changed
- Some documentation improvements.
## [1.0.0] - 2022-03-06 - rtbo
- new 1.0 API
- implement the extensions in RUST directly (no need to link to C extension libraries)
- XCB resolves protocol events and errors to safe enumerations
- requests are structures that can be passed to `Connection::send_request`
- typesafe cookies for checked/unchecked and void/non-void requests
- typesafe XIDs
- `bitflags` masks
- `debug_atom_names` feature
- improvements of the `Debug` implementations
- many, many other improvement and fixes, (~90% of github issues are resolved)
- support for xcb-1.14
- support for xinput extension
- get rid of the `log` dependency
## [0.10.1] - 2021-09-23 - rtbo
- fix some code generation affecting the `present` extension
- fix compilation warnings about uninhabited type values
## [0.10.0] - 2021-09-19 - rtbo
### Changed
- build script is written in Rust. Python no longer needed. (#56, #62, #89, #99)
- moved CI to github actions
### Fixed
- fixed some member names (e.g. `size_i_d` => `size_id` / `num__f_b_configs` => `num_fb_configs`)
## [0.9.0] - 2019-11-12 - Lompik
### Fixed
- get_reply consume cookies and impl Drop on Cookies (#57)
## [0.8.3] - 2019-11-12 - Lompik
### Fixed
- fix use after free when connecting with display names (#65)
## [0.8.2] - 2018-02-13 - chrisduerr/myfreeweb/yamnikov-oleg/eigebong/rtbo
- move to log 0.4 (#55)
- improve missing python error in build.rs (#49)
- add Connection.into_raw_conn
- make source generation deterministic (#43)
## [0.8.1] - 2017-08-15 - /rtbo/main--/chrisduerr
- fix lifetime inconsistency (#40)
- impl AsRawFd for Connection (#39)
## [0.8.0] - 2017-07-11 - mjkillough/eduardosm/rtbo
- error trait and unsafe cast_error (#32) - mjkillough
- unsafe cast_event - rtbo
- allow xcb::connect without xlib_xcb feature
(fixes also doc generation) (#35) - eduardosm
## [0.7.8] - 2019/11/12 - Lompik
- fix use after free when connecting with display names (#65) (backporting from 0.8)
## [0.7.7] - 2017-08-15 - rtbo/mjkillough
- branch 0.7.x to support servo
- implement Error/Display for GenericError and ConnError
- fix lifetime inconsistencies (#40)
- Send and Sync implemented regardless of thread feature
## [0.7.6] - 2016-11-14 - rtbo/ibabushkin
- much better handling of union accessors (#27) Credits to Inokentiy Babushkin
- other minor fixes
## [0.7.5] - 2016-08 - rtbo
- multi-threading support (#23)
- other bug fixes
## [0.7.4] - 2016-06 - rtbo
- templating send_event* to take event obj instead of str
- correct iterator attribute lifetime (#16)
## [0.7.3] - 2016-04-10 - rtbo
- templating some accessors
## [0.7.2] - 2016-04-02 - rtbo
- fix #14
## [0.7.1] - 2016-03-29 - rtbo
- module names closer to ffi
- fix #13
## [0.7.0] - 2016-03-28 - rtbo
- fix connection with strings (#9)
- assign response_type in *Event::new (#10)
- Connection::connect returns Result (#11)
- Some documentation (#12)
## [0.6.2] - 2016-03-04 - rtbo
- fix: correct names for DRI2 and 3 FFI constants
## [0.6.1] - 2016-03-02 - rtbo
- fix: correct names for 'xtest' extension
## [0.6.0] - 2016-02-22 - rtbo
- xlib_xcb: Connection owns the xlib::Display and calls XCloseDisplay
- requests accept template slices
- POD types distinction
## [0.5.0] - 2016-02-07 - rtbo
- adding xlib_xcb
- show how to create an opengl enabled window
## [0.4.1] - 2016-02-07 - rtbo
- generating union accessors
- handling of bool parameters in the wrapper API
- rewrite of wrappers structures (pub type instead of struct with base field)
- module clean-up and export
- Travis CI
## [0.4.0] - 2016-03-02 - rtbo/laumann
- first fully functional wrappers
- rewritten rs_client.py
- new examples
- made ffi very close to C
- fixed wrappers segfaults
## [0.3.0] - 2013 - Aatch