After cleaning up the native flags in various places, and disabling
making sibling of native widgets native, BrowserDock was left in an
inconsistent state, since it requires being native for CEF to work
properly.
Make BrowserDock native.
Some widgets are marked as native unnecessarily. Native widgets are
a bit more involving than regular ones, so remove this flag.
Original patch by David Edmundson <kde@davidedmundson.co.uk>
Native windows really only make sense for previews. They can be a new
xcb_window or a wayland subsurface.
For historical reasons setting a widget to native will also affect
ancestors. Qt will still draw them as part of the parent as they are
never mapped, but a window is nonetheless created.
This is especially problematic on wayland as then the subsurface is
parented to an unmapped window.
This default behaviour can be turned off. Now only the native widgets
(the video previews) are actually native.
xcompcap was taking locks in the wrong order resulting in deadlocks on
close. If you had an xcompcap properties window open on close it was
nearly 100% deadlock. This ensures locks are taken in the same order as
libobs takes when shutting down.
Also consolidate behavior of contrast/brightness/gamma across chroma
key, color correction, and color key filters. The contrast range has
been expanded to approximtely match the range when the filter applied to
nonlinear colors.
The newly versioned filter also has color overlay removed. We can add it
back if the demand is there, but I'd rather not maintain it.
Also consolidate behavior of contrast/brightness/gamma across chroma
key, color correction, and color key filters. The contrast range has
been expanded to approximtely match the range when the filter applied to
nonlinear colors.
Also consolidate behavior of contrast/brightness/gamma across chroma
key, color correction, and color key filters. The contrast range has
been expanded to approximtely match the range when the filter applied to
nonlinear colors.
Well, linear SRGB for screen capture. The window capture path failed to
copy between SRGB textures for some reason, so just force nonlinear
formats instead.
For game capture, neither GL nor D3D9 support SRGB shared textures, so
disable linear SRGB support if the texture format doesn't support it.
Similarly, DXGI display capture doesn't work with SRGB at the moment.
Unsure if it will with more work, but disable for now.
Also force linear SRGB off if using GDI-compatible textures.
Both image and color sources have been updated.
Also added alpha support to the color source. Useful for users, and
serves as an easy alpha blending test case.
GS_RGBA, GS_BGRX, and GS_BGRA now use TYPELESS DXGI formats, so we can
alias them between UNORM and UNORM_SRGB as necessary. GS_RGBA_UNORM,
GS_BGRX_UNORM, and GS_BGRA_UNORM have been added to support straight
UNORM types, which Windows requires for sharing textures from D3D9 and
OpenGL. The D3D path aliases via views, and GL aliases via
GL_EXT_texture_sRGB_decode/GL_FRAMEBUFFER_SRGB.
A significant amount of code has changed in the D3D/GL backends, but the
concepts are simple. On the D3D side, we need separate SRVs and RTVs to
support nonlinear/linear reads and writes. On the GL side, we need to
set the proper GL parameters to emulate the same.
Add gs_enable_framebuffer_srgb/gs_framebuffer_srgb_enabled to set/get
the framebuffer as SRGB or not.
Add gs_linear_srgb_active/gs_set_linear_srgb to instruct sources that
they should render as SRGB. Legacy sources can ignore this setting
without regression.
Update obs_source_draw to use linear SRGB as needed.
Update render_filter_tex to use linear SRGB as needed.
Add gs_effect_set_texture_srgb next to gs_effect_set_texture to set
texture with SRGB view instead.
Add SRGB helpers for vec4 struct.
Create GDI-compatible textures without SRGB support. Doesn't seem to
work with SRGB formats.
Adds frame time multiple based timeout option, instead of the hardcoded
1 second timeout.
Adds optional automatic device stream reset when the device times out.
Helps with devices that "lock up" or "freeze", for example Magewell and
Elgato USB HDMI capture devices.
The automatic reset is by default off and optional. Turning it on can
cause issues for devices that work but drop a lot of frames.
The "fullName" property was filled only in case of exceeding
TRUNCATE_TEXT_LENGTH. Also search function had worked only with
item->text() what was the reason of maximum search length in
Hotkeys Filter(Setting->Hotkeys).
The following changes allow to search in filter without
the length limit of string along with the current functionality.