jp9000
8b3416c1e7
libobs: Implement deferred destruction of sources
...
(This also modifies the UI)
The purpose of deferring destruction of sources is to ensure that:
1.) Hard locks from enumeration cannot occur with source destruction.
For example, if the browser source is destroyed while in the graphics
thread, the browser thread would wait for the graphics thread, but the
graphics thread would still be waiting for the browser thread, causing
a hard lock.
2.) When destroys occur during source enumeration, that the integrity of
the context's next pointer in the linked list can no longer be
compromised
3.) Source releases are fully asynchronous rather than having the risk
of stalling the calling thread
4.) We can wait for source destruction when switching scene collections
or when shutting down rather than hoping for threads to be finished
with sources.
This introduces a new requirement when cleaning up scene/source data:
the obs_wait_for_destroy_queue() function. It is highly recommended that
this function be called after cleaning up sources. It will return true
if at least one or more sources were destroyed. Otherwise it will return
false. Forks are highly advised to call this function manually on source
cleanup -- preferably in a loop, in conjunction with processing
outstanding OBS signals and UI events.
2021-12-19 11:53:19 -08:00
..
2021-12-17 08:01:29 +00:00
2021-12-17 06:52:35 -08:00
2021-12-17 08:01:29 +00:00
2021-11-30 23:19:13 -08:00
2021-10-10 17:19:10 +11:00
2021-11-15 10:20:55 -08:00
2021-12-09 02:51:08 +01:00
2021-12-09 17:03:36 -03:00
2021-11-26 23:23:51 +13:00
2021-11-23 22:06:25 -08:00
2021-11-26 23:23:51 +13:00
2019-10-14 17:19:38 -07:00
2019-06-23 23:49:10 -07:00
2021-09-12 13:45:51 +02:00
2021-09-12 13:45:51 +02:00
2021-09-16 15:03:28 +02:00
2021-09-15 06:16:29 -07:00
2021-11-26 23:23:51 +13:00
2021-07-24 15:50:59 -07:00
2021-12-01 18:53:11 +11:00
2021-07-24 15:50:59 -07:00
2021-12-11 14:39:19 -08:00
2021-12-11 14:39:19 -08:00
2021-12-01 18:53:11 +11:00
2021-09-17 02:59:21 -07:00
2018-09-07 09:27:20 -05:00
2019-06-23 23:49:10 -07:00
2021-12-17 01:35:40 -08:00
2019-04-21 04:10:46 -07:00
2019-04-21 04:10:46 -07:00
2021-11-26 23:23:51 +13:00
2021-11-26 23:23:51 +13:00
2019-06-23 23:49:10 -07:00
2016-08-27 20:19:45 -07:00
2021-08-20 15:20:59 -07:00
2019-06-23 23:49:10 -07:00
2019-06-23 23:49:10 -07:00
2019-04-01 02:48:28 -05:00
2016-08-27 20:19:45 -07:00
2019-06-23 23:49:10 -07:00
2018-05-19 00:17:58 -03:00
2019-06-23 23:49:10 -07:00
2021-10-24 08:39:53 -07:00
2021-10-24 08:39:53 -07:00
2016-08-27 20:19:45 -07:00
2020-04-12 19:33:02 +02:00
2020-08-17 07:18:18 -07:00
2020-08-17 07:18:18 -07:00
2021-05-09 20:35:28 -05:00
2020-09-15 20:29:40 -07:00
2020-09-07 16:14:32 -05:00
2020-09-05 23:53:54 -05:00
2020-09-05 23:53:54 -05:00
2020-09-05 23:53:54 -05:00
2016-08-27 20:19:45 -07:00
2019-06-23 23:49:10 -07:00
2016-08-27 20:19:45 -07:00
2019-06-23 23:49:10 -07:00
2019-02-07 14:47:15 -08:00
2021-11-26 23:23:51 +13:00
2021-11-24 00:03:39 -08:00
2020-08-17 07:18:18 -07:00
2020-08-17 07:18:18 -07:00
2020-01-01 15:58:48 +11:00
2019-02-02 11:22:31 +11:00
2021-08-17 06:00:53 -07:00
2021-07-24 23:15:45 +02:00
2021-10-16 16:14:32 -07:00
2021-08-17 06:00:53 -07:00
2021-11-26 23:23:51 +13:00
2021-04-29 00:14:28 -07:00
2020-04-08 17:20:52 -07:00
2021-11-20 23:47:02 -08:00
2021-02-09 09:39:17 -03:00
2021-12-13 21:31:27 -08:00
2021-03-09 09:16:16 -05:00
2019-12-12 17:59:20 -08:00
2019-12-12 17:59:20 -08:00
2021-11-25 00:57:00 -08:00
2021-09-15 07:44:55 +02:00
2021-03-08 23:42:21 +13:00
2021-03-08 23:33:54 +13:00
2020-07-30 17:41:43 -07:00
2020-12-01 10:54:21 -05:00
2019-06-23 23:49:10 -07:00
2020-11-25 19:38:05 -08:00
2020-11-25 19:38:05 -08:00
2019-06-23 23:49:10 -07:00
2020-06-21 18:23:05 -07:00
2021-11-26 23:23:51 +13:00
2021-08-17 08:24:28 -07:00
2019-07-09 13:39:13 -05:00
2019-04-21 04:10:46 -07:00
2019-04-21 04:10:46 -07:00
2021-08-07 01:07:04 -07:00
2019-12-11 01:50:41 -08:00
2019-12-11 01:50:41 -08:00
2021-05-21 18:14:59 -07:00
2021-05-12 21:35:11 -07:00
2019-10-30 12:09:07 -07:00
2019-10-30 12:09:07 -07:00
2016-08-27 20:19:45 -07:00
2019-06-23 23:49:10 -07:00
2020-08-17 07:18:18 -07:00
2020-08-17 07:18:18 -07:00
2019-10-06 00:42:19 -05:00
2019-10-06 00:42:19 -05:00
2021-11-26 23:23:51 +13:00
2021-09-23 09:27:30 -07:00
2020-03-12 00:12:22 +01:00
2019-05-05 20:00:26 -07:00
2021-11-26 17:28:34 +11:00
2020-05-23 01:05:07 -05:00
2021-11-26 23:23:51 +13:00
2021-11-26 23:23:51 +13:00
2021-09-10 10:26:13 -07:00
2021-12-17 06:52:35 -08:00
2021-12-17 06:52:35 -08:00
2021-10-03 07:52:44 -07:00
2020-07-06 17:24:21 -07:00
2019-06-23 23:49:10 -07:00
2021-11-26 23:23:51 +13:00
2019-11-24 20:50:42 -08:00
2021-12-17 06:49:44 -08:00
2021-12-17 06:49:44 -08:00
2021-11-20 20:00:59 -08:00
2021-11-26 23:23:51 +13:00
2021-04-01 07:36:20 -07:00
2021-12-13 21:31:27 -08:00
2021-12-19 11:53:19 -08:00
2021-12-17 01:35:40 -08:00
2021-11-26 23:23:51 +13:00
2021-11-26 23:23:51 +13:00
2021-11-26 23:23:51 +13:00
2021-11-26 23:23:51 +13:00
2021-11-26 23:23:51 +13:00
2021-11-26 23:23:51 +13:00
2021-10-24 08:39:53 -07:00
2021-12-17 04:30:36 -08:00
2021-11-10 14:22:45 -08:00
2021-11-26 23:23:51 +13:00
2020-04-08 17:20:52 -07:00
2021-03-31 01:21:51 -07:00
2020-04-16 19:15:13 +02:00
2021-12-16 23:38:59 -08:00
2021-11-10 06:08:48 -08:00
2019-09-19 05:39:25 -07:00
2021-01-26 09:43:16 -08:00
2019-06-23 23:49:10 -07:00
2019-03-05 14:39:24 -08:00
2021-12-04 15:08:46 -08:00
2021-12-04 15:08:46 -08:00
2021-04-20 00:17:34 -07:00
2020-02-16 17:56:06 +13:00
2020-04-07 20:43:12 +10:00
2020-04-07 20:43:12 +10:00
2019-06-23 23:49:10 -07:00
2021-11-26 23:23:51 +13:00
2021-01-17 10:31:59 +13:00
2021-10-03 07:52:44 -07:00
2020-10-29 14:15:57 -07:00
2021-11-26 23:23:51 +13:00
2021-08-20 15:20:59 -07:00
2021-08-07 23:17:50 -07:00
2019-07-21 20:53:30 -07:00
2021-09-15 00:26:56 -07:00
2021-11-04 06:25:52 -07:00
2021-11-04 06:25:52 -07:00
2021-10-13 12:27:47 +02:00