Adjustment Layer

Adjustment Layer 1.0.6

This release fixes critical freezing and crashing issues that occurred when creating or deleting the Adjustment Layer, particularly on Windows and when used alongside specific other plugins.
本リリースは、特定の環境下(Windowsや他のプラグインとの併用時)において、調整レイヤーの作成・削除の際にOBS全体がフリーズまたはクラッシュする問題を修正するバグフィックスリリースです。


Bug Fixes

Fix GPU driver crashes and freezes on layer removal (especially on Windows/D3D11)
  • Deleting the adjustment layer sometimes caused OBS to freeze completely, especially on Windows (including UTM virtual machines) using Direct3D 11.
  • Root cause: Texture resources were being destroyed asynchronously without properly locking the graphics context, leading to concurrent D3D11 immediate context access and driver hangs.
  • Fixed by delegating resource destruction to the graphics thread and explicitly locking the graphics context (obs_enter_graphics()).
Fix application deadlocks during scene traversal
  • Removing the adjustment layer while certain other plugins (e.g., Lua scripts with heavy rendering like HoraikenHorizonLens) were active caused OBS to deadlock.
  • Root cause: The plugin searched for its parent scene during video_render, which locked the sources_mutex while the graphics thread already held the video_mutex. This caused a lock inversion against the UI thread when removing items.
  • Fixed by caching the parent scene pointer during video_tick (where it is safe to lock) to completely eliminate the lock inversion risk.
This release fixes rendering issues with transparent and sRGB-aware sources when used with the Adjustment Layer.



Bug Fixes​

Fix transparent source rendering (WebM, Spout, etc.)​

  • Transparent pixels in sources like WebM and Spout were rendered as opaque when the Adjustment Layer was enabled
  • Root cause: the plugin used premultiplied alpha blending (`ONE, INVSRCALPHA`) for source capture, but some sources output straight (non-premultiplied) alpha
  • Changed to use straight alpha blending (`SRCALPHA, INVSRCALPHA`) to match OBS's default scene rendering behavior

Fix sRGB blending method being ignored​

  • Sources with the default blending method (sRGB) were incorrectly rendered as "sRGB Off" when the Adjustment Layer was enabled
  • Added proper `gs_set_linear_srgb` handling so that OBS selects the correct gamma-aware rendering technique
Back
Top