Ray Strode
56b3669411
x11: Avoid thawing surface until frame is drawn
...
Since commit 972134abe4
a frame getting
drawn has three states (with the vendor nvidia driver at least):
1. drawn by gtk waiting on the GPU
2. drawn by GPU waiting on the compositor
3. drawn by compositor
Those three states are encoded in two flags: frame_pending and
frame_still_painting.
frame_pending means step 1 is done, but step 2 and 3 are still
in progress. frame_still_painting means step 2 is still in progress.
After step 1 is finished the surface is frozen until step 3 is finished.
When the compositor notifies gtk it's done with step 3, with a
_NET_WM_FRAME_DRAWN client message, the toolkit thaws the surface to
allow the next frame to proceed.
The compositor sometimes sends gtk a _NET_WM_FRAME_DRAWN client message
between steps 1 and 2. This message should be ignored because it's not
a reply to the current frame.
Unfortunately, gtk currently assumes if it gets a _NET_WM_FRAME_DRAWN
client message while waiting for step 2 that it's actually at step 3,
and proceeds to draw a new frame while the existing frame is still
pending, leading to a blown assertion.
This commit addresses the problem by ignoring _NET_WM_FRAME_DRAWN
client messages from the compositor unless actually expecting one.
Fixes : #2902
2020-06-30 14:36:15 -04:00
..
2020-06-23 23:42:53 +02:00
2020-06-18 19:22:20 +01:00
2020-06-28 13:42:02 -04:00
2020-06-23 23:42:53 +02:00
2020-06-30 14:36:15 -04:00
2020-04-26 14:41:52 -04:00
2020-02-04 14:08:10 +01:00
2020-01-17 23:46:37 -05:00
2020-04-06 16:32:03 -04:00
2020-06-28 13:42:02 -04:00
2020-06-28 13:42:02 -04:00
2020-03-12 14:56:21 -04:00
2020-05-11 19:26:20 +02:00
2020-02-24 08:32:34 -05:00
2020-02-13 07:36:38 +01:00
2020-02-13 07:36:38 +01:00
2018-05-01 12:35:32 +02:00
2019-11-27 13:33:43 +00:00
2018-05-15 13:49:45 +08:00
2020-06-18 10:47:16 +03:00
2019-11-27 13:33:43 +00:00
2019-04-02 15:10:53 +00:00
2019-12-28 21:52:34 -05:00
2019-11-27 13:33:43 +00:00
2019-11-27 13:33:43 +00:00
2019-03-17 21:29:59 +01:00
2020-01-17 23:46:37 -05:00
2019-11-27 13:33:43 +00:00
2020-05-11 19:26:20 +02:00
2020-03-02 04:43:56 +01:00
2020-05-11 19:26:20 +02:00
2019-11-27 13:33:43 +00:00
2020-06-18 10:47:16 +03:00
2020-02-18 02:40:00 +01:00
2020-01-17 23:46:37 -05:00
2019-11-27 13:33:43 +00:00
2018-07-13 10:13:00 +02:00
2019-11-27 13:33:43 +00:00
2020-06-24 11:24:04 +02:00
2020-06-27 21:46:22 -04:00
2019-11-27 13:33:43 +00:00
2020-06-18 19:22:20 +01:00
2019-11-27 13:33:43 +00:00
2020-06-23 23:42:53 +02:00
2020-05-29 09:26:50 -04:00
2020-05-28 11:00:03 +03:00
2019-11-27 13:33:43 +00:00
2020-06-23 23:42:53 +02:00
2020-05-11 19:26:20 +02:00
2020-05-17 17:51:03 -04:00
2020-02-21 00:51:02 -05:00
2020-05-12 18:44:21 +01:00
2020-04-03 15:30:56 +01:00
2020-03-12 14:56:21 -04:00
2020-05-11 19:26:20 +02:00
2019-11-27 13:33:43 +00:00
2018-04-24 23:16:58 +02:00
2020-05-11 19:26:20 +02:00
2020-03-02 04:43:56 +01:00
2020-03-02 04:43:56 +01:00
2019-05-21 10:32:08 -05:00
2019-11-27 13:33:43 +00:00
2020-06-28 12:24:03 -04:00
2020-06-23 23:42:53 +02:00
2020-06-09 13:43:03 -04:00
2020-05-28 15:13:07 +02:00
2019-11-27 13:33:43 +00:00
2020-06-15 08:54:18 +02:00
2018-03-29 05:02:15 +02:00
2020-05-28 15:13:07 +02:00
2019-11-27 13:33:43 +00:00
2020-06-12 15:08:44 +02:00
2020-02-14 05:41:01 +11:00
2019-11-27 13:33:43 +00:00
2019-04-25 11:35:00 +02:00
2019-01-23 22:33:44 -05:00
2019-11-27 13:33:43 +00:00
2018-03-18 05:57:07 +01:00
2020-06-23 23:42:53 +02:00
2020-06-18 10:47:16 +03:00
2020-04-06 16:32:03 -04:00
2020-04-30 13:05:52 -04:00
2019-02-06 10:39:27 +01:00
2019-02-06 10:39:27 +01:00
2020-06-22 13:24:34 -04:00
2019-05-28 19:19:24 +02:00
2018-04-28 16:22:29 -04:00
2019-11-27 13:33:43 +00:00
2018-03-18 05:57:07 +01:00
2020-05-17 07:32:37 +02:00
2020-01-30 21:33:37 +01:00
2020-05-17 07:10:34 +02:00
2020-05-30 19:26:46 -04:00
2020-05-11 19:26:20 +02:00
2018-03-20 15:14:10 +01:00
2019-11-27 13:33:43 +00:00
2018-05-06 02:10:20 +02:00
2019-09-13 11:07:56 +02:00
2019-11-27 13:33:43 +00:00
2020-05-11 19:26:20 +02:00
2020-03-11 19:35:55 -04:00
2020-03-11 19:35:55 -04:00
2020-06-05 20:59:51 -04:00
2020-03-11 19:35:55 -04:00
2020-02-12 13:36:04 +01:00
2020-02-12 11:25:34 +01:00
2019-11-27 13:33:43 +00:00
2020-05-31 17:09:23 +02:00
2020-01-26 18:21:07 +01:00
2020-03-05 07:56:28 +01:00
2020-06-23 23:42:53 +02:00
2020-06-23 23:42:53 +02:00
2020-06-23 23:42:53 +02:00
2020-06-18 19:22:20 +01:00
2020-06-23 23:42:53 +02:00
2018-03-18 19:21:33 +01:00
2019-11-27 13:33:43 +00:00
2018-03-18 19:21:33 +01:00
2020-06-23 23:42:53 +02:00
2020-06-23 23:42:53 +02:00
2020-06-23 23:42:53 +02:00
2020-06-18 10:47:16 +03:00
2020-01-26 18:21:07 +01:00
2018-03-12 17:21:45 +01:00
2020-05-28 11:00:03 +03:00
2020-05-17 12:41:16 -04:00
2020-04-13 09:29:11 -04:00
2020-06-05 20:59:51 -04:00
2020-05-17 14:15:06 -04:00
2020-06-09 13:43:03 -04:00
2019-11-27 13:33:43 +00:00
2020-05-28 11:00:03 +03:00
2019-11-27 13:33:43 +00:00
2020-04-26 14:41:52 -04:00
2020-03-12 14:56:21 -04:00