Jonas Ådahl
f83c30bae5
thread: Support queuing callbacks on any thread
...
Callbacks could be queued to be invoked either on the impl side or the
main thread side of the thread; change this to take a GMainContext,
which effectively means a callback can be queued to be invoked on any
thread that has a GMainLoop running on its own GMainContext.
Flushing is made to handle flushing callbacks synchronously on all
threads. This works by keeping a hash table of queued callbacks per
thread (GMainContext); when flushing (from the main thread), callbacks
on the main thread context is flushed, followed by synchronization with
all the other threads.
meta_thread_flush_callbacks() is changed to no longer return the number
of dispatched callbacks; it becomes much harder when there are N queues
spread across multiple threads. Since it wasn't used for anything, just
drop the counting, making life slightly easier.
Feedback to thread tasks are however always queued on the callers
thread.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2777 >
2023-07-17 17:23:31 +02:00
..
2023-07-17 17:23:31 +02:00
2023-07-14 22:23:45 +00:00
2023-05-02 17:37:01 +00:00
2023-05-02 17:37:01 +00:00
2018-04-16 13:28:03 +02:00
2023-07-14 22:23:45 +00:00
2023-07-14 22:23:45 +00:00
2023-07-14 22:23:45 +00:00
2023-07-14 22:23:45 +00:00
2023-07-14 22:23:45 +00:00
2023-03-03 12:07:02 +00:00
2022-09-01 21:09:28 +00:00
2022-09-15 11:22:54 +00:00
2023-06-28 07:51:01 +00:00
2022-09-01 19:09:21 +02:00
2022-09-15 11:22:54 +00:00
2022-09-01 21:09:28 +00:00
2023-01-30 13:17:19 +00:00
2022-09-15 11:22:54 +00:00
2020-06-11 09:20:16 +00:00
2022-07-01 16:13:18 +02:00
2023-03-30 11:21:02 +00:00
2023-03-01 23:57:32 +00:00
2023-07-17 12:45:00 +02:00
2023-04-17 19:53:35 +00:00
2021-12-22 16:22:08 +00:00
2021-12-22 16:22:08 +00:00
2021-12-22 16:22:08 +00:00
2023-05-24 14:16:41 +02:00
2021-12-22 19:37:16 +01:00
2021-12-07 20:04:08 +00:00
2023-02-23 17:52:08 +00:00
2023-02-23 17:52:08 +00:00
2023-02-23 17:52:08 +00:00
2023-02-23 17:52:08 +00:00
2019-02-28 09:31:01 +01:00
2023-05-15 20:36:23 +02:00
2019-10-21 14:04:30 +00:00
2023-05-07 23:16:37 +02:00
2022-01-05 16:36:48 +00:00
2023-07-14 22:23:45 +00:00
2023-07-14 22:23:45 +00:00
2023-07-14 22:23:45 +00:00
2023-07-14 22:23:45 +00:00
2023-07-14 22:23:45 +00:00
2023-07-14 22:23:45 +00:00
2017-10-05 18:17:26 -04:00
2023-01-18 10:14:39 +00:00
2019-01-22 18:31:53 +01:00
2020-06-10 18:54:50 +00:00
2019-06-20 13:31:55 +00:00
2022-12-17 13:52:51 +00:00
2021-05-18 13:19:36 +00:00
2021-05-18 13:19:36 +00:00
2023-05-24 14:16:41 +02:00
2023-07-14 22:23:45 +00:00
2023-07-14 22:23:45 +00:00
2023-07-14 22:23:45 +00:00
2023-07-14 22:23:45 +00:00
2023-07-14 22:23:45 +00:00
2022-12-17 13:52:51 +00:00
2022-12-17 13:52:51 +00:00
2022-12-17 13:52:51 +00:00
2022-12-17 13:52:51 +00:00
2023-02-01 03:03:47 +00:00
2021-03-10 13:56:54 +00:00
2023-02-01 03:03:47 +00:00
2023-05-24 14:16:41 +02:00
2020-08-29 09:10:31 +00:00
2020-06-08 11:29:30 +00:00
2023-05-24 14:16:41 +02:00
2020-08-29 09:10:31 +00:00
2022-08-19 17:07:12 +00:00
2022-08-19 17:07:12 +00:00
2021-07-22 13:14:01 +02:00
2019-01-23 14:18:13 +01:00
2022-09-02 08:43:00 +00:00
2022-01-25 16:25:48 +00:00
2023-04-18 18:38:03 +00:00
2020-06-10 18:54:51 +00:00
2023-05-22 14:44:33 +00:00
2023-05-24 14:16:41 +02:00
2022-08-05 20:30:50 +02:00
2022-08-05 20:30:50 +02:00
2023-06-12 15:26:47 +00:00
2023-04-18 18:38:03 +00:00
2023-05-27 19:19:09 +00:00
2021-09-04 10:04:00 +02:00
2023-05-02 17:37:01 +00:00
2023-04-21 00:00:24 +02:00
2023-05-24 14:16:41 +02:00
2022-06-13 18:38:50 +00:00
2023-02-23 17:52:08 +00:00
2023-02-23 17:52:08 +00:00
2023-07-14 22:23:45 +00:00
2023-02-23 17:52:08 +00:00
2023-02-23 17:52:08 +00:00
2023-02-23 17:52:08 +00:00
2023-05-24 14:16:41 +02:00
2023-03-02 01:39:16 +01:00
2023-05-24 14:16:41 +02:00
2023-02-01 08:40:53 +01:00
2023-04-07 12:19:23 +02:00
2020-04-23 14:45:53 +00:00
2021-03-12 15:09:45 +00:00
2020-07-30 09:51:16 +02:00
2023-05-04 13:00:07 +00:00
2017-08-29 14:39:04 +08:00
2022-12-17 13:52:51 +00:00
2020-07-30 09:51:16 +02:00
2023-06-20 20:13:47 +00:00
2023-02-23 17:52:08 +00:00
2023-06-28 01:03:35 +00:00
2023-05-04 13:00:07 +00:00
2021-12-07 19:23:52 +00:00
2021-03-12 15:09:45 +00:00
2023-04-07 12:19:23 +02:00
2021-03-12 15:09:45 +00:00
2022-03-04 18:13:45 +00:00
2021-03-12 15:09:45 +00:00
2023-04-06 23:09:43 +00:00
2018-12-14 13:26:16 +01:00
2023-02-28 12:01:17 +01:00
2020-07-30 09:51:16 +02:00
2023-02-28 12:01:17 +01:00
2023-02-28 12:01:17 +01:00
2023-02-23 17:52:08 +00:00
2023-02-23 17:52:08 +00:00
2023-01-17 11:14:19 +01:00
2023-01-29 17:37:43 +01:00
2022-01-17 09:48:51 +01:00
2023-04-06 23:09:43 +00:00
2023-04-07 12:19:23 +02:00
2023-01-30 13:17:19 +00:00
2021-07-16 19:08:06 +02:00
2023-05-23 12:47:07 +00:00
2021-05-17 16:08:42 +00:00
2021-04-13 10:32:14 +00:00
2022-03-04 18:13:45 +00:00
2022-08-11 11:32:42 +00:00