diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d3145e1..0cf6c98f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/") include(GetGitRevisionDescription) get_git_head_revision(GIT_REFSPEC GIT_SHA1) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/src/version.cpp" @ONLY) + if(WIN32) get_filename_component(ISS_PLUGIN_FILES_DIR "${CMAKE_BINARY_DIR}\\..\\package" ABSOLUTE) file(TO_NATIVE_PATH "${ISS_PLUGIN_FILES_DIR}" ISS_PLUGIN_FILES_DIR) @@ -16,8 +17,6 @@ if(WIN32) endif() if(BUILD_OUT_OF_TREE) - # out of tree builds - # credits to c3r1c3 set(CMAKE_PREFIX_PATH "${QTDIR}") set(CMAKE_INCLUDE_CURRENT_DIR ON) list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/external") @@ -29,104 +28,107 @@ if(BUILD_OUT_OF_TREE) find_package(Libcurl REQUIRED) find_path(LIBOBS_FRONTEND_INCLUDE_DIR HINTS ${LIBOBS_INCLUDE_DIRS}) find_file(LIBOBS_FRONTEND_API_LIB NAMES libobs-frontend-api.* HINTS ${LIBOBS_LIB} ) +endif() - if(APPLE) - find_library(COCOA Cocoa) +if(APPLE) + find_library(COCOA Cocoa) + if(BUILD_OUT_OF_TREE) find_package(Qt5MacExtras REQUIRED) - include_directories(${COCOA}) - add_link_options("-v") endif() + include_directories(${COCOA}) +endif() - if(UNIX AND NOT APPLE) - find_package(X11 REQUIRED) - link_libraries(${X11_LIBRARIES}) - include_directories(${X11_INCLUDE_DIR}) - endif() - set(advanced-scene-switcher_HEADERS - ${advanced-scene-switcher_HEADERS} - src/headers/advanced-scene-switcher.hpp - src/headers/switcher-data-structs.hpp - src/headers/utility.hpp - src/headers/curl-helper.hpp - src/headers/switch-audio.hpp - src/headers/switch-executable.hpp - src/headers/switch-file.hpp - src/headers/switch-idle.hpp - src/headers/switch-media.hpp - src/headers/switch-pause.hpp - src/headers/switch-random.hpp - src/headers/switch-screen-region.hpp - src/headers/switch-time.hpp - src/headers/switch-transitions.hpp - src/headers/switch-window.hpp - src/headers/switch-sequence.hpp - src/headers/switch-generic.hpp - src/headers/version.h - ) +if(UNIX AND NOT APPLE) + find_package(X11 REQUIRED) + link_libraries(${X11_LIBRARIES}) + include_directories(${X11_INCLUDE_DIR}) +endif() - set(advanced-scene-switcher_SOURCES - ${advanced-scene-switcher_SOURCES} - src/advanced-scene-switcher.cpp - src/advanced-scene-switcher-module.c - src/switcher-data-structs.cpp - src/switch-transitions.cpp - src/switch-screen-region.cpp - src/switch-priority.cpp - src/switch-executable.cpp - src/switch-idle.cpp - src/switch-sequence.cpp - src/switch-file.cpp - src/switch-window.cpp - src/switch-media.cpp - src/hotkey.cpp - src/general.cpp - src/switch-pause.cpp - src/switch-random.cpp - src/switch-time.cpp - src/switch-audio.cpp - src/switch-generic.cpp - src/curl-helper.cpp - src/volume-control.cpp - src/version.cpp - ) +set(advanced-scene-switcher_HEADERS + ${advanced-scene-switcher_HEADERS} + src/headers/advanced-scene-switcher.hpp + src/headers/switcher-data-structs.hpp + src/headers/utility.hpp + src/headers/curl-helper.hpp + src/headers/volume-control.hpp + src/headers/switch-audio.hpp + src/headers/switch-executable.hpp + src/headers/switch-file.hpp + src/headers/switch-idle.hpp + src/headers/switch-media.hpp + src/headers/switch-pause.hpp + src/headers/switch-random.hpp + src/headers/switch-screen-region.hpp + src/headers/switch-time.hpp + src/headers/switch-transitions.hpp + src/headers/switch-window.hpp + src/headers/switch-sequence.hpp + src/headers/switch-generic.hpp + src/headers/version.h + ) - set(advanced-scene-switcher_UI - ${advanced-scene-switcher_UI} - forms/advanced-scene-switcher.ui - ) +set(advanced-scene-switcher_SOURCES + ${advanced-scene-switcher_SOURCES} + src/advanced-scene-switcher.cpp + src/advanced-scene-switcher-module.c + src/switcher-data-structs.cpp + src/switch-transitions.cpp + src/switch-screen-region.cpp + src/switch-priority.cpp + src/switch-executable.cpp + src/switch-idle.cpp + src/switch-sequence.cpp + src/switch-file.cpp + src/switch-window.cpp + src/switch-media.cpp + src/hotkey.cpp + src/general.cpp + src/switch-pause.cpp + src/switch-random.cpp + src/switch-time.cpp + src/switch-audio.cpp + src/switch-generic.cpp + src/curl-helper.cpp + src/volume-control.cpp + src/version.cpp + ) - if(WIN32) - set(advanced-scene-switcher_PLATFORM_SOURCES - src/win/advanced-scene-switcher-win.cpp) +set(advanced-scene-switcher_UI + ${advanced-scene-switcher_UI} + forms/advanced-scene-switcher.ui + ) - elseif(APPLE) - set(advanced-scene-switcher_PLATFORM_SOURCES - src/osx/advanced-scene-switcher-osx.mm) - set_source_files_properties(advanced-scene-switcher-osx.mm - PROPERTIES COMPILE_FLAGS "-fobjc-arc") - set(advanced-scene-switcher_PLATFORM_LIBS - ${COCOA}) +if(WIN32) + set(advanced-scene-switcher_PLATFORM_SOURCES + src/win/advanced-scene-switcher-win.cpp) +elseif(APPLE) + set(advanced-scene-switcher_PLATFORM_SOURCES + src/osx/advanced-scene-switcher-osx.mm) + set_source_files_properties(advanced-scene-switcher-osx.mm + PROPERTIES COMPILE_FLAGS "-fobjc-arc") + set(advanced-scene-switcher_PLATFORM_LIBS + ${COCOA}) +else() + set(advanced-scene-switcher_PLATFORM_SOURCES + src/linux/advanced-scene-switcher-nix.cpp) + set(advanced-scene-switcher_PLATFORM_LIBS + Xss) +endif() - elseif("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") - set(advanced-scene-switcher_PLATFORM_SOURCES - src/linux/advanced-scene-switcher-nix.cpp) - set(advanced-scene-switcher_PLATFORM_LIBS - Xss) - endif() +qt5_wrap_ui(advanced-scene-switcher_UI_HEADERS + ${advanced-scene-switcher_UI} + ${advanced-scene-switcher_PLATFORM_UI}) - qt5_wrap_ui(advanced-scene-switcher_UI_HEADERS - ${advanced-scene-switcher_UI} - ${advanced-scene-switcher_PLATFORM_UI}) - - add_library(advanced-scene-switcher MODULE - ${advanced-scene-switcher_HEADERS} - ${advanced-scene-switcher_SOURCES} - ${advanced-scene-switcher_UI_HEADERS} - ${advanced-scene-switcher_PLATFORM_SOURCES} - ${advanced-scene-switcher_PLATFORM_HEADERS} - ) +add_library(advanced-scene-switcher MODULE + ${advanced-scene-switcher_HEADERS} + ${advanced-scene-switcher_SOURCES} + ${advanced-scene-switcher_UI_HEADERS} + ${advanced-scene-switcher_PLATFORM_SOURCES} + ${advanced-scene-switcher_PLATFORM_HEADERS} + ) +if(BUILD_OUT_OF_TREE) include_directories( "${LIBOBS_INCLUDE_DIRS}" "${LIBOBS_FRONTEND_INCLUDE_DIR}" @@ -162,7 +164,6 @@ if(BUILD_OUT_OF_TREE) # OSX if(APPLE) set_target_properties(advanced-scene-switcher PROPERTIES PREFIX "") - endif() # Linux @@ -182,102 +183,7 @@ if(BUILD_OUT_OF_TREE) install(FILES ${ASS_TRANSLATION_FILES} DESTINATION "${CMAKE_INSTALL_PREFIX}/share/obs/obs-plugins/advanced-scene-switcher/locale") endif() -else () - # in-tree build - if(APPLE) - find_library(COCOA Cocoa) - include_directories(${COCOA}) - endif() - - if(UNIX AND NOT APPLE) - find_package(X11 REQUIRED) - link_libraries(${X11_LIBRARIES}) - include_directories(${X11_INCLUDE_DIR}) - endif() - - set(advanced-scene-switcher_HEADERS - ${advanced-scene-switcher_HEADERS} - src/headers/advanced-scene-switcher.hpp - src/headers/switcher-data-structs.hpp - src/headers/utility.hpp - src/headers/curl-helper.hpp - src/headers/volume-control.hpp - src/headers/switch-audio.hpp - src/headers/switch-executable.hpp - src/headers/switch-file.hpp - src/headers/switch-idle.hpp - src/headers/switch-media.hpp - src/headers/switch-pause.hpp - src/headers/switch-random.hpp - src/headers/switch-screen-region.hpp - src/headers/switch-time.hpp - src/headers/switch-transitions.hpp - src/headers/switch-window.hpp - src/headers/switch-sequence.hpp - src/headers/switch-generic.hpp - src/headers/version.h - ) - - set(advanced-scene-switcher_SOURCES - ${advanced-scene-switcher_SOURCES} - src/advanced-scene-switcher.cpp - src/advanced-scene-switcher-module.c - src/switcher-data-structs.cpp - src/switch-transitions.cpp - src/switch-screen-region.cpp - src/switch-priority.cpp - src/switch-executable.cpp - src/switch-idle.cpp - src/switch-sequence.cpp - src/switch-file.cpp - src/switch-window.cpp - src/switch-media.cpp - src/hotkey.cpp - src/general.cpp - src/switch-pause.cpp - src/switch-random.cpp - src/switch-time.cpp - src/switch-audio.cpp - src/switch-generic.cpp - src/curl-helper.cpp - src/volume-control.cpp - src/version.cpp - ) - - set(advanced-scene-switcher_UI - ${advanced-scene-switcher_UI} - forms/advanced-scene-switcher.ui - ) - - if(WIN32) - set(advanced-scene-switcher_PLATFORM_SOURCES - src/win/advanced-scene-switcher-win.cpp) - elseif(APPLE) - set(advanced-scene-switcher_PLATFORM_SOURCES - src/osx/advanced-scene-switcher-osx.mm) - set_source_files_properties(advanced-scene-switcher-osx.mm - PROPERTIES COMPILE_FLAGS "-fobjc-arc") - set(advanced-scene-switcher_PLATFORM_LIBS - ${COCOA}) - else() - set(advanced-scene-switcher_PLATFORM_SOURCES - src/linux/advanced-scene-switcher-nix.cpp) - set(advanced-scene-switcher_PLATFORM_LIBS - Xss) - endif() - - qt5_wrap_ui(advanced-scene-switcher_UI_HEADERS - ${advanced-scene-switcher_UI} - ${advanced-scene-switcher_PLATFORM_UI}) - - add_library(advanced-scene-switcher MODULE - ${advanced-scene-switcher_HEADERS} - ${advanced-scene-switcher_SOURCES} - ${advanced-scene-switcher_UI_HEADERS} - ${advanced-scene-switcher_PLATFORM_SOURCES} - ${advanced-scene-switcher_PLATFORM_HEADERS} - ) - +else() target_link_libraries(advanced-scene-switcher ${advanced-scene-switcher_PLATFORM_LIBS} obs-frontend-api diff --git a/README.md b/README.md index 2debaec7..617c7be5 100644 --- a/README.md +++ b/README.md @@ -49,9 +49,10 @@ Most versions of Linux you can use cmake-gui or the command line. **For the command line:** ``` -cmake -DBUILD_OUT_OF_TREE=1 -DLIBOBS_INCLUDE_DIR="" --DLIBOBS_FRONTEND_INCLUDE_DIR="" --DLIBOBS_FRONTEND_API_LIB="< path to the libobs-frontend-api.so file (usually in the same place as LIBOBS_LIB)>" +cmake -DBUILD_OUT_OF_TREE=1 -DLIBOBS_INCLUDE_DIR="" \ +-DLIBOBS_FRONTEND_INCLUDE_DIR="" \ +-DLIBOBS_LIB="" \ +-DLIBOBS_FRONTEND_API_LIB="" \ -DCMAKE_INSTALL_PREFIX=/usr .. make -j4 sudo make install diff --git a/src/advanced-scene-switcher.cpp b/src/advanced-scene-switcher.cpp index c43ce43a..e6bcd6ed 100644 --- a/src/advanced-scene-switcher.cpp +++ b/src/advanced-scene-switcher.cpp @@ -409,7 +409,7 @@ void SwitcherData::Thread() //sleep for a bit if (verbose) - blog(LOG_INFO, "sleep for %d", duration.count()); + blog(LOG_INFO, "sleep for %ld", duration.count()); cv.wait_for(lock, duration); startTime = std::chrono::high_resolution_clock::now(); diff --git a/src/headers/switch-media.hpp b/src/headers/switch-media.hpp index b97f8567..e70e33b8 100644 --- a/src/headers/switch-media.hpp +++ b/src/headers/switch-media.hpp @@ -23,8 +23,8 @@ struct MediaSwitch : SceneSwitcherEntry { // trigger scene change only once even if media state might trigger repeatedly bool matched = false; - std::atomic stopped = false; - std::atomic ended = false; + std::atomic_bool stopped = {false}; + std::atomic_bool ended = {false}; // workaround to enable use of "ended" to specify end of VLC playlist bool previousStateEnded = false;