OBS Studio - Free from stubborn peops https://obsproject.com
Find a file
Lain dd64fef084 linux-capture: Fix xcomp capturing random windows
There are two situations where xcomposite window capture will capture
random windows: on first creation, and when going to the properties when
the current window is invalid. The first happens because for whatever
reason someone decided to just make it capture the first top-level
window if there is no set value. The second happens because the
properties widget cannot find the value it's looking for and defaults to
the first one when the properties are opened, thus selecting and
capturing the first window in the list (which is probably something we
should fix in the properties view at some point but I don't want to dive
into code that's even *more* cursed than xcomposite code right now)

I think that this was a major oversight and that whoever wrote it
however many countless years ago did not realize that this is something
that maybe users don't want to have happen.

So instead, this diff makes it so that on first creation, it creates a
value that says "[Select a window to capture]" that keeps the capture
inactive until a user actually chooses a window rather than the
top-level window. It also makes it so that if the user has a window that
is no longer valid, it will keep that window in the list and as the
currently selected value, which prevents it from automatically selecting
the first window in the list when properties are opened.

(Have I mentioned xcomposite is cursed? Trying to debug xcomposite code
in a debugger freezes my window compositor and forces me to do a hard
restart of my entire computer, so I was forced to use printf debugging.
Absolute nightmare-inducing code in here.)
2024-09-03 13:28:18 -07:00
.github CI: Update flatpak-builder and flat-manager actions 2024-08-29 13:31:39 -04:00
additional_install_files Improve additional_install_files for debug/release 2014-07-18 22:41:11 -07:00
build-aux build-aux: Update Flatpak CEF from 103/5060 to 127/6533 2024-08-30 23:05:05 -04:00
cmake cmake: Exclude macOS .DS_Store from resources 2024-08-31 10:39:11 -04:00
deps Remove CMake legacy code path 2024-08-28 13:53:25 -04:00
docs/sphinx docs,libobs: Remove deprecated service APIs 2024-08-28 19:10:27 -04:00
libobs libobs: Always set initial scene item pos to top-left corner 2024-09-02 20:39:18 +02:00
libobs-d3d11 libobs-d3d11: Remove CMake legacy code path 2024-08-22 15:39:00 -04:00
libobs-opengl Remove CMake legacy code path 2024-08-28 13:53:25 -04:00
libobs-winrt Remove CMake legacy code path 2024-08-28 13:53:25 -04:00
plugins linux-capture: Fix xcomp capturing random windows 2024-09-03 13:28:18 -07:00
shared shared/qt: Remove unused graphics include from qt-wrappers 2024-08-30 23:55:45 -04:00
test Update formatting of CMake files 2024-08-14 12:07:47 -04:00
UI UI: Fix Qt UIC warning in settings UI 2024-08-31 12:06:38 -04:00
.cirrus.yml CI: Fix FreeBSD package installation 2024-06-19 13:06:10 -04:00
.clang-format mac-capture: Replace pragmas with availability markers 2024-05-16 15:25:53 -04:00
.editorconfig Add composable theme files spacing in editorconfig 2024-04-25 16:11:38 -04:00
.gersemirc CI: Add configuration file for gersemi CMake formatter 2024-08-14 12:07:47 -04:00
.git-blame-ignore-revs .git-blame-ignore-revs: Add change from cmake-format to gersemi 2024-08-14 12:10:35 -04:00
.gitattributes CI: Add Crowdin Synchronization 2021-11-25 20:59:11 +11:00
.gitignore CI: Add configuration file for gersemi CMake formatter 2024-08-14 12:07:47 -04:00
.gitmodules cmake: Update cross-platform build project management for Windows 2024-08-20 16:00:21 -04:00
.mailmap Update copyrights/names 2023-05-20 01:31:18 -07:00
.swift-format cmake: Add Xcode component to CMake build framework 3.0 2023-03-26 18:20:38 -04:00
AUTHORS Update translations from Crowdin 2024-07-17 09:34:12 +00:00
buildspec.json CI: Update CEF from 103/5060 to 127/6533 2024-08-30 22:38:35 -04:00
CMakeLists.txt Remove CMake legacy code path 2024-08-28 13:53:25 -04:00
CMakePresets.json Remove CMake legacy code path 2024-08-28 13:53:25 -04:00
COC.rst Revert "docs: Rename Code of Conduct to fix GitHub detection" 2021-08-07 20:40:29 +10:00
COMMITMENT Add GPL Cooperation Commitment to base directory 2019-01-24 02:02:49 -05:00
CONTRIBUTING.rst CONTRIBUTING.rst: Mention formatting scripts 2023-12-16 18:10:51 -06:00
COPYING COPYING: Use license file from gnu.org 2021-10-24 00:35:27 -07:00
INSTALL Update INSTALL 2018-07-14 08:21:00 +01:00
README.rst README.rst: Add SAST Tools section 2024-06-04 18:37:44 -04:00

OBS Studio <https://obsproject.com>
===================================

.. image:: https://github.com/obsproject/obs-studio/actions/workflows/push.yaml/badge.svg?branch=master
   :alt: OBS Studio Build Status - GitHub Actions
   :target: https://github.com/obsproject/obs-studio/actions/workflows/push.yaml?query=branch%3Amaster

.. image:: https://badges.crowdin.net/obs-studio/localized.svg
   :alt: OBS Studio Translation Project Progress
   :target: https://crowdin.com/project/obs-studio

.. image:: https://img.shields.io/discord/348973006581923840.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2
   :alt: OBS Studio Discord Server
   :target: https://obsproject.com/discord

What is OBS Studio?
-------------------

OBS Studio is software designed for capturing, compositing, encoding,
recording, and streaming video content, efficiently.

It's distributed under the GNU General Public License v2 (or any later
version) - see the accompanying COPYING file for more details.

Quick Links
-----------

- Website: https://obsproject.com

- Help/Documentation/Guides: https://github.com/obsproject/obs-studio/wiki

- Forums: https://obsproject.com/forum/

- Build Instructions: https://github.com/obsproject/obs-studio/wiki/Install-Instructions

- Developer/API Documentation: https://obsproject.com/docs

- Donating/backing/sponsoring: https://obsproject.com/contribute

- Bug Tracker: https://github.com/obsproject/obs-studio/issues

Contributing
------------

- If you would like to help fund or sponsor the project, you can do so
  via `Patreon <https://www.patreon.com/obsproject>`_, `OpenCollective
  <https://opencollective.com/obsproject>`_, or `PayPal
  <https://www.paypal.me/obsproject>`_.  See our `contribute page
  <https://obsproject.com/contribute>`_ for more information.

- If you wish to contribute code to the project, please make sure to
  read the coding and commit guidelines:
  https://github.com/obsproject/obs-studio/blob/master/CONTRIBUTING.rst

- Developer/API documentation can be found here:
  https://obsproject.com/docs

- If you wish to contribute translations, do not submit pull requests.
  Instead, please use Crowdin.  For more information read this page:
  https://obsproject.com/wiki/How-To-Contribute-Translations-For-OBS

- Other ways to contribute are by helping people out with support on
  our forums or in our community chat.  Please limit support to topics
  you fully understand -- bad advice is worse than no advice.  When it
  comes to something that you don't fully know or understand, please
  defer to the official help or official channels.


SAST Tools
----------

`PVS-Studio <https://pvs-studio.com/pvs-studio/?utm_source=website&utm_medium=github&utm_campaign=open_source>`_ - static analyzer for C, C++, C#, and Java code.