0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00
obs-studio/libobs
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
..
audio-monitoring libobs: Add obs_audio_monitoring_supported() 2021-11-20 20:00:59 -08:00
callback libobs/callback: Make proc_handler_t threadsafe 2021-10-14 04:28:04 -07:00
data libobs: Remove DrawSrgbDecompressPremultiplied 2021-10-02 05:53:27 -07:00
graphics libobs, libobs-d3d11: Add support for NT Handle shared textures 2021-11-20 16:34:28 +13:00
media-io clang-format: Commit file changes for clang-format 12 2021-10-13 20:00:04 +11:00
util libobs/util: Add task queue helper 2021-12-19 11:25:57 -08:00
CMakeLists.txt libobs/util: Add task queue helper 2021-12-19 11:25:57 -08:00
libobs.pc.in libobs: add ppc64(le) specific flags to libobs.pc 2020-04-27 00:07:18 +02:00
LibObsConfig.cmake.in cmake: Export plugin data destination 2014-09-27 09:41:32 -07:00
LibObsConfigVersion.cmake.in Export libobs cmake target, so external plugins can be built without ugly hacks 2014-05-08 14:43:16 +02:00
obs-audio-controls.c UI, libobs, obs-plugins: Fix compiler warnings 2021-11-04 06:25:52 -07:00
obs-audio-controls.h libobs: Mark unused audio functions as deprecated 2021-10-24 02:00:16 -07:00
obs-audio.c libobs: Add ability to queue audio task 2021-12-19 11:53:14 -08:00
obs-avc.c clang-format: Apply formatting 2019-06-23 23:49:10 -07:00
obs-avc.h clang-format: Commit file changes for clang-format 11 2021-10-13 20:00:04 +11:00
obs-cocoa.m libobs: Cleanup uses of objc_msgSend in Objective-C code 2021-01-12 10:10:37 -08:00
obs-config.h libobs: Update version to 27.1.2 2021-10-04 10:38:39 -07:00
obs-data.c libobs: Add obs_data_get_last_json() 2021-04-23 12:38:50 -07:00
obs-data.h libobs: Add obs_data_get_last_json() 2021-04-23 12:38:50 -07:00
obs-defs.h clang-format: Apply formatting 2019-06-23 23:49:10 -07:00
obs-display.c clang-format: Apply formatting 2019-06-23 23:49:10 -07:00
obs-encoder.c libobs: Add profiler section for send_packet 2021-09-11 15:33:02 -07:00
obs-encoder.h UI: Hide encoder if marked internal 2020-02-18 21:37:41 -08:00
obs-ffmpeg-compat.h clang-format: Apply formatting 2019-06-23 23:49:10 -07:00
obs-hotkey-name-map.c libobs: Remove WIN32_LEAN_AND_MEAN 2021-10-10 19:12:45 -07:00
obs-hotkey.c libobs, linux-v4l2: Set thread names 2021-01-25 04:13:24 -08:00
obs-hotkey.h clang-format: Apply formatting 2019-06-23 23:49:10 -07:00
obs-hotkeys.h libobs: Remove _WIN32 ifdef from enum 2019-11-17 20:30:42 -08:00
obs-interaction.h clang-format: Apply formatting 2019-06-23 23:49:10 -07:00
obs-internal.h libobs: Implement deferred destruction of sources 2021-12-19 11:53:19 -08:00
obs-missing-files.c libobs: Add missing file API to sources 2021-01-17 10:31:58 +13:00
obs-missing-files.h libobs: Add missing file API to sources 2021-01-17 10:31:58 +13:00
obs-module.c libobs: Fix missing return when loading non-OBS DLL 2021-12-06 14:30:26 +01:00
obs-module.h libobs: Add functions to get locale text from modules 2020-08-10 12:24:01 -07:00
obs-nix-platform.c libobs: Introduce the concept of a Unix platform 2021-02-01 19:05:10 -03:00
obs-nix-platform.h libobs: Add a Wayland platform 2021-02-09 09:39:04 -03:00
obs-nix-wayland.c libobs: Add Wayland hotkey infrastructure 2021-12-16 10:54:29 -03:00
obs-nix-wayland.h libobs: Add a Wayland platform 2021-02-09 09:39:04 -03:00
obs-nix-x11.c libobs: Fix Numpad Minus naming in UI 2021-12-16 10:54:29 -03:00
obs-nix-x11.h libobs/nix: Move X11-specific code to obs-nix-x11.c 2021-02-01 19:03:43 -03:00
obs-nix.c libobs/nix: List Flatpak search paths 2021-07-08 10:53:15 -07:00
obs-nix.h libobs/nix: Move X11-specific code to obs-nix-x11.c 2021-02-01 19:03:43 -03:00
obs-output-delay.c libobs: Minor fixes / code cleanups 2021-03-04 19:29:33 +01:00
obs-output.c libobs: Allow last encoder error for last output error 2021-10-25 12:24:16 -07:00
obs-output.h libobs: Implement pausing of outputs 2019-07-07 16:38:22 -07:00
obs-properties.c libobs, UI: Add support for button properties as links 2021-07-09 17:32:09 +12:00
obs-properties.h libobs, UI: Add support for button properties as links 2021-07-09 17:32:09 +12:00
obs-scene.c libobs: Add obs_scene_prune_sources 2021-11-23 22:00:47 -08:00
obs-scene.h UI: Add visibility transitions 2021-03-16 22:15:16 -07:00
obs-service.c libobs: Change service max res. to res. list 2020-11-13 18:22:53 -08:00
obs-service.h libobs: Change service max res. to res. list 2020-11-13 18:22:53 -08:00
obs-source-deinterlace.c libobs: Deinterlace as linear SRGB when needed 2021-01-21 07:42:57 -08:00
obs-source-transition.c libobs: transition: ignore sources with ts=0 2021-02-02 13:28:54 -08:00
obs-source.c libobs: Implement deferred destruction of sources 2021-12-19 11:53:19 -08:00
obs-source.h libobs: Add source cap to hint not to show properties 2021-12-07 20:54:37 -08:00
obs-ui.h docs/sphinx: Fix various typos 2019-10-14 17:19:38 -07:00
obs-video-gpu-encode.c libobs: Defer reconfiguring encoders to the encode threads 2021-08-23 18:26:37 -07:00
obs-video.c libobs: Implement deferred destruction of sources 2021-12-19 11:53:19 -08:00
obs-view.c clang-format: Apply formatting 2019-06-23 23:49:10 -07:00
obs-win-crash-handler.c libobs: Include thread names in thread traces 2021-02-03 13:08:57 -08:00
obs-windows.c libobs: Log Windows 10 Hardware GPU Scheduler 2020-08-26 22:57:52 +02:00
obs.c libobs: Implement deferred destruction of sources 2021-12-19 11:53:19 -08:00
obs.h libobs: Implement deferred destruction of sources 2021-12-19 11:53:19 -08:00
obs.hpp libobs: Add preprocessor directive for AutoRelease types 2021-12-18 16:42:51 +11:00
obsconfig.h.in libobs: Add a Wayland platform 2021-02-09 09:39:04 -03:00