obs-studio/plugins/linux-capture
Tatsuyuki Ishi 316f858c68 linux-capture: Fix capturing on software rasterization setups
The GLX_EXT_texture_from_pixmap spec says:

The contents of the texture after the drawable has been bound are defined
as the result of all rendering that has completed before the call to
glXBindTexImageEXT.  In other words, the results of any operation which
has caused damage on the drawable prior to the glXBindTexImageEXT call
will be represented in the texture.

Rendering to the drawable while it is bound to a texture will leave the
contents of the texture in an undefined state.  However, no
synchronization between rendering and texturing is done by GLX.  It is
the application's responsibility to implement any synchronization
required.

In practice, on most systems with a GPU this kept a directly binding to
the framebuffer, which made it work with the previous code. However,
on software rasterization setups using llvmpipe, a blit was done inside
the call to glXBindTexImageEXT. This was the cause of a notoriously
ignored bug where the captured image would "freeze" until the source
was reconfigured.
2021-12-12 11:13:24 +11:00
..
data/locale Update translations from Crowdin 2021-09-24 09:42:08 -07:00
CMakeLists.txt linux-capture: Fail when libdrm missing 2021-09-25 15:27:51 -07:00
linux-capture.c linux-capture: Load XSHM capture on EGL/X11 2021-08-15 00:13:00 -07:00
pipewire-capture.c linux-capture: Deinit pipewire only if we init'ed 2021-12-12 10:05:02 +11:00
pipewire-capture.h linux-capture: Add PipeWire-based capture 2021-03-29 17:00:31 -03:00
pipewire.c linux-capture: Fallback on older PipeWire versions to SHM 2021-11-28 19:43:24 -03:00
pipewire.h linux-capture: Implement stream restoration 2021-11-24 11:42:06 -08:00
portal.c linux-capture: Add getter to screencast portal version 2021-11-24 11:42:06 -08:00
portal.h linux-capture: Add getter to screencast portal version 2021-11-24 11:42:06 -08:00
README Rename linux-xshm module to linux-capture 2014-08-29 17:19:30 -07:00
xcompcap-helper.cpp linux-capture: Remove unused code 2021-01-24 16:36:41 -08:00
xcompcap-helper.hpp linux-capture: Remove unused code 2021-01-24 16:36:41 -08:00
xcompcap-main.cpp linux-capture: Fix capturing on software rasterization setups 2021-12-12 11:13:24 +11:00
xcompcap-main.hpp clang-format: Apply formatting 2019-06-23 23:49:10 -07:00
xcomposite-main.cpp UI: Add source icons 2019-11-24 20:50:42 -08:00
xcursor-xcb.c linux-capture: Support linear SRGB 2021-01-21 07:42:57 -08:00
xcursor-xcb.h clang-format: Apply formatting 2019-06-23 23:49:10 -07:00
xcursor.c linux-capture: Support linear SRGB 2021-01-21 07:42:57 -08:00
xcursor.h linux-capture: Fix cursor draw bug when cropping window cap. 2019-11-20 22:09:47 -08:00
xhelpers.c linux-capture: Use RandR monitors for screen information 2020-03-13 18:29:35 -07:00
xhelpers.h linux-capture: Use RandR monitors for screen information 2020-03-13 18:29:35 -07:00
xshm-input.c linux-capture: Add OBS_SOURCE_SRGB flag 2021-05-03 01:19:56 -07:00

Linux XShm capture plugin

  This plugin uses the MIT-SHM extension for the X-server to capture the
  desktop.

Todo:

 - handle resolution changes of screens
 - handle adding/removing screens while recording
 - support different depths

Contributing:

  If you are interested in helping out with the plugin, please drop by in the
  #obs-dev channel on quakenet.

References:
 - http://www.x.org/releases/current/doc/xextproto/shm.html