diff options
author | Gatis Paeglis <gatis.paeglis@theqtcompany.com> | 2015-08-06 10:47:15 +0200 |
---|---|---|
committer | Gatis Paeglis <gatis.paeglis@digia.com> | 2015-09-22 14:21:00 +0000 |
commit | 7edd10e6cc215c419c2cb492ffca997faa520c4c (patch) | |
tree | 4419b612ec47cfc1e9a7f400830f1bbf0414eaf7 /src/plugins/platforms/xcb/qxcbconnection.h | |
parent | b9c5a938c0b578249cac7491592547042f5aa4d2 (diff) |
xcb: Compress mouse motion and touch update events
The current version of the mouse motion event compression
algorithm does not work with certain configurations -
situations where we get one XCB_GE_GENERIC event between
every XCB_MOTION_NOTIFY event.
The new implementation tries to be less fragile. The
previous approach checked "is *the next* event the same
type as the current event", the new check asks "have
we buffered more events of the same type as the current
event". We buffer events of the same type only when the
main thread is unresponsive.
This patch adds event compression for XI_TouchUpdate in
addition to the fix for motion even compression.
Change-Id: Ie215eb5969e2060e463ebe48e3d3007390a30deb
Task-number: QTBUG-40889
Task-number: QTBUG-47069
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbconnection.h')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbconnection.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/plugins/platforms/xcb/qxcbconnection.h b/src/plugins/platforms/xcb/qxcbconnection.h index 4a0348aa0c..2e5a2d7788 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.h +++ b/src/plugins/platforms/xcb/qxcbconnection.h @@ -522,6 +522,7 @@ private: bool checkOutputIsPrimary(xcb_window_t rootWindow, xcb_randr_output_t output); void initializeScreens(); void updateScreens(const xcb_randr_notify_event_t *event); + bool compressEvent(xcb_generic_event_t *event, int currentIndex, QXcbEventArray *eventqueue) const; bool m_xi2Enabled; int m_xi2Minor; @@ -574,7 +575,7 @@ private: QHash<int, ScrollingDevice> m_scrollingDevices; static bool xi2GetValuatorValueIfSet(void *event, int valuatorNum, double *value); - static bool xi2PrepareXIGenericDeviceEvent(xcb_ge_event_t *event, int opCode); + static void xi2PrepareXIGenericDeviceEvent(xcb_ge_event_t *event); #endif xcb_connection_t *m_connection; |