diff options
author | Mikhail Svetkin <mikhail.svetkin@qt.io> | 2018-06-21 11:48:50 +0200 |
---|---|---|
committer | Mikhail Svetkin <mikhail.svetkin@qt.io> | 2018-07-05 13:17:42 +0000 |
commit | 41705529d9995291324e1d06d45861ce63b1c72e (patch) | |
tree | 7560296d304430fbff62a16ef023427655cc3b6d /src/plugins/platforms/xcb/qxcbconnection.h | |
parent | 4b10298de54a7cacb5f25601f8e3ae5d233806d3 (diff) |
xcb: Refactor align of xcb events
Use C++11 alignas instead of a union to pad the
xcb_*_event. It allows using the struct directly
without accessing a union member.
Change-Id: I221a6708ef7af844bd6b71a57dcbab75e1319c72
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbconnection.h')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbconnection.h | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/src/plugins/platforms/xcb/qxcbconnection.h b/src/plugins/platforms/xcb/qxcbconnection.h index 3a2aee873d..eb8ec5d7d6 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.h +++ b/src/plugins/platforms/xcb/qxcbconnection.h @@ -772,18 +772,11 @@ struct QStdFreeDeleter { call##_reply(Q_XCB_REPLY_CONNECTION_ARG(__VA_ARGS__), call##_unchecked(__VA_ARGS__), nullptr) \ ) -template <typename T> -union q_padded_xcb_event { - T event; - char padding[32]; -}; - // The xcb_send_event() requires all events to have 32 bytes. It calls memcpy() on the // passed in event. If the passed in event is less than 32 bytes, memcpy() reaches into // unrelated memory. -#define Q_DECLARE_XCB_EVENT(event_var, event_type) \ - q_padded_xcb_event<event_type> store = {}; \ - auto &event_var = store.event; +template <typename T> +struct alignas(32) q_padded_xcb_event : T { }; QT_END_NAMESPACE |