obsproject / obs-browser

CEF-based OBS Studio browser plugin
GNU General Public License v2.0
776 stars 220 forks source link

Build errors after recent change on Linux #337

Closed ToadKing closed 2 years ago

ToadKing commented 2 years ago

Operating System Info

Other

Other OS

Arch Linux

OBS Studio Version

Git

OBS Studio Version (Other)

No response

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

No response

Expected Behavior

Build succeeds

Current Behavior

The following errors happen

/home/michael/.cache/yay/obs-studio-git/src/obs-studio-git/plugins/obs-browser/obs-browser-source.hpp:80:14: error: ‘atomic’ in namespace ‘std’ does not name a template type
   80 |         std::atomic<bool> destroying = false;
      |              ^~~~~~
/home/michael/.cache/yay/obs-studio-git/src/obs-studio-git/plugins/obs-browser/obs-browser-source.hpp:29:1: note: ‘std::atomic’ is defined in header ‘<atomic>’; did you forget to ‘#include <atomic>’?
   28 | #include <mutex>
  +++ |+#include <atomic>
   29 | 
...
/home/michael/.cache/yay/obs-studio-git/src/obs-studio-git/plugins/obs-browser/obs-browser-source.cpp: In member function ‘void BrowserSource::Destroy()’:
/home/michael/.cache/yay/obs-studio-git/src/obs-studio-git/plugins/obs-browser/obs-browser-source.cpp:125:9: error: ‘destroying’ was not declared in this scope; did you mean ‘Destroy’?
  125 |         destroying = true;
      |         ^~~~~~~~~~
      |         Destroy
/home/michael/.cache/yay/obs-studio-git/src/obs-studio-git/plugins/obs-browser/obs-browser-source.cpp: In member function ‘void BrowserSource::SendKeyClick(const obs_key_event*, bool)’:
/home/michael/.cache/yay/obs-studio-git/src/obs-studio-git/plugins/obs-browser/obs-browser-source.cpp:336:13: error: ‘destroying’ was not declared in this scope; did you mean ‘Destroy’?
  336 |         if (destroying)
      |             ^~~~~~~~~~
      |             Destroy
/home/michael/.cache/yay/obs-studio-git/src/obs-studio-git/plugins/obs-browser/obs-browser-source.cpp: In member function ‘void BrowserSource::SetShowing(bool)’:
/home/michael/.cache/yay/obs-studio-git/src/obs-studio-git/plugins/obs-browser/obs-browser-source.cpp:390:13: error: ‘destroying’ was not declared in this scope; did you mean ‘Destroy’?
  390 |         if (destroying)
      |             ^~~~~~~~~~
      |             Destroy

Steps to Reproduce

  1. Try to build on Linux

Anything else we should know?

Looks like a simple missing header include.

WizardCM commented 2 years ago

Closing in favour of discussion in

VennStone commented 2 years ago

Just ran into this using cef_binary_4280_linux64 with #336. Is there an updated CEF I should be using?

In file included from /home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-source-audio.cpp:18:
/home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-source.hpp:80:7: error: ‘atomic’ in namespace ‘std’ does not name a template type
   80 |  std::atomic<bool> destroying = false;
      |       ^~~~~~
/home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-source.hpp:29:1: note: ‘std::atomic’ is defined in header ‘<atomic>’; did you forget to ‘#include <atomic>’?
   28 | #include <mutex>
  +++ |+#include <atomic>
   29 | 
[ 71%] Built target linux-capture
[ 71%] Generating qrc_obs.cpp
In file included from /home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-plugin.cpp:31:
/home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-source.hpp:80:20: error: field ‘destroying’ has incomplete type ‘std::atomic<bool>’
   80 |  std::atomic<bool> destroying = false;
      |                    ^~~~~~~~~~
In file included from /usr/include/c++/10/bits/shared_ptr_atomic.h:33,
                 from /usr/include/c++/10/memory:85,
                 from /usr/include/c++/10/thread:44,
                 from /home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-plugin.cpp:28:
/usr/include/c++/10/bits/atomic_base.h:152:12: note: declaration of ‘struct std::atomic<bool>’
  152 |     struct atomic;
      |            ^~~~~~
[ 71%] Generating ui_browser-source-toolbar.h
In file included from /home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-source.cpp:19:
/home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-source.hpp:80:7: error: ‘atomic’ in namespace ‘std’ does not name a template type
   80 |  std::atomic<bool> destroying = false;
/home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-source.cpp: In member function ‘void BrowserSource::Destroy()’:
/home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-source.cpp:125:2: error: ‘destroying’ was not declared in this scope; did you mean ‘Destroy’?
  125 |  destroying = true;
      |  ^~~~~~~~~~
      |  Destroy
[ 78%] Generating ui_OBSAbout.h
/home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-source.cpp: In member function ‘void BrowserSource::SendKeyClick(const obs_key_event*, bool)’:
/home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-source.cpp:336:6: error: ‘destroying’ was not declared in this scope; did you mean ‘Destroy’?
  336 |  if (destroying)
      |      ^~~~~~~~~~
      |      Destroy
/home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-source.cpp: In member function ‘void BrowserSource::SetShowing(bool)’:
/home/venn/Downloads/obs-studio/plugins/obs-browser/obs-browser-source.cpp:390:6: error: ‘destroying’ was not declared in this scope; did you mean ‘Destroy’?
  390 |  if (destroying)
      |      ^~~~~~~~~~
      |      Destroy
[ 78%] Building CXX object UI/frontend-plugins/decklink-output-ui/CMakeFiles/decklink-ouput-ui.dir/DecklinkOutputUI.cpp.o
Scanning dependencies of target obs
/home/venn/Downloads/obs-studio/plugins/obs-browser/browser-client.cpp: In member function ‘bool BrowserClient::valid() const’:
/home/venn/Downloads/obs-studio/plugins/obs-browser/browser-client.cpp:37:22: error: ‘struct BrowserSource’ has no member named ‘destroying’; did you mean ‘Destroy’?
   37 |  return !!bs && !bs->destroying;
WizardCM commented 2 years ago

Hmm, it should definitely still build with 4280 CEF. I'll do some further tests myself to see why it's complaining about destroying, as that seems separate.