mirror of
https://github.com/clangen/musikcube.git
synced 2025-03-14 13:21:13 +00:00
Merge pull request #559 from clangen/clangen/remove-boost
Remove boost as a dependency.
This commit is contained in:
commit
8edd653fd3
@ -1,158 +0,0 @@
|
||||
version: 2.0
|
||||
jobs:
|
||||
build_ubuntu_focal:
|
||||
docker:
|
||||
- image: ubuntu:focal
|
||||
steps:
|
||||
- run: apt-get update
|
||||
- run: DEBIAN_FRONTEND="noninteractive" TZ="America/Los_Angeles" apt-get install -y git ssh sshpass build-essential clang cmake libboost-thread1.71-dev libboost-system1.71-dev libboost-filesystem1.71-dev libboost-date-time1.71-dev libboost-atomic1.71-dev libboost-chrono1.71-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libssl-dev libtag1-dev libsystemd-dev
|
||||
- checkout
|
||||
- run: cmake -DENABLE_PCH=true -DGENERATE_DEB=true -DDEB_ARCHITECTURE=amd64 -DDEB_PLATFORM=ubuntu -DDEB_DISTRO=focal -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release .
|
||||
- run: make -j2
|
||||
- run: make package
|
||||
- run: ./script/copy-artifacts-to-host.sh /root/project/*.deb
|
||||
- run: mkdir -p /root/debs && mv /root/project/*.deb /root/debs/
|
||||
- store_artifacts:
|
||||
path: /root/debs/
|
||||
build_ubuntu_hirsute:
|
||||
docker:
|
||||
- image: ubuntu:hirsute
|
||||
steps:
|
||||
- run: apt-get update
|
||||
- run: DEBIAN_FRONTEND="noninteractive" TZ="America/Los_Angeles" apt-get install -y git ssh sshpass build-essential clang cmake libboost-thread1.71-dev libboost-system1.71-dev libboost-filesystem1.71-dev libboost-date-time1.71-dev libboost-atomic1.71-dev libboost-chrono1.71-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libssl-dev libtag1-dev libsystemd-dev libpipewire-0.3-dev libspa-0.2-dev
|
||||
- checkout
|
||||
- run: cmake -DENABLE_PCH=true -DENABLE_PIPEWIRE=true -DGENERATE_DEB=true -DDEB_ARCHITECTURE=amd64 -DDEB_PLATFORM=ubuntu -DDEB_DISTRO=hirsute -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release .
|
||||
- run: make -j2
|
||||
- run: make package
|
||||
- run: ./script/copy-artifacts-to-host.sh /root/project/*.deb
|
||||
- run: mkdir -p /root/debs && mv /root/project/*.deb /root/debs/
|
||||
- store_artifacts:
|
||||
path: /root/debs/
|
||||
build_ubuntu_impish:
|
||||
docker:
|
||||
- image: ubuntu:impish
|
||||
steps:
|
||||
- run: apt-get update
|
||||
- run: DEBIAN_FRONTEND="noninteractive" TZ="America/Los_Angeles" apt-get install -y git ssh sshpass build-essential clang cmake libboost-thread1.74-dev libboost-system1.74-dev libboost-filesystem1.74-dev libboost-date-time1.74-dev libboost-atomic1.74-dev libboost-chrono1.74-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libssl-dev libtag1-dev libsystemd-dev libpipewire-0.3-dev libspa-0.2-dev
|
||||
- checkout
|
||||
- run: cmake -DENABLE_PCH=true -DENABLE_PIPEWIRE=true -DGENERATE_DEB=true -DDEB_ARCHITECTURE=amd64 -DDEB_PLATFORM=ubuntu -DDEB_DISTRO=impish -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release .
|
||||
- run: make -j2
|
||||
- run: make package
|
||||
- run: ./script/copy-artifacts-to-host.sh /root/project/*.deb
|
||||
- run: mkdir -p /root/debs && mv /root/project/*.deb /root/debs/
|
||||
- store_artifacts:
|
||||
path: /root/debs/
|
||||
build_fedora_32:
|
||||
docker:
|
||||
- image: fedora:32
|
||||
steps:
|
||||
- run: dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm git openssh-clients sshpass rpm-build rpmdevtools 'dnf-command(builddep)'
|
||||
- checkout
|
||||
- run: dnf builddep -y musikcube.spec
|
||||
- run: mkdir -p /root/rpmbuild/SOURCES && spectool -g -R musikcube.spec
|
||||
- run: ./script/run-rpm-build.sh
|
||||
- run: ./script/copy-artifacts-to-host.sh /root/rpmbuild/RPMS/x86_64/*.rpm
|
||||
- run: mkdir -p /root/rpms && mv /root/rpmbuild/RPMS/x86_64/*.rpm /root/rpms/
|
||||
- store_artifacts:
|
||||
path: /root/rpms/
|
||||
build_fedora_33:
|
||||
docker:
|
||||
- image: fedora:33
|
||||
steps:
|
||||
- run: dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm git openssh-clients sshpass rpm-build rpmdevtools 'dnf-command(builddep)'
|
||||
- checkout
|
||||
- run: dnf builddep -y musikcube.spec
|
||||
- run: mkdir -p /root/rpmbuild/SOURCES && spectool -g -R musikcube.spec
|
||||
- run: ./script/run-rpm-build.sh
|
||||
- run: ./script/copy-artifacts-to-host.sh /root/rpmbuild/RPMS/x86_64/*.rpm
|
||||
- run: mkdir -p /root/rpms && mv /root/rpmbuild/RPMS/x86_64/*.rpm /root/rpms/
|
||||
- store_artifacts:
|
||||
path: /root/rpms/
|
||||
build_fedora_34:
|
||||
docker:
|
||||
- image: fedora:34
|
||||
steps:
|
||||
- run: dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm git openssh-clients sshpass rpm-build rpmdevtools 'dnf-command(builddep)'
|
||||
- checkout
|
||||
- run: dnf builddep -y musikcube.spec
|
||||
- run: mkdir -p /root/rpmbuild/SOURCES && spectool -g -R musikcube.spec
|
||||
- run: ./script/run-rpm-build.sh
|
||||
- run: ./script/copy-artifacts-to-host.sh /root/rpmbuild/RPMS/x86_64/*.rpm
|
||||
- run: mkdir -p /root/rpms && mv /root/rpmbuild/RPMS/x86_64/*.rpm /root/rpms/
|
||||
- store_artifacts:
|
||||
path: /root/rpms/
|
||||
build_fedora_35:
|
||||
docker:
|
||||
- image: fedora:35
|
||||
steps:
|
||||
- run: dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm git openssh-clients sshpass rpm-build rpmdevtools 'dnf-command(builddep)'
|
||||
- checkout
|
||||
- run: dnf builddep -y musikcube.spec
|
||||
- run: mkdir -p /root/rpmbuild/SOURCES && spectool -g -R musikcube.spec
|
||||
- run: ./script/run-rpm-build.sh
|
||||
- run: ./script/copy-artifacts-to-host.sh /root/rpmbuild/RPMS/x86_64/*.rpm
|
||||
- run: mkdir -p /root/rpms && mv /root/rpmbuild/RPMS/x86_64/*.rpm /root/rpms/
|
||||
- store_artifacts:
|
||||
path: /root/rpms/
|
||||
build_mint_una: # based on ubuntu focal
|
||||
docker:
|
||||
- image: linuxmintd/mint20.3-amd64
|
||||
steps:
|
||||
- run: apt-get update
|
||||
- run: DEBIAN_FRONTEND="noninteractive" TZ="America/Los_Angeles" apt-get install -y git ssh sshpass build-essential clang cmake libboost-thread1.71-dev libboost-system1.71-dev libboost-filesystem1.71-dev libboost-date-time1.71-dev libboost-atomic1.71-dev libboost-chrono1.71-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libssl-dev libtag1-dev libsystemd-dev
|
||||
- checkout
|
||||
- run: cmake -DENABLE_PCH=true -DGENERATE_DEB=true -DDEB_ARCHITECTURE=amd64 -DDEB_PLATFORM=mint -DDEB_DISTRO=una -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release .
|
||||
- run: make -j2
|
||||
- run: make package
|
||||
- run: ./script/copy-artifacts-to-host.sh /root/project/*.deb
|
||||
- run: mkdir -p /root/debs && mv /root/project/*.deb /root/debs/
|
||||
- store_artifacts:
|
||||
path: /root/debs/
|
||||
build_debian_buster:
|
||||
docker:
|
||||
- image: debian:buster
|
||||
steps:
|
||||
- run: apt-get update
|
||||
- run: DEBIAN_FRONTEND="noninteractive" TZ="America/Los_Angeles" apt-get install -y git ssh sshpass build-essential clang cmake libboost-thread1.67-dev libboost-system1.67-dev libboost-filesystem1.67-dev libboost-date-time1.67-dev libboost-atomic1.67-dev libboost-chrono1.67-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libssl-dev libtag1-dev libsystemd-dev
|
||||
- checkout
|
||||
- run: cmake -DGENERATE_DEB=true -DDEB_ARCHITECTURE=amd64 -DDEB_PLATFORM=debian -DDEB_DISTRO=buster -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release .
|
||||
- run: make -j2
|
||||
- run: make package
|
||||
- run: ./script/copy-artifacts-to-host.sh /root/project/*.deb
|
||||
- run: mkdir -p /root/debs && mv /root/project/*.deb /root/debs/
|
||||
- store_artifacts:
|
||||
path: /root/debs/
|
||||
build_debian_bullseye:
|
||||
docker:
|
||||
- image: debian:bullseye
|
||||
steps:
|
||||
- run: apt-get update
|
||||
- run: DEBIAN_FRONTEND="noninteractive" TZ="America/Los_Angeles" apt-get install -y git ssh sshpass build-essential clang cmake libboost-thread1.74-dev libboost-system1.74-dev libboost-filesystem1.74-dev libboost-date-time1.74-dev libboost-atomic1.74-dev libboost-chrono1.74-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libssl-dev libtag1-dev libsystemd-dev
|
||||
- checkout
|
||||
- run: cmake -DGENERATE_DEB=true -DDEB_ARCHITECTURE=amd64 -DDEB_PLATFORM=debian -DDEB_DISTRO=bullseye -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release .
|
||||
- run: make -j2
|
||||
- run: make package
|
||||
- run: ./script/copy-artifacts-to-host.sh /root/project/*.deb
|
||||
- run: mkdir -p /root/debs && mv /root/project/*.deb /root/debs/
|
||||
- store_artifacts:
|
||||
path: /root/debs/
|
||||
workflow_filters: &workflow_filters
|
||||
filters:
|
||||
branches:
|
||||
only:
|
||||
- build
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
build_and_package:
|
||||
jobs:
|
||||
- build_ubuntu_focal: *workflow_filters
|
||||
- build_ubuntu_hirsute: *workflow_filters
|
||||
- build_ubuntu_impish: *workflow_filters
|
||||
- build_fedora_32: *workflow_filters
|
||||
- build_fedora_33: *workflow_filters
|
||||
- build_fedora_34: *workflow_filters
|
||||
- build_fedora_35: *workflow_filters
|
||||
- build_mint_una: *workflow_filters
|
||||
- build_debian_buster: *workflow_filters
|
||||
- build_debian_bullseye: *workflow_filters
|
@ -1,10 +1,8 @@
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wno-unused-result -Wno-deprecated-declarations")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -g -frtti -fexceptions")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -std=c++17 -DDEBUG -g -frtti -fexceptions")
|
||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG")
|
||||
|
||||
# enable for additional memory checking with fsanitize
|
||||
# set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3 -fsanitize=address,undefined")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -frtti -fexceptions -Wno-psabi")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -std=c++17 -O2 -frtti -fexceptions -Wno-psabi")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2 -Wno-psabi")
|
||||
|
||||
add_definitions(-DHAVE_BOOST -D_FILE_OFFSET_BITS=64 -DSIGSLOT_USE_POSIX_THREADS)
|
@ -1,12 +1,6 @@
|
||||
if (${BUILD_STANDALONE} MATCHES "true")
|
||||
message(STATUS "${BoldGreen}[standalone-build] ENABLED!${ColorReset}")
|
||||
|
||||
set(BOOST_ROOT "/build/musikcube/vendor/bin")
|
||||
set(BOOST_INCLUDEDIR "${CMAKE_CURRENT_SOURCE_DIR}/vendor/bin/include")
|
||||
set(BOOST_LIBRARYDIR "${CMAKE_CURRENT_SOURCE_DIR}/vendor/bin/lib")
|
||||
set(Boost_NO_SYSTEM_PATHS ON)
|
||||
set(Boost_NO_BOOST_CMAKE ON)
|
||||
|
||||
list(
|
||||
APPEND
|
||||
VENDOR_INCLUDE_DIRECTORIES
|
||||
|
@ -2,7 +2,6 @@ if (${GENERATE_DEB} MATCHES "true" AND CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
if (${BUILD_STANDALONE} MATCHES "true")
|
||||
set(CPACK_PACKAGE_FILE_NAME "musikcube_standalone_${musikcube_VERSION}_${DEB_ARCHITECTURE}")
|
||||
else()
|
||||
set(DEB_BOOST_VERSION "1.55.0")
|
||||
set(DEB_MICROHTTPD_VERSION "10")
|
||||
set(DEB_LIBCURL_VERSION "3")
|
||||
set(DEB_AVUTIL_VERSION "55")
|
||||
@ -10,18 +9,15 @@ if (${GENERATE_DEB} MATCHES "true" AND CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
set(DEB_SWRESAMPLE_VERSION "2")
|
||||
set(DEB_NCURSES_VERSION "5")
|
||||
if (DEB_DISTRO MATCHES "buster")
|
||||
set(DEB_BOOST_VERSION "1.67.0")
|
||||
set(DEB_MICROHTTPD_VERSION "12")
|
||||
set(DEB_LIBCURL_VERSION "4")
|
||||
set(DEB_AVUTIL_VERSION "56")
|
||||
set(DEB_AVFORMAT_VERSION "58")
|
||||
set(DEB_SWRESAMPLE_VERSION "3")
|
||||
elseif (DEB_DISTRO MATCHES "bionic")
|
||||
set(DEB_BOOST_VERSION "1.65.1")
|
||||
set(DEB_MICROHTTPD_VERSION "12")
|
||||
set(DEB_LIBCURL_VERSION "4")
|
||||
elseif (DEB_DISTRO MATCHES "focal" OR DEB_DISTRO MATCHES "una")
|
||||
set(DEB_BOOST_VERSION "1.71.0")
|
||||
set(DEB_MICROHTTPD_VERSION "12")
|
||||
set(DEB_LIBCURL_VERSION "4")
|
||||
set(DEB_AVUTIL_VERSION "56")
|
||||
@ -29,7 +25,6 @@ if (${GENERATE_DEB} MATCHES "true" AND CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
set(DEB_SWRESAMPLE_VERSION "3")
|
||||
set(DEB_NCURSES_VERSION "6")
|
||||
elseif (DEB_DISTRO MATCHES "hirsute")
|
||||
set(DEB_BOOST_VERSION "1.71.0")
|
||||
set(DEB_MICROHTTPD_VERSION "12")
|
||||
set(DEB_LIBCURL_VERSION "4")
|
||||
set(DEB_AVUTIL_VERSION "56")
|
||||
@ -37,7 +32,6 @@ if (${GENERATE_DEB} MATCHES "true" AND CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
set(DEB_SWRESAMPLE_VERSION "3")
|
||||
set(DEB_NCURSES_VERSION "6")
|
||||
elseif (DEB_DISTRO MATCHES "impish" OR DEB_DISTRO MATCHES "bullseye")
|
||||
set(DEB_BOOST_VERSION "1.74.0")
|
||||
set(DEB_MICROHTTPD_VERSION "12")
|
||||
set(DEB_LIBCURL_VERSION "4")
|
||||
set(DEB_AVUTIL_VERSION "56")
|
||||
@ -46,7 +40,7 @@ if (${GENERATE_DEB} MATCHES "true" AND CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
set(DEB_NCURSES_VERSION "6")
|
||||
endif()
|
||||
|
||||
set(DEPENDENCIES "libboost-thread${DEB_BOOST_VERSION}, libboost-system${DEB_BOOST_VERSION}, libboost-chrono${DEB_BOOST_VERSION}, libboost-filesystem${DEB_BOOST_VERSION}, libboost-date-time${DEB_BOOST_VERSION}, libmicrohttpd${DEB_MICROHTTPD_VERSION}, libcurl${DEB_LIBCURL_VERSION}, libogg0, libvorbis0a, libvorbisfile3, libncursesw${DEB_NCURSES_VERSION}, libasound2, libpulse0, pulseaudio, libmp3lame0, libev4, libopenmpt0, libssl1.1")
|
||||
set(DEPENDENCIES "libmicrohttpd${DEB_MICROHTTPD_VERSION}, libcurl${DEB_LIBCURL_VERSION}, libogg0, libvorbis0a, libvorbisfile3, libncursesw${DEB_NCURSES_VERSION}, libasound2, libpulse0, pulseaudio, libmp3lame0, libev4, libopenmpt0, libssl1.1")
|
||||
set(DEPENDENCIES "${DEPENDENCIES}, libavcodec-extra, libavutil${DEB_AVUTIL_VERSION}, libavformat${DEB_AVFORMAT_VERSION}, libswresample${DEB_SWRESAMPLE_VERSION}")
|
||||
|
||||
if (${ENABLE_BUNDLED_TAGLIB} MATCHES "false")
|
||||
@ -56,7 +50,7 @@ if (${GENERATE_DEB} MATCHES "true" AND CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
set(CPACK_PACKAGE_FILE_NAME "musikcube_${musikcube_VERSION}_${DEB_PLATFORM}_${DEB_DISTRO}_${DEB_ARCHITECTURE}")
|
||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS ${DEPENDENCIES})
|
||||
|
||||
set(CPACK_RPM_PACKAGE_REQUIRES "boost, libogg, libvorbis, ffmpeg-libs, ncurses, zlib, alsa-lib, pulseaudio-libs, openssl, libcurl, libmicrohttpd, lame, libev, taglib, libopenmpt")
|
||||
set(CPACK_RPM_PACKAGE_REQUIRES "libogg, libvorbis, ffmpeg-libs, ncurses, zlib, alsa-lib, pulseaudio-libs, openssl, libcurl, libmicrohttpd, lame, libev, taglib, libopenmpt")
|
||||
endif()
|
||||
|
||||
set(CPACK_GENERATOR "DEB" "RPM")
|
||||
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -1,3 +1,6 @@
|
||||
[submodule "src/3rdparty/bin"]
|
||||
path = src/3rdparty/bin
|
||||
url = https://github.com/clangen/musikcube-bin
|
||||
[submodule "src/3rdparty/asio"]
|
||||
path = src/3rdparty/asio
|
||||
url = https://github.com/chriskohlhoff/asio/
|
||||
|
@ -1,12 +1,15 @@
|
||||
0.98.2
|
||||
0.99.0
|
||||
|
||||
* fix issue with directory scanning that may lead to incomplete indexing
|
||||
* completely removed boost as a dependency across all projects; this is a
|
||||
huge milestone in the project, and will make it much easier to distribute
|
||||
stable builds moving forward.
|
||||
* fixed issue with directory scanning that may lead to incomplete indexing
|
||||
* reverted ViewPager2 changes in `musikdroid`, as there is a bug that is
|
||||
preventing fragments from getting re-initialized properly during the resume
|
||||
cycle.
|
||||
* updated Simplified Chinese translation (@UM-Li)
|
||||
* added Czech translation (@khagaroth)
|
||||
* upgrade to c++-17 runtime
|
||||
* upgraded to c++-17 runtime
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
@ -7,8 +7,8 @@ cmake_minimum_required(VERSION 3.0)
|
||||
|
||||
project(musikcube)
|
||||
set (musikcube_VERSION_MAJOR 0)
|
||||
set (musikcube_VERSION_MINOR 98)
|
||||
set (musikcube_VERSION_PATCH 2)
|
||||
set (musikcube_VERSION_MINOR 99)
|
||||
set (musikcube_VERSION_PATCH 0)
|
||||
set (musikcube_VERSION "${musikcube_VERSION_MAJOR}.${musikcube_VERSION_MINOR}.${musikcube_VERSION_PATCH}")
|
||||
set (LIBRARY_OUTPUT_PATH ${musikcube_SOURCE_DIR}/bin/plugins)
|
||||
set (EXECUTABLE_OUTPUT_PATH ${musikcube_SOURCE_DIR}/bin)
|
||||
@ -52,14 +52,19 @@ include_directories(
|
||||
"${musikcube_SOURCE_DIR}/src/musikcore"
|
||||
"${musikcube_SOURCE_DIR}/src/musikcube"
|
||||
"${musikcube_SOURCE_DIR}/src/musikcube/cursespp"
|
||||
"${musikcube_SOURCE_DIR}/src/3rdparty/include")
|
||||
"${musikcube_SOURCE_DIR}/src/3rdparty/include"
|
||||
"${musikcube_SOURCE_DIR}/src/3rdparty/asio/asio/include")
|
||||
|
||||
link_directories("${musikcube_SOURCE_DIR}/bin/plugins")
|
||||
|
||||
find_package(Boost 1.55.0 REQUIRED system filesystem thread)
|
||||
include_directories(${Boost_INCLUDE_DIRS})
|
||||
message(STATUS "[boost] libs: " ${Boost_LIBRARIES})
|
||||
message(STATUS "[boost] includes: " ${Boost_INCLUDE_DIRS})
|
||||
# these are used to (1) disable the standalone ASIO from trying to use
|
||||
# boost, and (2) instruct websocketpp to use standalone (not boost) ASIO
|
||||
add_definitions(
|
||||
-DBOOST_DATE_TIME_NO_LIB
|
||||
-DBOOST_REGEX_NO_LIB
|
||||
-D_WEBSOCKETPP_CPP11_TYPE_TRAITS_
|
||||
-D_WEBSOCKETPP_CPP11_RANDOM_DEVICE_
|
||||
-DASIO_STANDALONE)
|
||||
|
||||
if (${BUILD_STANDALONE} MATCHES "true")
|
||||
find_vendor_library(LIBCURL curl)
|
||||
@ -73,8 +78,9 @@ else()
|
||||
endif()
|
||||
|
||||
find_library(LIBZ NAMES z)
|
||||
find_library(PTHREAD NAMES pthread)
|
||||
|
||||
set(musikcube_LINK_LIBS ${DEFAULT_OS_SYSTEM_LIBS} ${Boost_LIBRARIES} ${LIBCURL} ${LIBSSL} ${LIBCRYPTO} ${LIBZ})
|
||||
set(musikcube_LINK_LIBS ${DEFAULT_OS_SYSTEM_LIBS} ${LIBCURL} ${LIBSSL} ${LIBCRYPTO} ${LIBZ} ${PTHREAD})
|
||||
|
||||
if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB)
|
||||
if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
|
||||
@ -83,6 +89,11 @@ if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0)
|
||||
message(STATUS "[build] detected old gcc, manually adding -lstdc++fs")
|
||||
set (musikcube_LINK_LIBS ${musikcube_LINK_LIBS} stdc++fs)
|
||||
endif()
|
||||
|
||||
message(STATUS "[build] musikcube_LINK_LIBS: " ${musikcube_LINK_LIBS})
|
||||
|
||||
add_subdirectory(src/musikcore)
|
||||
|
18
README.md
18
README.md
@ -82,15 +82,15 @@ the musikcube sdk is a set of small, pure-virtual c++ classes and a handful of e
|
||||
|
||||
musikcube would not be possible without the following excellent free, open source, and (in the case of some macos and win32 APIs) non-free projects and libraries:
|
||||
|
||||
| core | decoders | outputs | metadata | networking | miscellaneous | ui |
|
||||
|-----------------------------------------------------------|-----------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------|--------------------------------------------------------------------------------|--------------------------------------------------------------------|---------------------------------------------------------------------------|
|
||||
| [boost](http://www.boost.org/) | [flac](https://xiph.org/flac/) | [alsa](https://www.alsa-project.org) | [taglib](http://taglib.org/) | [websocketpp](https://github.com/zaphoyd/websocketpp) | [rxjava](https://github.com/ReactiveX/RxJava) | [ncurses](https://www.gnu.org/software/ncurses/) |
|
||||
| [sqlite](https://www.sqlite.org/) | [ogg/vorbis](http://www.vorbis.com/) | [pulseaudio](https://www.freedesktop.org/wiki/Software/PulseAudio/) | [glide](https://github.com/bumptech/glide) | [libmicrohttpd](https://www.gnu.org/software/libmicrohttpd/) | [rxandroid](https://github.com/ReactiveX/RxAndroid) | [pdcurses (win32a variant)](https://www.projectpluto.com/win32a.htm) |
|
||||
| [utfcpp](https://github.com/nemtrif/utfcpp) | [mad](http://www.underbit.com/products/mad/) + [nomad](https://github.com/cmus/cmus/tree/master/ip) | [core audio](https://developer.apple.com/library/content/documentation/MusicAudio/Conceptual/CoreAudioOverview/Introduction/Introduction.html) | | [libcurl](https://curl.haxx.se/libcurl/) | [stetho](http://facebook.github.io/stetho/) | [recycler-fast-scroll](https://github.com/plusCubed/recycler-fast-scroll) |
|
||||
| [nlohmann json](https://github.com/nlohmann/json) | [faad2](http://www.audiocoding.com/faad2.html) | [wasapi](https://msdn.microsoft.com/en-us/library/windows/desktop/dd371455(v=vs.85).aspx) | | [libressl](https://www.libressl.org/) | [fabric](http://fabric.io) | |
|
||||
| [kissfft](http://kissfft.sourceforge.net/) | [exoplayer](https://github.com/google/ExoPlayer) | [directsound](https://msdn.microsoft.com/en-us/library/windows/desktop/ee416960(v=vs.85).aspx) | | [nv-websocket-client](https://github.com/TakahikoKawasaki/nv-websocket-client) | [AndroidVideoCache](https://github.com/danikula/AndroidVideoCache) | |
|
||||
| [sigslot](http://sigslot.sourceforge.net/) | | [waveout](https://msdn.microsoft.com/en-us/library/windows/desktop/dd743876(v=vs.85).aspx) | | [okhttp](http://square.github.io/okhttp/) | | |
|
||||
| [wcwidth.c](http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c) | | | | | | |
|
||||
| core | decoders | outputs | metadata | networking | miscellaneous | ui |
|
||||
|-----------------------------------------------------------|-----------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------|--------------------------------------------------------------------------------|--------------------------------------------------------------------|---------------------------------------------------------------------------|
|
||||
| [sqlite](https://www.sqlite.org/) | [ffmpeg](https://ffmpeg.org/) | [alsa](https://www.alsa-project.org) | [taglib](http://taglib.org/) | [websocketpp](https://github.com/zaphoyd/websocketpp) | [rxjava](https://github.com/ReactiveX/RxJava) | [ncurses](https://www.gnu.org/software/ncurses/) |
|
||||
| [utfcpp](https://github.com/nemtrif/utfcpp) | [libopenmpt](https://lib.openmpt.org/libopenmpt/) | [pulseaudio](https://www.freedesktop.org/wiki/Software/PulseAudio/) | [glide](https://github.com/bumptech/glide) | [libmicrohttpd](https://www.gnu.org/software/libmicrohttpd/) | [rxandroid](https://github.com/ReactiveX/RxAndroid) | [pdcurses (win32a variant)](https://www.projectpluto.com/win32a.htm) |
|
||||
| [nlohmann json](https://github.com/nlohmann/json) | [libgme](https://bitbucket.org/mpyne/game-music-emu/wiki/Home) | [core audio](https://developer.apple.com/library/content/documentation/MusicAudio/Conceptual/CoreAudioOverview/Introduction/Introduction.html) | | [libcurl](https://curl.haxx.se/libcurl/) | [stetho](http://facebook.github.io/stetho/) | [recycler-fast-scroll](https://github.com/plusCubed/recycler-fast-scroll) |
|
||||
| [kissfft](http://kissfft.sourceforge.net/) | [exoplayer](https://github.com/google/ExoPlayer) | [wasapi](https://msdn.microsoft.com/en-us/library/windows/desktop/dd371455(v=vs.85).aspx) | | [openssl](https://www.openssl.org/ ) | [fabric](http://fabric.io) | |
|
||||
| [sigslot](http://sigslot.sourceforge.net/) | | [directsound](https://msdn.microsoft.com/en-us/library/windows/desktop/ee416960(v=vs.85).aspx) | | [nv-websocket-client](https://github.com/TakahikoKawasaki/nv-websocket-client) | [AndroidVideoCache](https://github.com/danikula/AndroidVideoCache) | |
|
||||
| [wcwidth.c](http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c) | | [waveout](https://msdn.microsoft.com/en-us/library/windows/desktop/dd743876(v=vs.85).aspx) | | [okhttp](http://square.github.io/okhttp/) | | |
|
||||
| | | [pipewire](https://pipewire.org/) | | | | |
|
||||
|
||||
# license
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
%define name musikcube
|
||||
%define build_timestamp %{lua: print(os.date("%Y%m%d"))}
|
||||
%define version 0.98.2
|
||||
%define version 0.99.0
|
||||
Name: %{name}
|
||||
Version: %{version}
|
||||
Release: %{dist}
|
||||
@ -8,8 +8,8 @@ Summary: A cross-platform, terminal-based audio engine, library, player and serv
|
||||
Source0: https://github.com/clangen/musikcube/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
||||
License: BSD-3-Clause
|
||||
Packager: David Muckle <dvdmuckle@dvdmuckle.xyz>
|
||||
BuildRequires: gcc-c++ cmake boost-devel libogg-devel libvorbis-devel ffmpeg-devel ncurses-devel zlib-devel alsa-lib-devel pulseaudio-libs-devel openssl-devel libcurl-devel libmicrohttpd-devel lame-devel libev-devel taglib-devel systemd-devel make libopenmpt-devel
|
||||
Requires: boost libogg libvorbis ffmpeg-libs ncurses zlib alsa-lib pulseaudio-libs openssl libcurl libmicrohttpd lame libev taglib libopenmpt
|
||||
BuildRequires: gcc-c++ cmake libogg-devel libvorbis-devel ffmpeg-devel ncurses-devel zlib-devel alsa-lib-devel pulseaudio-libs-devel openssl-devel libcurl-devel libmicrohttpd-devel lame-devel libev-devel taglib-devel systemd-devel make libopenmpt-devel
|
||||
Requires: libogg libvorbis ffmpeg-libs ncurses zlib alsa-lib pulseaudio-libs openssl libcurl libmicrohttpd lame libev taglib libopenmpt
|
||||
|
||||
%description
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
# the script will create a "vendor" subdirectory in the current path, and stage
|
||||
# all final files in "vendor/lib".
|
||||
#
|
||||
# dependencies: boost, openssl, curl, libmicrohttpd, ffmpeg, lame, libopenmpt
|
||||
# dependencies: openssl, curl, libmicrohttpd, ffmpeg, lame, libopenmpt
|
||||
|
||||
# set -x
|
||||
|
||||
@ -27,8 +27,6 @@ RPATH="@rpath"
|
||||
OS=$(uname)
|
||||
ARCH=$(uname -m)
|
||||
SCRIPTDIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
BOOST_VERSION_URL_PATH="1.80.0"
|
||||
BOOST_VERSION="1_80_0"
|
||||
OPENSSL_VERSION="1.1.1q"
|
||||
CURL_VERSION="7.85.0"
|
||||
LIBMICROHTTPD_VERSION="0.9.75"
|
||||
@ -59,11 +57,10 @@ if [[ $CROSSCOMPILE == "rpi" ]]; then
|
||||
OPENSSL_CROSSCOMPILE_PREFIX="--cross-compile-prefix=arm-linux-gnueabihf-"
|
||||
GENERIC_CONFIGURE_FLAGS="--build=x86_64-pc-linux-gnu --host=arm-linux-gnueabihf --with-sysroot=${ARM_ROOT}"
|
||||
FFMPEG_CONFIGURE_FLAGS="--arch=${ARCH} --target-os=linux --cross-prefix=arm-linux-gnueabihf-"
|
||||
BOOST_TOOLSET="toolset=gcc-arm"
|
||||
PKG_CONFIG_PATH="${LIBDIR}/pkgconfig/:${ARM_ROOT}/usr/lib/arm-linux-gnueabihf/pkgconfig/"
|
||||
printf "\n\ndetected CROSSCOMPILE=${CROSSCOMPILE}\n"
|
||||
printf " CFLAGS=${CFLAGS}\n CXXFLAGS=${CXXFLAGS}\n LDFLAGS=${LDFLAGS}\n GENERIC_CONFIGURE_FLAGS=${GENERIC_CONFIGURE_FLAGS}\n"
|
||||
printf " BOOST_TOOLSET=${BOOST_TOOLSET}\n OPENSSL_TYPE=${OPENSSL_TYPE}\n OPENSSL_CROSSCOMPILE_PREFIX=${OPENSSL_CROSSCOMPILE_PREFIX}\n"
|
||||
printf " OPENSSL_TYPE=${OPENSSL_TYPE}\n OPENSSL_CROSSCOMPILE_PREFIX=${OPENSSL_CROSSCOMPILE_PREFIX}\n"
|
||||
printf " FFMPEG_CONFIGURE_FLAGS=${FFMPEG_CONFIGURE_FLAGS}\n PKG_CONFIG_PATH=${PKG_CONFIG_PATH}\n\n"
|
||||
sleep 3
|
||||
fi
|
||||
@ -92,7 +89,6 @@ function copy_or_download {
|
||||
|
||||
function fetch_packages() {
|
||||
# no trailing slash on url dirs!
|
||||
copy_or_download https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION_URL_PATH}/source boost_${BOOST_VERSION}.tar.bz2
|
||||
copy_or_download https://www.openssl.org/source openssl-${OPENSSL_VERSION}.tar.gz
|
||||
copy_or_download https://curl.se/download curl-${CURL_VERSION}.tar.gz
|
||||
copy_or_download https://ftp.gnu.org/gnu/libmicrohttpd libmicrohttpd-${LIBMICROHTTPD_VERSION}.tar.gz
|
||||
@ -101,33 +97,6 @@ function fetch_packages() {
|
||||
copy_or_download https://lib.openmpt.org/files/libopenmpt/src libopenmpt-${LIBOPENMPT_VERSION}+release.autotools.tar.gz
|
||||
}
|
||||
|
||||
#
|
||||
# boost
|
||||
#
|
||||
|
||||
function build_boost() {
|
||||
BOOST_CXX_FLAGS="-fPIC -std=c++17"
|
||||
if [[ $OS == "Darwin" ]]; then
|
||||
BOOST_CXX_FLAGS="-fPIC -std=c++17 -stdlib=libc++"
|
||||
fi
|
||||
|
||||
tar xvfj boost_${BOOST_VERSION}.tar.bz2
|
||||
cd boost_${BOOST_VERSION}
|
||||
|
||||
if [[ $CROSSCOMPILE == "rpi" ]]; then
|
||||
printf "creating ~/user-config.jam with arm compiler\n"
|
||||
echo "using gcc : arm : arm-linux-gnueabihf-g++ ;" > ~/user-config.jam
|
||||
else
|
||||
printf "removing ~/user-config.jam\n"
|
||||
rm ~/user-config.jam 2> /dev/null
|
||||
fi
|
||||
|
||||
./bootstrap.sh --with-libraries=atomic,chrono,date_time,filesystem,system,thread || exit $?
|
||||
./b2 headers || exit $?
|
||||
./b2 -d ${JOBS} -sNO_LZMA=1 -sNO_ZSTD=1 ${BOOST_TOOLSET} cxxstd=17 threading=multi link=shared cxxflags="${BOOST_CXX_FLAGS}" --prefix=${OUTDIR} install || exit $?
|
||||
cd ..
|
||||
}
|
||||
|
||||
#
|
||||
# openssl
|
||||
#
|
||||
@ -495,7 +464,6 @@ cd vendor
|
||||
|
||||
stage_prebuilt_libraries
|
||||
fetch_packages
|
||||
build_boost
|
||||
build_openssl
|
||||
build_curl
|
||||
build_libmicrohttpd
|
||||
|
@ -7,28 +7,28 @@ if [ $OS == "Linux" ]; then
|
||||
echo "detected ${DISTRO}"
|
||||
case $DISTRO in
|
||||
"impish")
|
||||
sudo apt-get install build-essential clang cmake libboost-thread1.74-dev libboost-system1.74-dev libboost-filesystem1.74-dev libboost-date-time1.74-dev libboost-atomic1.74-dev libboost-chrono1.74-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncurses-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev libspa-0.2-dev libpipewire-0.3-dev pipewire pipewire-bin pipewire-audio-client-libraries
|
||||
sudo apt-get install build-essential clang cmake libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncurses-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev libspa-0.2-dev libpipewire-0.3-dev pipewire pipewire-bin pipewire-audio-client-libraries
|
||||
;;
|
||||
"hirsute")
|
||||
sudo apt-get install build-essential clang cmake libboost-thread1.74-dev libboost-system1.71-dev libboost-filesystem1.71-dev libboost-date-time1.71-dev libboost-atomic1.71-dev libboost-chrono1.71-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncurses-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev libspa-0.2-dev libpipewire-0.3-dev pipewire pipewire-bin pipewire-audio-client-libraries
|
||||
sudo apt-get install build-essential clang cmake libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncurses-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev libspa-0.2-dev libpipewire-0.3-dev pipewire pipewire-bin pipewire-audio-client-libraries
|
||||
;;
|
||||
"focal" | "groovy" | "ulyssa")
|
||||
sudo apt-get install build-essential clang cmake libboost-thread1.71-dev libboost-system1.71-dev libboost-filesystem1.71-dev libboost-date-time1.71-dev libboost-atomic1.71-dev libboost-chrono1.71-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncurses-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev
|
||||
sudo apt-get install build-essential clang cmake libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncurses-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev
|
||||
;;
|
||||
"buster")
|
||||
sudo apt-get install build-essential clang cmake libboost-thread1.67-dev libboost-system1.67-dev libboost-filesystem1.67-dev libboost-date-time1.67-dev libboost-atomic1.67-dev libboost-chrono1.67-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev
|
||||
sudo apt-get install build-essential clang cmake libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev
|
||||
;;
|
||||
"bullseye")
|
||||
sudo apt-get install build-essential clang cmake libboost-thread1.74-dev libboost-system1.74-dev libboost-filesystem1.74-dev libboost-date-time1.74-dev libboost-atomic1.74-dev libboost-chrono1.74-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra58 libopenmpt-dev libssl-dev
|
||||
sudo apt-get install build-essential clang cmake libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra58 libopenmpt-dev libssl-dev
|
||||
;;
|
||||
"cosmic" | "disco" | "eoan")
|
||||
sudo apt-get install build-essential clang cmake libboost-thread1.67-dev libboost-system1.67-dev libboost-filesystem1.67-dev libboost-date-time1.67-dev libboost-atomic1.67-dev libboost-chrono1.67-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev
|
||||
sudo apt-get install build-essential clang cmake libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev
|
||||
;;
|
||||
"bionic")
|
||||
sudo apt-get install build-essential clang cmake libboost-thread1.65-dev libboost-system1.65-dev libboost-filesystem1.65-dev libboost-date-time1.65-dev libboost-atomic1.65-dev libboost-chrono1.65-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev
|
||||
sudo apt-get install build-essential clang cmake libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev
|
||||
;;
|
||||
"artful")
|
||||
sudo apt-get install build-essential clang cmake libboost-thread1.63-dev libboost-system1.63-dev libboost-filesystem1.63-dev libboost-date-time1.63-dev libboost-atomic1.63-dev libboost-chrono1.63-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev
|
||||
sudo apt-get install build-essential clang cmake libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libtag1-dev libsystemd-dev libavcodec-extra libopenmpt-dev libssl-dev
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
@ -37,7 +37,7 @@ if [ $OS == "Linux" ]; then
|
||||
VERSION=$(cat /etc/fedora-release | awk '{ print $3 }')
|
||||
echo "detected ${DISTRO} (version=${VERSION})"
|
||||
sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm rpm-build rpmdevtools 'dnf-command(builddep)'
|
||||
sudo dnf install gcc-c++ make cmake boost-devel libogg-devel libvorbis-devel ffmpeg-devel ncurses-devel zlib-devel alsa-lib-devel pulseaudio-libs-devel libcurl-devel libmicrohttpd-devel lame-devel libev-devel openssl-devel taglib-devel systemd-devel libopenmpt-devel
|
||||
sudo dnf install gcc-c++ make cmake libogg-devel libvorbis-devel ffmpeg-devel ncurses-devel zlib-devel alsa-lib-devel pulseaudio-libs-devel libcurl-devel libmicrohttpd-devel lame-devel libev-devel openssl-devel taglib-devel systemd-devel libopenmpt-devel
|
||||
case $VERSION in
|
||||
"34" | "35")
|
||||
sudo dnf install pipewire-devel pipewire-utils pipewire-libs
|
||||
@ -45,20 +45,20 @@ if [ $OS == "Linux" ]; then
|
||||
esac
|
||||
fi
|
||||
if [ -f "/etc/arch-release" ] || [ -f "/etc/manjaro-release" ]; then
|
||||
sudo pacman -S libogg libvorbis libmicrohttpd ffmpeg lame cmake ncurses boost pulseaudio libpulse alsa-lib curl libev taglib libopenmpt
|
||||
sudo pacman -S libogg libvorbis libmicrohttpd ffmpeg lame cmake ncurses pulseaudio libpulse alsa-lib curl libev taglib libopenmpt
|
||||
fi
|
||||
if [ -f "/etc/SUSE-brand" ]; then
|
||||
echo "detected SUSE"
|
||||
sudo zypper install libcurl-devel libmicrohttpd-devel libboost_thread1_71_0-devel libboost_system1_71_0-devel libboost_filesystem1_71_0-devel libboost_date_time1_71_0-devel libboost_atomic1_71_0-devel libboost_chrono1_71_0-devel cmake ncurses-devel libogg-devel libvorbis-devel ffmpeg-3-libavcodec-devel ffmpeg-3-libswresample-devel ffmpeg-3-libavformat-devel ffmpeg-3-libavutil-devel libmp3lame-devel pulseaudio libpulse-devel alsa-devel zlib-devel libressl-devel libev-devel libtag-devel systemd-devel libopenmpt-devel
|
||||
sudo zypper install libcurl-devel libmicrohttpd-devel cmake ncurses-devel libogg-devel libvorbis-devel ffmpeg-3-libavcodec-devel ffmpeg-3-libswresample-devel ffmpeg-3-libavformat-devel ffmpeg-3-libavutil-devel libmp3lame-devel pulseaudio libpulse-devel alsa-devel zlib-devel libressl-devel libev-devel libtag-devel systemd-devel libopenmpt-devel
|
||||
fi
|
||||
fi
|
||||
if [ $OS == "Darwin" ]; then
|
||||
echo "detected macos"
|
||||
brew install cmake boost libogg libvorbis ffmpeg libmicrohttpd lame libev taglib libopenmpt
|
||||
brew install cmake libogg libvorbis ffmpeg libmicrohttpd lame libev taglib libopenmpt
|
||||
fi
|
||||
if [ $OS == "FreeBSD" ]; then
|
||||
echo "detected freebsd"
|
||||
pkg install boost-all ncurses curl libvorbis libogg libmicrohttpd ffmpeg alsa-lib cmake sndio libev taglib bash libopenmpt
|
||||
pkg install ncurses curl libvorbis libogg libmicrohttpd ffmpeg alsa-lib cmake sndio libev taglib bash libopenmpt
|
||||
portsnap fetch
|
||||
portsnap extract
|
||||
cd /usr/ports/audio/lame
|
||||
@ -66,5 +66,5 @@ if [ $OS == "FreeBSD" ]; then
|
||||
fi
|
||||
if [ $OS == "OpenBSD" ]; then
|
||||
echo "detected openbsd"
|
||||
pkg_add git cmake ffmpeg boost sndio libev libmicrohttpd taglib libopenmpt
|
||||
pkg_add git cmake ffmpeg sndio libev libmicrohttpd taglib libopenmpt
|
||||
fi
|
||||
|
@ -22,12 +22,6 @@ if [[ "$PLATFORM" == 'Darwin' ]]; then
|
||||
cp vendor/bin/lib/libogg.0.dylib ./bin/lib
|
||||
cp vendor/bin/lib/libvorbis.0.dylib ./bin/lib
|
||||
cp vendor/bin/lib/libvorbisenc.2.dylib ./bin/lib
|
||||
cp vendor/bin/lib/libboost_atomic.dylib ./bin/lib
|
||||
cp vendor/bin/lib/libboost_chrono.dylib ./bin/lib
|
||||
cp vendor/bin/lib/libboost_date_time.dylib ./bin/lib
|
||||
cp vendor/bin/lib/libboost_filesystem.dylib ./bin/lib
|
||||
cp vendor/bin/lib/libboost_system.dylib ./bin/lib
|
||||
cp vendor/bin/lib/libboost_thread.dylib ./bin/lib
|
||||
cp vendor/bin/lib/libcrypto.1.1.dylib ./bin/lib
|
||||
cp vendor/bin/lib/libssl.1.1.dylib ./bin/lib
|
||||
cp vendor/bin/lib/libcurl.4.dylib ./bin/lib
|
||||
@ -45,12 +39,6 @@ elif [[ "$PLATFORM" == 'Linux' ]]; then
|
||||
cp vendor/bin/lib/libavformat-musikcube.so.59 ./bin/lib
|
||||
cp vendor/bin/lib/libavutil-musikcube.so.57 ./bin/lib
|
||||
cp vendor/bin/lib/libswresample-musikcube.so.4 ./bin/lib
|
||||
cp vendor/bin/lib/libboost_atomic.so.1.80.0 ./bin/lib
|
||||
cp vendor/bin/lib/libboost_chrono.so.1.80.0 ./bin/lib
|
||||
cp vendor/bin/lib/libboost_date_time.so.1.80.0 ./bin/lib
|
||||
cp vendor/bin/lib/libboost_filesystem.so.1.80.0 ./bin/lib
|
||||
cp vendor/bin/lib/libboost_system.so.1.80.0 ./bin/lib
|
||||
cp vendor/bin/lib/libboost_thread.so.1.80.0 ./bin/lib
|
||||
cp vendor/bin/lib/libcrypto.so.1.1 ./bin/lib
|
||||
cp vendor/bin/lib/libssl.so.1.1 ./bin/lib
|
||||
cp vendor/bin/lib/libcurl.so.4 ./bin/lib
|
||||
|
4
src/3rdparty/3rdparty.vcproj
vendored
4
src/3rdparty/3rdparty.vcproj
vendored
@ -149,10 +149,6 @@
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<Filter
|
||||
Name="boost"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="sqlite"
|
||||
>
|
||||
|
1
src/3rdparty/asio
vendored
Submodule
1
src/3rdparty/asio
vendored
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 147f7225a96d45a2807a64e443177f621844e51c
|
@ -272,8 +272,8 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -288,7 +288,7 @@
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -313,8 +313,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -330,7 +330,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/debug;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/debug;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -355,8 +355,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Con|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -372,7 +372,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -397,8 +397,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
@ -412,7 +412,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -436,8 +436,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
@ -452,7 +452,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/debug;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/debug;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -476,8 +476,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Con|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
@ -492,7 +492,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -515,8 +515,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -534,7 +534,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -562,8 +562,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -582,7 +582,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -610,8 +610,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Con|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -630,7 +630,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -658,8 +658,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -677,7 +677,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -704,8 +704,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -724,7 +724,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -751,8 +751,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Con|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -771,7 +771,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
|
@ -46,12 +46,6 @@
|
||||
#include <musikcore/library/LocalMetadataProxy.h>
|
||||
#include <musikcore/support/PreferenceKeys.h>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/locale.hpp>
|
||||
#include <boost/filesystem/detail/utf8_codecvt_facet.hpp>
|
||||
#include <boost/filesystem.hpp>
|
||||
#pragma warning(pop)
|
||||
|
||||
#include <thread>
|
||||
|
||||
using namespace musik;
|
||||
@ -143,9 +137,6 @@ mcsdk_export void mcsdk_env_init() {
|
||||
std::unique_lock<std::recursive_mutex> lock(global_mutex);
|
||||
|
||||
if (!environment_initialized) {
|
||||
std::locale locale = std::locale();
|
||||
std::locale utf8Locale(locale, new boost::filesystem::detail::utf8_codecvt_facet);
|
||||
boost::filesystem::path::imbue(utf8Locale);
|
||||
debug::Start();
|
||||
message_queue = new mcsdk_context_message_queue();
|
||||
message_queue_thread = std::thread([]{ /* needs to be last */
|
||||
|
@ -39,10 +39,6 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/filesystem.hpp>
|
||||
#pragma warning(pop)
|
||||
|
||||
#include <musikcore/support/NarrowCast.h>
|
||||
#include <musikcore/support/DeleteDefaults.h>
|
||||
|
||||
|
@ -34,13 +34,11 @@
|
||||
|
||||
#include "pch.hpp"
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/filesystem.hpp>
|
||||
#pragma warning(pop)
|
||||
|
||||
#include <musikcore/support/PreferenceKeys.h>
|
||||
#include <musikcore/support/Common.h>
|
||||
|
||||
#include <filesystem>
|
||||
|
||||
#include "Locale.h"
|
||||
|
||||
#define KEY_STRINGS "strings"
|
||||
@ -50,7 +48,6 @@
|
||||
using namespace musik::core::i18n;
|
||||
using namespace musik::core;
|
||||
using namespace musik::core::prefs;
|
||||
using namespace boost::filesystem;
|
||||
|
||||
static nlohmann::json empty;
|
||||
|
||||
@ -83,18 +80,19 @@ Locale::~Locale() {
|
||||
}
|
||||
|
||||
void Locale::Initialize(const std::string& localePath) {
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
this->locales.clear();
|
||||
this->localePath = localePath;
|
||||
|
||||
path locales(localePath);
|
||||
fs::path locales(fs::u8path(localePath));
|
||||
|
||||
if (exists(locales)) {
|
||||
directory_iterator end;
|
||||
for (directory_iterator file(locales); file != end; file++) {
|
||||
const path& p = file->path();
|
||||
|
||||
if (p.has_extension() && p.extension().string() == ".json") {
|
||||
std::string fn = p.filename().string();
|
||||
if (fs::exists(locales)) {
|
||||
fs::directory_iterator end;
|
||||
for (fs::directory_iterator it(locales); it != end; it++) {
|
||||
const fs::path& p = it->path();
|
||||
if (p.has_extension() && p.extension().u8string() == ".json") {
|
||||
std::string fn = p.filename().u8string();
|
||||
fn = fn.substr(0, fn.rfind("."));
|
||||
this->locales.push_back(fn);
|
||||
}
|
||||
|
@ -41,6 +41,7 @@
|
||||
#include <musikcore/config.h>
|
||||
#include <cstdio>
|
||||
#include <iostream>
|
||||
#include <filesystem>
|
||||
|
||||
static const std::string TAG = "LocalFileStream";
|
||||
|
||||
@ -70,21 +71,21 @@ bool LocalFileStream::Open(const char *filename, OpenFlags flags) {
|
||||
this->uri = filename;
|
||||
debug::info(TAG, "opening file: " + std::string(filename));
|
||||
|
||||
boost::filesystem::path file(filename);
|
||||
const bool exists = boost::filesystem::exists(file);
|
||||
std::filesystem::path file(std::filesystem::u8path(filename));
|
||||
const bool exists = std::filesystem::exists(file);
|
||||
|
||||
if (flags & OpenFlags::Read && !exists) {
|
||||
debug::error(TAG, "open with OpenFlags::Read failed because file doesn't exist. " + this->uri);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (exists && !boost::filesystem::is_regular(file)) {
|
||||
if (exists && !std::filesystem::is_regular_file(file)) {
|
||||
debug::error(TAG, "not a regular file" + this->uri);
|
||||
return false;
|
||||
}
|
||||
|
||||
boost::system::error_code ec;
|
||||
this->filesize = narrow_cast<long>(boost::filesystem::file_size(file, ec));
|
||||
std::error_code ec;
|
||||
this->filesize = narrow_cast<long>(std::filesystem::file_size(file, ec));
|
||||
|
||||
if (ec && flags & OpenFlags::Write) {
|
||||
this->filesize = 0;
|
||||
@ -106,7 +107,7 @@ bool LocalFileStream::Open(const char *filename, OpenFlags flags) {
|
||||
}
|
||||
}
|
||||
|
||||
this->extension = file.extension().string();
|
||||
this->extension = file.extension().u8string();
|
||||
#ifdef WIN32
|
||||
std::wstring u16fn = u8to16(this->uri);
|
||||
std::wstring u16flags = u8to16(openFlags);
|
||||
|
@ -53,13 +53,12 @@
|
||||
#include <musikcore/sdk/IAnalyzer.h>
|
||||
#include <musikcore/sdk/IIndexerSource.h>
|
||||
#include <musikcore/audio/Stream.h>
|
||||
#include <musikcore/support/ThreadGroup.h>
|
||||
|
||||
#include <filesystem>
|
||||
#include <algorithm>
|
||||
#include <atomic>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/bind.hpp>
|
||||
#pragma warning(pop)
|
||||
#include <functional>
|
||||
|
||||
#define STRESS_TEST_DB 0
|
||||
|
||||
@ -73,6 +72,10 @@ constexpr int DEFAULT_MAX_THREADS = 2;
|
||||
constexpr int DEFAULT_MAX_THREADS = 4;
|
||||
#endif
|
||||
|
||||
namespace std {
|
||||
namespace fs = std::filesystem;
|
||||
}
|
||||
|
||||
using namespace musik::core;
|
||||
using namespace musik::core::sdk;
|
||||
using namespace musik::core::audio;
|
||||
@ -80,7 +83,7 @@ using namespace musik::core::library;
|
||||
using namespace musik::core::db;
|
||||
using namespace musik::core::library::query;
|
||||
|
||||
using Thread = std::unique_ptr<boost::thread>;
|
||||
using Thread = std::unique_ptr<std::thread>;
|
||||
|
||||
using TagReaderDestroyer = PluginFactory::ReleaseDeleter<ITagReader>;
|
||||
using DecoderDeleter = PluginFactory::ReleaseDeleter<IDecoderFactory>;
|
||||
@ -105,7 +108,7 @@ static void closeLogFile() noexcept {
|
||||
}
|
||||
|
||||
static std::string normalizePath(const std::string& path) {
|
||||
return boost::filesystem::path(path).make_preferred().string();
|
||||
return std::fs::path(std::fs::u8path(path)).make_preferred().u8string();
|
||||
}
|
||||
|
||||
Indexer::Indexer(const std::string& libraryPath, const std::string& dbFilename)
|
||||
@ -146,7 +149,7 @@ Indexer::~Indexer() {
|
||||
void Indexer::Shutdown() {
|
||||
if (this->thread) {
|
||||
{
|
||||
boost::mutex::scoped_lock lock(this->stateMutex);
|
||||
std::unique_lock<decltype(this->stateMutex)> lock(this->stateMutex);
|
||||
|
||||
this->syncQueue.clear();
|
||||
this->state = StateStopping;
|
||||
@ -167,7 +170,7 @@ void Indexer::Schedule(SyncType type) {
|
||||
}
|
||||
|
||||
void Indexer::Schedule(SyncType type, IIndexerSource* source) {
|
||||
boost::mutex::scoped_lock lock(this->stateMutex);
|
||||
std::unique_lock<decltype(this->stateMutex)> lock(this->stateMutex);
|
||||
|
||||
if (!this->thread) {
|
||||
this->state = StateIdle;
|
||||
@ -195,7 +198,7 @@ void Indexer::AddPath(const std::string& path) {
|
||||
context.path = NormalizeDir(path);
|
||||
|
||||
{
|
||||
boost::mutex::scoped_lock lock(this->stateMutex);
|
||||
std::unique_lock<decltype(this->stateMutex)> lock(this->stateMutex);
|
||||
|
||||
if (std::find(this->paths.begin(), this->paths.end(), path) == this->paths.end()) {
|
||||
this->paths.push_back(path);
|
||||
@ -211,7 +214,7 @@ void Indexer::RemovePath(const std::string& path) {
|
||||
context.path = NormalizeDir(path);
|
||||
|
||||
{
|
||||
boost::mutex::scoped_lock lock(this->stateMutex);
|
||||
std::unique_lock<decltype(this->stateMutex)> lock(this->stateMutex);
|
||||
|
||||
auto it = std::find(this->paths.begin(), this->paths.end(), path);
|
||||
if (it != this->paths.end()) {
|
||||
@ -222,7 +225,7 @@ void Indexer::RemovePath(const std::string& path) {
|
||||
}
|
||||
}
|
||||
|
||||
void Indexer::Synchronize(const SyncContext& context, boost::asio::io_service* io) {
|
||||
void Indexer::Synchronize(const SyncContext& context, asio::io_service* io) {
|
||||
LocalLibrary::CreateIndexes(this->dbConnection);
|
||||
|
||||
IndexerTrack::OnIndexerStarted(this->dbConnection);
|
||||
@ -264,9 +267,9 @@ void Indexer::Synchronize(const SyncContext& context, boost::asio::io_service* i
|
||||
try {
|
||||
const int64_t id = stmt.ColumnInt64(0);
|
||||
std::string path = stmt.ColumnText(1);
|
||||
boost::filesystem::path dir(path);
|
||||
std::fs::path dir(std::fs::u8path(path));
|
||||
|
||||
if (boost::filesystem::exists(dir)) {
|
||||
if (std::fs::exists(dir)) {
|
||||
paths.push_back(path);
|
||||
pathIds.push_back(id);
|
||||
}
|
||||
@ -351,8 +354,8 @@ void Indexer::FinalizeSync(const SyncContext& context) {
|
||||
}
|
||||
|
||||
void Indexer::ReadMetadataFromFile(
|
||||
boost::asio::io_service* io,
|
||||
const boost::filesystem::path& file,
|
||||
asio::io_service* io,
|
||||
const std::fs::path& file,
|
||||
const std::string& pathId)
|
||||
{
|
||||
/* we do this here because work may have already been queued before the abort
|
||||
@ -365,7 +368,7 @@ void Indexer::ReadMetadataFromFile(
|
||||
return;
|
||||
}
|
||||
|
||||
#define APPEND_LOG(x) if (logFile) { fprintf(logFile, " - [%s] %s\n", x, file.string().c_str()); }
|
||||
#define APPEND_LOG(x) if (logFile) { fprintf(logFile, " - [%s] %s\n", x, file.u8string().c_str()); }
|
||||
|
||||
musik::core::IndexerTrack track(0);
|
||||
|
||||
@ -385,7 +388,7 @@ void Indexer::ReadMetadataFromFile(
|
||||
try {
|
||||
if ((*it)->CanRead(track.GetString("extension").c_str())) {
|
||||
APPEND_LOG("can read")
|
||||
if ((*it)->Read(file.string().c_str(), &store)) {
|
||||
if ((*it)->Read(file.u8string().c_str(), &store)) {
|
||||
APPEND_LOG("did read")
|
||||
saveToDb = true;
|
||||
break;
|
||||
@ -454,22 +457,21 @@ inline void Indexer::IncrementTracksScanned(int delta) {
|
||||
}
|
||||
|
||||
void Indexer::SyncDirectory(
|
||||
boost::asio::io_service* io,
|
||||
asio::io_service* io,
|
||||
const std::string &syncRoot,
|
||||
const std::string ¤tPath,
|
||||
int64_t pathId)
|
||||
{
|
||||
std::string normalizedSyncRoot = NormalizeDir(syncRoot);
|
||||
std::string normalizedCurrentPath = NormalizeDir(currentPath);
|
||||
std::string leaf = boost::filesystem::path(currentPath).leaf().string(); /* trailing subdir in currentPath */
|
||||
|
||||
/* start recursive filesystem scan */
|
||||
|
||||
try {
|
||||
/* for each file in the current path... */
|
||||
boost::filesystem::path path(currentPath);
|
||||
boost::filesystem::directory_iterator end;
|
||||
boost::filesystem::directory_iterator file(path);
|
||||
std::fs::path path(std::fs::u8path(currentPath));
|
||||
std::fs::directory_iterator end;
|
||||
std::fs::directory_iterator file(path);
|
||||
|
||||
std::string pathIdStr = std::to_string(pathId);
|
||||
std::vector<Thread> threads;
|
||||
@ -480,16 +482,15 @@ void Indexer::SyncDirectory(
|
||||
}
|
||||
if (is_directory(file->status())) {
|
||||
/* recursion here */
|
||||
/* musik::debug::info(TAG, "scanning subdirectory " + file->path().string()); */
|
||||
this->SyncDirectory(io, syncRoot, file->path().string(), pathId);
|
||||
this->SyncDirectory(io, syncRoot, file->path().u8string(), pathId);
|
||||
}
|
||||
else {
|
||||
try {
|
||||
std::string extension = file->path().extension().string();
|
||||
std::string extension = file->path().extension().u8string();
|
||||
for (auto it : this->tagReaders) {
|
||||
if (it->CanRead(extension.c_str())) {
|
||||
if (io) {
|
||||
io->post(boost::bind(
|
||||
io->post(std::bind(
|
||||
&Indexer::ReadMetadataFromFile,
|
||||
this,
|
||||
io,
|
||||
@ -504,13 +505,13 @@ void Indexer::SyncDirectory(
|
||||
}
|
||||
}
|
||||
catch (...) {
|
||||
/* boost::filesystem may throw trying to stat the file */
|
||||
/* std::filesystem may throw trying to stat the file */
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(...) {
|
||||
/* boost::filesystem may throw trying to open the directory */
|
||||
/* std::filesystem may throw trying to open the directory */
|
||||
}
|
||||
}
|
||||
|
||||
@ -592,16 +593,16 @@ ScanResult Indexer::SyncSource(
|
||||
}
|
||||
|
||||
void Indexer::ThreadLoop() {
|
||||
boost::filesystem::path thumbPath(this->libraryPath + "thumbs/");
|
||||
std::fs::path thumbPath(std::fs::u8path(this->libraryPath + "thumbs/"));
|
||||
|
||||
if (!boost::filesystem::exists(thumbPath)) {
|
||||
boost::filesystem::create_directories(thumbPath);
|
||||
if (!std::fs::exists(thumbPath)) {
|
||||
std::fs::create_directories(thumbPath);
|
||||
}
|
||||
|
||||
while (true) {
|
||||
/* wait for some work. */
|
||||
{
|
||||
boost::mutex::scoped_lock lock(this->stateMutex);
|
||||
std::unique_lock<decltype(this->stateMutex)> lock(this->stateMutex);
|
||||
while (!this->Bail() && this->syncQueue.size() == 0) {
|
||||
this->state = StateIdle;
|
||||
this->waitCondition.wait(lock);
|
||||
@ -625,13 +626,15 @@ void Indexer::ThreadLoop() {
|
||||
prefs::keys::IndexerThreadCount, DEFAULT_MAX_THREADS);
|
||||
|
||||
if (threadCount > 1) {
|
||||
boost::asio::io_service io;
|
||||
boost::thread_group threadPool;
|
||||
boost::asio::io_service::work work(io);
|
||||
asio::io_service io;
|
||||
asio::io_service::work work(io);
|
||||
ThreadGroup threadGroup;
|
||||
|
||||
/* initialize the thread pool -- we'll use this to index tracks in parallel. */
|
||||
for (int i = 0; i < threadCount; i++) {
|
||||
threadPool.create_thread(boost::bind(&boost::asio::io_service::run, &io));
|
||||
threadGroup.create_thread([&io]() {
|
||||
io.run();
|
||||
});
|
||||
}
|
||||
|
||||
this->Synchronize(context, &io);
|
||||
@ -644,7 +647,8 @@ void Indexer::ThreadLoop() {
|
||||
io.stop();
|
||||
}
|
||||
});
|
||||
threadPool.join_all();
|
||||
|
||||
threadGroup.join_all();
|
||||
}
|
||||
else {
|
||||
this->Synchronize(context, nullptr);
|
||||
@ -686,8 +690,8 @@ void Indexer::SyncDelete() {
|
||||
std::string fn = allTracks.ColumnText(1);
|
||||
|
||||
try {
|
||||
boost::filesystem::path file(fn);
|
||||
if (!boost::filesystem::exists(file)) {
|
||||
std::fs::path file(std::fs::u8path(fn));
|
||||
if (!std::fs::exists(file)) {
|
||||
remove = true;
|
||||
}
|
||||
}
|
||||
@ -797,7 +801,7 @@ void Indexer::SyncPlaylistTracksOrder() {
|
||||
}
|
||||
|
||||
void Indexer::GetPaths(std::vector<std::string>& paths) {
|
||||
boost::mutex::scoped_lock lock(this->stateMutex);
|
||||
std::unique_lock<decltype(this->stateMutex)> lock(this->stateMutex);
|
||||
std::copy(this->paths.begin(), this->paths.end(), std::back_inserter(paths));
|
||||
}
|
||||
|
||||
@ -846,7 +850,7 @@ static int optimize(
|
||||
++count;
|
||||
}
|
||||
|
||||
boost::thread::yield();
|
||||
std::this_thread::yield();
|
||||
|
||||
return count;
|
||||
}
|
||||
@ -860,8 +864,7 @@ void Indexer::SyncOptimize() {
|
||||
}
|
||||
|
||||
void Indexer::ProcessAddRemoveQueue() {
|
||||
boost::mutex::scoped_lock lock(this->stateMutex);
|
||||
|
||||
std::unique_lock<decltype(this->stateMutex)> lock(this->stateMutex);
|
||||
while (!this->addRemoveQueue.empty()) {
|
||||
AddRemoveContext context = this->addRemoveQueue.front();
|
||||
|
||||
|
@ -41,18 +41,16 @@
|
||||
#include <musikcore/sdk/IIndexerNotifier.h>
|
||||
#include <musikcore/library/IIndexer.h>
|
||||
#include <musikcore/support/Preferences.h>
|
||||
|
||||
#include <musikcore/support/ThreadGroup.h>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <sigslot/sigslot.h>
|
||||
|
||||
#include <boost/thread/thread.hpp>
|
||||
#include <boost/thread/condition.hpp>
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/asio/io_service.hpp>
|
||||
#include <asio/io_service.hpp>
|
||||
#pragma warning(pop)
|
||||
|
||||
#include <filesystem>
|
||||
#include <thread>
|
||||
#include <condition_variable>
|
||||
#include <deque>
|
||||
#include <vector>
|
||||
#include <atomic>
|
||||
@ -124,7 +122,7 @@ namespace musik { namespace core {
|
||||
|
||||
void ThreadLoop();
|
||||
|
||||
void Synchronize(const SyncContext& context, boost::asio::io_service* io);
|
||||
void Synchronize(const SyncContext& context, asio::io_service* io);
|
||||
|
||||
void FinalizeSync(const SyncContext& context);
|
||||
|
||||
@ -147,14 +145,14 @@ namespace musik { namespace core {
|
||||
void IncrementTracksScanned(int delta = 1);
|
||||
|
||||
void SyncDirectory(
|
||||
boost::asio::io_service* io,
|
||||
asio::io_service* io,
|
||||
const std::string& syncRoot,
|
||||
const std::string& currentPath,
|
||||
int64_t pathId);
|
||||
|
||||
void ReadMetadataFromFile(
|
||||
boost::asio::io_service* io,
|
||||
const boost::filesystem::path& path,
|
||||
asio::io_service* io,
|
||||
const std::filesystem::path& path,
|
||||
const std::string& pathId);
|
||||
|
||||
bool Bail() noexcept;
|
||||
@ -163,8 +161,8 @@ namespace musik { namespace core {
|
||||
std::string libraryPath;
|
||||
std::string dbFilename;
|
||||
std::atomic<State> state;
|
||||
boost::mutex stateMutex;
|
||||
boost::condition waitCondition;
|
||||
std::mutex stateMutex;
|
||||
std::condition_variable_any waitCondition;
|
||||
std::unique_ptr<std::thread> thread;
|
||||
std::atomic<int> incrementalUrisScanned, totalUrisScanned;
|
||||
std::deque<AddRemoveContext> addRemoveQueue;
|
||||
|
@ -42,11 +42,15 @@
|
||||
#include <musikcore/library/Indexer.h>
|
||||
#include <musikcore/runtime/Message.h>
|
||||
#include <musikcore/debug.h>
|
||||
|
||||
#include <limits>
|
||||
#include <filesystem>
|
||||
|
||||
static const std::string TAG = "LocalLibrary";
|
||||
static bool scheduleSyncDueToDbUpgrade = false;
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
using namespace musik::core;
|
||||
using namespace musik::core::library;
|
||||
using namespace musik::core::runtime;
|
||||
@ -167,12 +171,12 @@ std::string LocalLibrary::GetLibraryDirectory() {
|
||||
directory.append(this->identifier + "/" );
|
||||
}
|
||||
|
||||
boost::filesystem::path dir(directory);
|
||||
if(!boost::filesystem::exists(dir)){
|
||||
boost::filesystem::create_directories(dir);
|
||||
fs::path dir(fs::u8path(directory));
|
||||
if(!fs::exists(dir)){
|
||||
fs::create_directories(dir);
|
||||
}
|
||||
|
||||
directory = dir.string();
|
||||
directory = dir.u8string();
|
||||
|
||||
return directory;
|
||||
}
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include "CategoryListQuery.h"
|
||||
#include <musikcore/library/LocalLibraryConstants.h>
|
||||
#include <musikcore/library/query/util/Serialization.h>
|
||||
#include <musikcore/sdk/String.h>
|
||||
#include <musikcore/db/Statement.h>
|
||||
#include <musikcore/i18n/Locale.h>
|
||||
#include <musikcore/utfutil.h>
|
||||
@ -43,6 +44,7 @@
|
||||
using musik::core::db::Statement;
|
||||
using musik::core::db::Row;
|
||||
|
||||
using namespace musik::core::sdk;
|
||||
using namespace musik::core::db;
|
||||
using namespace musik::core::library::constants;
|
||||
using namespace musik::core::library::query;
|
||||
@ -208,7 +210,7 @@ void CategoryListQuery::ProcessResult(musik::core::db::Statement &stmt) {
|
||||
SdkValueList unknowns;
|
||||
while (stmt.Step() == Row) {
|
||||
int64_t id = stmt.ColumnInt64(0);
|
||||
std::string displayValue = musik::core::Trim(stmt.ColumnText(1));
|
||||
std::string displayValue = str::Trim(stmt.ColumnText(1));
|
||||
|
||||
/* we track empty / blank values separately, then sort them to the bottom
|
||||
of the returned list so they don't pollute the first results */
|
||||
|
@ -40,12 +40,7 @@
|
||||
#include <musikcore/library/track/LibraryTrack.h>
|
||||
#include <musikcore/library/LocalLibraryConstants.h>
|
||||
#include <musikcore/library/query/util/Serialization.h>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <boost/algorithm/string/case_conv.hpp>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#pragma warning(pop)
|
||||
#include <musikcore/sdk/String.h>
|
||||
|
||||
using musik::core::db::Statement;
|
||||
using musik::core::db::Row;
|
||||
@ -57,7 +52,6 @@ using namespace musik::core::db;
|
||||
using namespace musik::core::library::query;
|
||||
using namespace musik::core::library::query::serialization;
|
||||
using namespace musik::core::library::constants;
|
||||
using namespace boost::algorithm;
|
||||
|
||||
const std::string CategoryTrackListQuery::kQueryName = "CategoryTrackListQuery";
|
||||
|
||||
@ -154,7 +148,7 @@ void CategoryTrackListQuery::RegularQuery(musik::core::db::Connection &db) {
|
||||
std::string limitAndOffset = this->GetLimitAndOffset();
|
||||
|
||||
if (this->filter.size()) {
|
||||
trackFilterValue = "%" + trim_copy(to_lower_copy(filter)) + "%";
|
||||
trackFilterValue = "%" + sdk::str::Trim(sdk::str::ToLowerCopy(filter)) + "%";
|
||||
trackFilterClause = category::CATEGORY_TRACKLIST_FILTER;
|
||||
args.push_back(category::StringArgument(trackFilterValue));
|
||||
args.push_back(category::StringArgument(trackFilterValue));
|
||||
|
@ -39,13 +39,12 @@
|
||||
#include <musikcore/library/track/LibraryTrack.h>
|
||||
#include <musikcore/library/query/util/Serialization.h>
|
||||
#include <musikcore/library/LocalLibraryConstants.h>
|
||||
#include <musikcore/sdk/String.h>
|
||||
#include <musikcore/db/Statement.h>
|
||||
#include <musikcore/sdk/String.h>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
#include <boost/algorithm/string/case_conv.hpp>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#pragma warning(pop)
|
||||
|
||||
using musik::core::db::Statement;
|
||||
@ -54,11 +53,12 @@ using musik::core::TrackPtr;
|
||||
using musik::core::LibraryTrack;
|
||||
using musik::core::ILibraryPtr;
|
||||
|
||||
using namespace musik::core;
|
||||
using namespace musik::core::sdk;
|
||||
using namespace musik::core::db;
|
||||
using namespace musik::core::library::constants;
|
||||
using namespace musik::core::library::query;
|
||||
using namespace musik::core::library::query::serialization;
|
||||
using namespace boost::algorithm;
|
||||
|
||||
const std::string SearchTrackListQuery::kQueryName = "SearchTrackListQuery";
|
||||
|
||||
@ -129,7 +129,7 @@ bool SearchTrackListQuery::OnRun(Connection& db) {
|
||||
" AND tracks.album_id=al.id AND tracks.visual_genre_id=gn.id AND tracks.visual_artist_id=ar.id "
|
||||
"ORDER BY " + this->orderBy + " ";
|
||||
|
||||
ReplaceAll(query, "{{match_type}}", useRegex ? "REGEXP" : "LIKE");
|
||||
str::ReplaceAll(query, "{{match_type}}", useRegex ? "REGEXP" : "LIKE");
|
||||
}
|
||||
else {
|
||||
query =
|
||||
@ -148,7 +148,7 @@ bool SearchTrackListQuery::OnRun(Connection& db) {
|
||||
|
||||
if (hasFilter) {
|
||||
std::string patternToMatch = useRegex
|
||||
? filter : "%" + trim_copy(to_lower_copy(filter)) + "%";
|
||||
? filter : "%" + sdk::str::Trim(sdk::str::ToLowerCopy(filter)) + "%";
|
||||
|
||||
trackQuery.BindText(0, patternToMatch);
|
||||
trackQuery.BindText(1, patternToMatch);
|
||||
|
@ -38,6 +38,8 @@
|
||||
#include <musikcore/library/query/util/Serialization.h>
|
||||
#include <musikcore/library/track/LibraryTrack.h>
|
||||
#include <musikcore/library/query/util/TrackQueryFragments.h>
|
||||
#include <musikcore/sdk/String.h>
|
||||
|
||||
#include <musikcore/sdk/ReplayGain.h>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
@ -45,6 +47,7 @@
|
||||
#pragma warning(pop)
|
||||
|
||||
using namespace musik::core;
|
||||
using namespace musik::core::sdk;
|
||||
using namespace musik::core::db;
|
||||
using namespace musik::core::library;
|
||||
using namespace musik::core::library::query;
|
||||
@ -70,7 +73,7 @@ bool TrackMetadataBatchQuery::OnRun(Connection& db) {
|
||||
}
|
||||
|
||||
std::string query = tracks::kAllMetadataQueryByIdBatch;
|
||||
ReplaceAll(query, "{{ids}}", idList);
|
||||
str::ReplaceAll(query, "{{ids}}", idList.c_str());
|
||||
|
||||
Statement trackQuery(query.c_str(), db);
|
||||
|
||||
|
@ -45,10 +45,13 @@
|
||||
#include <musikcore/io/DataStreamFactory.h>
|
||||
|
||||
#include <unordered_map>
|
||||
#include <chrono>
|
||||
|
||||
using namespace musik::core;
|
||||
using namespace musik::core::sdk;
|
||||
|
||||
using namespace std::chrono;
|
||||
|
||||
#define GENRE_TRACK_COLUMN_NAME "genre"
|
||||
#define GENRES_TABLE_NAME "genres"
|
||||
#define GENRE_TRACK_JUNCTION_TABLE_NAME "track_genres"
|
||||
@ -255,20 +258,21 @@ int64_t IndexerTrack::GetId() {
|
||||
}
|
||||
|
||||
bool IndexerTrack::NeedsToBeIndexed(
|
||||
const boost::filesystem::path &file,
|
||||
const std::filesystem::path &file,
|
||||
db::Connection &dbConnection)
|
||||
{
|
||||
try {
|
||||
this->SetValue("path", file.string().c_str());
|
||||
this->SetValue("filename", file.string().c_str());
|
||||
this->SetValue("path", file.u8string().c_str());
|
||||
this->SetValue("filename", file.u8string().c_str());
|
||||
|
||||
size_t lastDot = file.leaf().string().find_last_of(".");
|
||||
size_t lastDot = file.filename().u8string().find_last_of(".");
|
||||
if (lastDot != std::string::npos) {
|
||||
this->SetValue("extension", file.leaf().string().substr(lastDot + 1).c_str());
|
||||
this->SetValue("extension", file.filename().u8string().substr(lastDot + 1).c_str());
|
||||
}
|
||||
|
||||
const size_t fileSize = (size_t) boost::filesystem::file_size(file);
|
||||
const size_t fileTime = (size_t) boost::filesystem::last_write_time(file);
|
||||
const size_t fileSize = (size_t) std::filesystem::file_size(file);
|
||||
const size_t fileTime = (size_t)duration_cast<milliseconds>(
|
||||
std::filesystem::last_write_time(file).time_since_epoch()).count();
|
||||
|
||||
this->SetValue("filesize", std::to_string(fileSize).c_str());
|
||||
this->SetValue("filetime", std::to_string(fileTime).c_str());
|
||||
@ -757,7 +761,7 @@ int64_t IndexerTrack::SaveArtist(db::Connection& dbConnection) {
|
||||
void IndexerTrack::SaveDirectory(db::Connection& db, const std::string& filename) {
|
||||
try {
|
||||
std::string dir = NormalizeDir(
|
||||
boost::filesystem::path(filename).parent_path().string());
|
||||
std::filesystem::path(std::filesystem::u8path(filename)).parent_path().u8string());
|
||||
|
||||
int64_t dirId = -1;
|
||||
if (metadataIdCache.find("directoryId-" + dir) != metadataIdCache.end()) {
|
||||
|
@ -38,6 +38,8 @@
|
||||
#include <musikcore/library/track/Track.h>
|
||||
#include <musikcore/library/LocalLibrary.h>
|
||||
|
||||
#include <filesystem>
|
||||
|
||||
namespace musik { namespace core {
|
||||
|
||||
class IndexerTrack: public Track {
|
||||
@ -72,7 +74,7 @@ namespace musik { namespace core {
|
||||
void SetMetadataState(musik::core::sdk::MetadataState state) override;
|
||||
|
||||
bool NeedsToBeIndexed(
|
||||
const boost::filesystem::path &file,
|
||||
const std::filesystem::path &file,
|
||||
db::Connection &dbConnection);
|
||||
|
||||
bool Save(
|
||||
|
@ -247,8 +247,8 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../3rdparty/asio/asio/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -268,8 +268,8 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../3rdparty/asio/asio/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -287,14 +287,14 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libcurl.lib;libssl-1_1.lib;libcrypto-1_1.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Con|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../3rdparty/asio/asio/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -314,8 +314,8 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../3rdparty/asio/asio/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
@ -334,8 +334,8 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../3rdparty/asio/asio/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
@ -352,14 +352,14 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libcurl.lib;libssl-1_1-x64.lib;libcrypto-1_1-x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Con|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../3rdparty/asio/asio/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
@ -381,8 +381,8 @@
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../3rdparty/asio/asio/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.hpp</PrecompiledHeaderFile>
|
||||
@ -403,8 +403,8 @@
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../3rdparty/asio/asio/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.hpp</PrecompiledHeaderFile>
|
||||
@ -420,7 +420,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libcurl.lib;libssl-1_1.lib;libcrypto-1_1.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Con|Win32'">
|
||||
@ -429,8 +429,8 @@
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../3rdparty/asio/asio/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.hpp</PrecompiledHeaderFile>
|
||||
@ -451,8 +451,8 @@
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../3rdparty/asio/asio/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.hpp</PrecompiledHeaderFile>
|
||||
@ -473,8 +473,8 @@
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../3rdparty/asio/asio/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.hpp</PrecompiledHeaderFile>
|
||||
@ -490,7 +490,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libcurl.lib;libssl-1_1-x64.lib;libcrypto-1_1-x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Con|x64'">
|
||||
@ -499,8 +499,8 @@
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;../3rdparty/include/;../3rdparty/win32_include;../3rdparty/asio/asio/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_CRT_SECURE_NO_DEPRECATE;MCSDK_DEFINE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.hpp</PrecompiledHeaderFile>
|
||||
@ -729,6 +729,7 @@
|
||||
<ClInclude Include="support\Playback.h" />
|
||||
<ClInclude Include="support\PreferenceKeys.h" />
|
||||
<ClInclude Include="support\Preferences.h" />
|
||||
<ClInclude Include="support\ThreadGroup.h" />
|
||||
<ClInclude Include="utfutil.h" />
|
||||
<ClInclude Include="version.h" />
|
||||
</ItemGroup>
|
||||
|
@ -666,5 +666,8 @@
|
||||
<ClInclude Include="support\PiggyDebugBackend.h">
|
||||
<Filter>src\support</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="support\ThreadGroup.h">
|
||||
<Filter>src\support</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -104,7 +104,7 @@ namespace musik { namespace core { namespace net {
|
||||
ClientPtr rawClient;
|
||||
Connection connection;
|
||||
std::string sessionId;
|
||||
boost::asio::io_service io;
|
||||
asio::io_service io;
|
||||
std::unique_ptr<std::thread> thread;
|
||||
mutable std::recursive_mutex mutex;
|
||||
bool useTls{ false };
|
||||
|
@ -41,14 +41,14 @@ using namespace musik::core::net;
|
||||
|
||||
static inline RawWebSocketClient::SslContext createSslContext() {
|
||||
RawWebSocketClient::SslContext ctx =
|
||||
std::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::sslv23);
|
||||
std::make_shared<asio::ssl::context>(asio::ssl::context::sslv23);
|
||||
|
||||
try {
|
||||
ctx->set_options(boost::asio::ssl::context::default_workarounds |
|
||||
boost::asio::ssl::context::no_sslv2 |
|
||||
boost::asio::ssl::context::no_sslv3 |
|
||||
boost::asio::ssl::context::single_dh_use |
|
||||
boost::asio::ssl::context::verify_none);
|
||||
ctx->set_options(asio::ssl::context::default_workarounds |
|
||||
asio::ssl::context::no_sslv2 |
|
||||
asio::ssl::context::no_sslv3 |
|
||||
asio::ssl::context::single_dh_use |
|
||||
asio::ssl::context::verify_none);
|
||||
}
|
||||
catch (std::exception& e) {
|
||||
std::cerr << "Error in context pointer: " << e.what() << std::endl;
|
||||
@ -56,7 +56,7 @@ static inline RawWebSocketClient::SslContext createSslContext() {
|
||||
return ctx;
|
||||
}
|
||||
|
||||
RawWebSocketClient::RawWebSocketClient(boost::asio::io_service& io) {
|
||||
RawWebSocketClient::RawWebSocketClient(asio::io_service& io) {
|
||||
websocketpp::lib::error_code ec;
|
||||
|
||||
plainTextClient = std::make_unique<PlainTextClient>();
|
||||
|
@ -36,6 +36,10 @@
|
||||
|
||||
#include <musikcore/config.h>
|
||||
|
||||
#ifdef timeout
|
||||
#undef timeout
|
||||
#endif
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <websocketpp/config/asio_no_tls_client.hpp>
|
||||
#include <websocketpp/config/asio_client.hpp>
|
||||
@ -55,7 +59,7 @@ namespace musik { namespace core { namespace net {
|
||||
using PlainTextClientPtr = std::unique_ptr<PlainTextClient>;
|
||||
using TlsClient = websocketpp::client<websocketpp::config::asio_tls_client>;
|
||||
using TlsClientPtr = std::unique_ptr<TlsClient>;
|
||||
using SslContext = std::shared_ptr<boost::asio::ssl::context>;
|
||||
using SslContext = std::shared_ptr<asio::ssl::context>;
|
||||
using Message = websocketpp::config::asio_client::message_type::ptr;
|
||||
using Connection = websocketpp::connection_hdl;
|
||||
|
||||
@ -70,7 +74,7 @@ namespace musik { namespace core { namespace net {
|
||||
TLS = 1
|
||||
};
|
||||
|
||||
RawWebSocketClient(boost::asio::io_service& io);
|
||||
RawWebSocketClient(asio::io_service& io);
|
||||
RawWebSocketClient(const RawWebSocketClient&) = delete;
|
||||
~RawWebSocketClient();
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
||||
#include "pch.hpp"
|
||||
|
||||
#include <musikcore/net/WebSocketClient.h>
|
||||
#include <musikcore/support/Common.h>
|
||||
#include <musikcore/sdk/String.h>
|
||||
#include <musikcore/support/PreferenceKeys.h>
|
||||
#include <musikcore/support/Preferences.h>
|
||||
#include <musikcore/runtime/Message.h>
|
||||
@ -46,6 +46,7 @@
|
||||
#pragma warning(pop)
|
||||
|
||||
using namespace musik::core;
|
||||
using namespace musik::core::sdk;
|
||||
using namespace musik::core::net;
|
||||
using namespace musik::core::runtime;
|
||||
|
||||
@ -112,7 +113,7 @@ static inline bool extractRawQueryResult(
|
||||
}
|
||||
|
||||
static inline bool isVersionCompatible(const std::string& str) {
|
||||
auto parts = Split(str, ".");
|
||||
auto parts = str::Split(str, ".");
|
||||
return
|
||||
parts.size() == 3 &&
|
||||
parts[0] == std::to_string(VERSION_MAJOR) &&
|
||||
|
@ -123,7 +123,7 @@ namespace musik { namespace core { namespace net {
|
||||
|
||||
ClientPtr rawClient;
|
||||
Connection connection;
|
||||
boost::asio::io_service io;
|
||||
asio::io_service io;
|
||||
std::unique_ptr<std::thread> thread;
|
||||
mutable std::recursive_mutex mutex;
|
||||
bool useTls{ false };
|
||||
|
@ -39,6 +39,7 @@
|
||||
#include <algorithm>
|
||||
#include <unordered_map>
|
||||
#include <thread>
|
||||
#include <filesystem>
|
||||
|
||||
#include <cmath>
|
||||
#include <string>
|
||||
@ -47,9 +48,6 @@
|
||||
#include <websocketpp/config/asio_no_tls_client.hpp>
|
||||
#include <websocketpp/config/asio_client.hpp>
|
||||
#include <websocketpp/client.hpp>
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/algorithm/string/case_conv.hpp>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <sigslot/sigslot.h>
|
||||
#pragma warning(pop)
|
||||
|
@ -43,10 +43,13 @@
|
||||
#include <musikcore/debug.h>
|
||||
#include <musikcore/utfutil.h>
|
||||
#include <iostream>
|
||||
#include <filesystem>
|
||||
|
||||
static const std::string TAG = "PluginFactory";
|
||||
static std::mutex instanceMutex;
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
using namespace musik::core;
|
||||
|
||||
#ifdef WIN32
|
||||
@ -92,17 +95,17 @@ void PluginFactory::LoadPlugins() {
|
||||
#endif
|
||||
|
||||
std::string pluginDir(GetPluginDirectory());
|
||||
boost::filesystem::path dir(pluginDir);
|
||||
fs::path dir(fs::u8path(pluginDir));
|
||||
|
||||
try {
|
||||
boost::filesystem::directory_iterator end;
|
||||
for (boost::filesystem::directory_iterator file(dir); file != end; file++) {
|
||||
if (boost::filesystem::is_regular(file->status())){
|
||||
std::string filename(file->path().string());
|
||||
fs::directory_iterator end;
|
||||
for (fs::directory_iterator file(dir); file != end; file++) {
|
||||
if (fs::is_regular_file(file->status())){
|
||||
std::string filename(file->path().u8string());
|
||||
|
||||
std::shared_ptr<Descriptor> descriptor(new Descriptor());
|
||||
descriptor->filename = filename;
|
||||
descriptor->key = boost::filesystem::path(filename).filename().string();
|
||||
descriptor->key = fs::path(fs::u8path(filename)).filename().u8string();
|
||||
|
||||
#ifdef WIN32
|
||||
/* if the file ends with ".dll", we'll try to load it*/
|
||||
|
@ -37,6 +37,8 @@
|
||||
#include <string>
|
||||
#include <string.h>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
|
||||
#ifdef WIN32
|
||||
#include <Windows.h>
|
||||
@ -45,7 +47,7 @@
|
||||
namespace musik { namespace core { namespace sdk { namespace str {
|
||||
|
||||
#ifdef WIN32
|
||||
template <typename String=std::string>
|
||||
template <typename String = std::string>
|
||||
static inline String u16to8(const wchar_t* utf16) {
|
||||
if (!utf16) return "";
|
||||
int size = WideCharToMultiByte(CP_UTF8, 0, utf16, -1, 0, 0, 0, 0);
|
||||
@ -57,7 +59,7 @@ namespace musik { namespace core { namespace sdk { namespace str {
|
||||
return utf8str;
|
||||
}
|
||||
|
||||
template <typename Wstring=std::wstring>
|
||||
template <typename Wstring = std::wstring>
|
||||
static inline Wstring u8to16(const char* utf8) {
|
||||
int size = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, 0, 0);
|
||||
if (size <= 0) return L"";
|
||||
@ -70,7 +72,7 @@ namespace musik { namespace core { namespace sdk { namespace str {
|
||||
#endif
|
||||
|
||||
template<typename... Args>
|
||||
static std::string format(const std::string& format, Args ... args) {
|
||||
static std::string Format(const std::string& format, Args ... args) {
|
||||
/* https://stackoverflow.com/a/26221725 */
|
||||
size_t size = std::snprintf(nullptr, 0, format.c_str(), args ...) + 1; /* extra space for '\0' */
|
||||
std::unique_ptr<char[]> buf(new char[size]);
|
||||
@ -78,4 +80,92 @@ namespace musik { namespace core { namespace sdk { namespace str {
|
||||
return std::string(buf.get(), buf.get() + size - 1); /* omit the '\0' */
|
||||
}
|
||||
|
||||
static inline bool IsSpace(const char c) {
|
||||
return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == '\v' || c == '\f';
|
||||
}
|
||||
|
||||
template<typename String = std::string>
|
||||
static String Trim(const String& str) {
|
||||
if (str.size()) {
|
||||
int length = (size_t)str.size();
|
||||
int start = 0, end = length;
|
||||
int i = 0;
|
||||
while (i < length) {
|
||||
if (!IsSpace(str[i])) {
|
||||
break;
|
||||
}
|
||||
++start;
|
||||
++i;
|
||||
}
|
||||
i = end - 1;
|
||||
while (i >= 0) {
|
||||
if (!IsSpace(str[i])) {
|
||||
break;
|
||||
}
|
||||
--i;
|
||||
}
|
||||
if (end >= start) {
|
||||
std::string result = str.substr((size_t)start, (size_t)end - start);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
template<typename String = std::string>
|
||||
static String Trim(const char* str) {
|
||||
return Trim(String(str));
|
||||
}
|
||||
|
||||
template<typename String = std::string, typename Result = std::vector<String>>
|
||||
static Result Split(const String& in, const String& delim) {
|
||||
Result result;
|
||||
size_t last = 0, next = 0;
|
||||
while ((next = in.find(delim, last)) != std::string::npos) {
|
||||
result.push_back(std::move(Trim(in.substr(last, next - last))));
|
||||
last = next + 1;
|
||||
}
|
||||
result.push_back(std::move(Trim(in.substr(last))));
|
||||
return result;
|
||||
}
|
||||
|
||||
template<typename String = std::string, typename Result = std::vector<String>>
|
||||
static Result Split(const String& in, const char* delim) {
|
||||
return Split(in, String(delim));
|
||||
}
|
||||
|
||||
template<typename String = std::string>
|
||||
static void ReplaceAll(String& input, const String& find, const String& replace) {
|
||||
size_t pos = input.find(find);
|
||||
while (pos != std::string::npos) {
|
||||
input.replace(pos, find.size(), replace);
|
||||
pos = input.find(find, pos + replace.size());
|
||||
}
|
||||
}
|
||||
|
||||
template<typename String = std::string>
|
||||
static void ReplaceAll(String& input, const char* find, const char* replace) {
|
||||
ReplaceAll(input, String(find), String(replace));
|
||||
}
|
||||
|
||||
template<typename String = std::string>
|
||||
static String ReplaceAllCopy(const String& input, const String& find, const String& replace) {
|
||||
String copy = input;
|
||||
ReplaceAll(copy, find, replace);
|
||||
return copy;
|
||||
}
|
||||
|
||||
template<typename String = std::string>
|
||||
static String ReplaceAllCopy(const String& input, const char* find, const char* replace) {
|
||||
return ReplaceAllCopy(input, String(find), String(replace));
|
||||
}
|
||||
|
||||
template<typename String = std::string>
|
||||
static String ToLowerCopy(const String& input) {
|
||||
String copy = input;
|
||||
std::transform(copy.begin(), copy.end(), copy.begin(),
|
||||
[](unsigned char c) { return std::tolower(c); });
|
||||
return copy;
|
||||
}
|
||||
|
||||
} } } }
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include <string>
|
||||
#include <cctype>
|
||||
#include <algorithm>
|
||||
#include <filesystem>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <utf8/utf8.h>
|
||||
@ -74,9 +75,11 @@
|
||||
#include <sys/sysctl.h>
|
||||
#endif
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
static inline void silentDelete(const std::string fn) {
|
||||
boost::system::error_code ec;
|
||||
boost::filesystem::remove(boost::filesystem::path(fn), ec);
|
||||
std::error_code ec;
|
||||
fs::remove(fs::path(fs::u8path(fn)), ec);
|
||||
}
|
||||
|
||||
namespace musik { namespace core {
|
||||
@ -127,8 +130,8 @@ namespace musik { namespace core {
|
||||
argv = new char*[len];
|
||||
if (sysctl(mib, 4, argv, &len, nullptr, 0) < 0) abort();
|
||||
|
||||
boost::filesystem::path command = boost::filesystem::system_complete(argv[0]);
|
||||
realpath(command.c_str(), pathbuf);
|
||||
fs::path command = fs::absolute(fs::path(fs::u8path(argv[0])));
|
||||
realpath(command.u8string().c_str(), pathbuf);
|
||||
delete[] argv;
|
||||
#else
|
||||
std::string pathToProc = u8fmt("/proc/%d/exe", (int) getpid());
|
||||
@ -146,6 +149,22 @@ namespace musik { namespace core {
|
||||
std::string GetHomeDirectory() {
|
||||
std::string directory;
|
||||
|
||||
#ifdef WIN32
|
||||
DWORD bufferSize = GetEnvironmentVariable(L"USERPROFILE", 0, 0);
|
||||
wchar_t* buffer = new wchar_t[bufferSize + 2];
|
||||
GetEnvironmentVariable(L"USERPROFILE", buffer, bufferSize);
|
||||
directory.assign(u16to8(buffer));
|
||||
delete[] buffer;
|
||||
#else
|
||||
directory = std::string(std::getenv("HOME"));
|
||||
#endif
|
||||
|
||||
return directory;
|
||||
}
|
||||
|
||||
std::string GetDataDirectory(bool create) {
|
||||
std::string directory;
|
||||
|
||||
#ifdef WIN32
|
||||
DWORD bufferSize = GetEnvironmentVariable(L"APPDATA", 0, 0);
|
||||
wchar_t* buffer = new wchar_t[bufferSize + 2];
|
||||
@ -162,21 +181,16 @@ namespace musik { namespace core {
|
||||
}
|
||||
#endif
|
||||
|
||||
return directory;
|
||||
}
|
||||
|
||||
std::string GetDataDirectory(bool create) {
|
||||
std::string directory = GetHomeDirectory() + std::string("/musikcube/");
|
||||
directory += std::string("/musikcube/");
|
||||
|
||||
if (create) {
|
||||
try {
|
||||
boost::filesystem::path path(directory);
|
||||
if (!boost::filesystem::exists(path)) {
|
||||
boost::filesystem::create_directories(path);
|
||||
fs::path path(fs::u8path(directory));
|
||||
if (!fs::exists(path)) {
|
||||
fs::create_directories(path);
|
||||
}
|
||||
}
|
||||
catch (...) {
|
||||
/* ugh, fixme */
|
||||
}
|
||||
}
|
||||
|
||||
@ -279,9 +293,9 @@ namespace musik { namespace core {
|
||||
}
|
||||
|
||||
std::string NormalizeDir(std::string path) {
|
||||
path = boost::filesystem::path(path).make_preferred().string();
|
||||
path = fs::path(fs::u8path(path)).make_preferred().u8string();
|
||||
|
||||
std::string sep(1, boost::filesystem::path::preferred_separator);
|
||||
std::string sep(1, fs::path::preferred_separator);
|
||||
if (path.size() && path.substr(path.size() - 1, 1) != sep) {
|
||||
path += sep;
|
||||
}
|
||||
@ -289,55 +303,6 @@ namespace musik { namespace core {
|
||||
return path;
|
||||
}
|
||||
|
||||
void ReplaceAll(std::string& input, const std::string& find, const std::string& replace) {
|
||||
size_t pos = input.find(find);
|
||||
while (pos != std::string::npos) {
|
||||
input.replace(pos, find.size(), replace);
|
||||
pos = input.find(find, pos + replace.size());
|
||||
}
|
||||
}
|
||||
|
||||
static inline bool IsSpace(const char c) {
|
||||
return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == '\v' || c == '\f';
|
||||
}
|
||||
|
||||
std::string Trim(const std::string& str) {
|
||||
if (str.size()) {
|
||||
int start = 0;
|
||||
for (size_t i = 0; i < str.length(); i++) {
|
||||
if (!IsSpace(str[i])) {
|
||||
break;
|
||||
}
|
||||
++start;
|
||||
}
|
||||
int end = (int)str.length();
|
||||
for (size_t i = str.length() - 1; i >= 0; i--) {
|
||||
if (!IsSpace(str[i])) {
|
||||
break;
|
||||
}
|
||||
--end;
|
||||
}
|
||||
if (end > start) {
|
||||
std::string result = str.substr((size_t)start, (size_t)end - start);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
std::vector<std::string> Split(
|
||||
const std::string& in, const std::string& delim)
|
||||
{
|
||||
std::vector<std::string> result;
|
||||
size_t last = 0, next = 0;
|
||||
while ((next = in.find(delim, last)) != std::string::npos) {
|
||||
result.push_back(std::move(Trim(in.substr(last, next - last))));
|
||||
last = next + 1;
|
||||
}
|
||||
result.push_back(std::move(Trim(in.substr(last))));
|
||||
return result;
|
||||
}
|
||||
|
||||
void OpenFile(const std::string& path) {
|
||||
#ifdef WIN32
|
||||
ShellExecuteA(nullptr, nullptr, path.c_str(), nullptr, nullptr, SW_SHOWNORMAL);
|
||||
|
@ -50,9 +50,6 @@ namespace musik { namespace core {
|
||||
bool CopyFile(const std::string& from, const std::string& to);
|
||||
int64_t Checksum(char *data,unsigned int bytes);
|
||||
size_t CopyString(const std::string& src, char* dst, size_t size);
|
||||
void ReplaceAll(std::string& input, const std::string& find, const std::string& replace);
|
||||
std::vector<std::string> Split(const std::string& in, const std::string& delim);
|
||||
std::string Trim(const std::string& str);
|
||||
bool FileToByteArray(const std::string& path, char** target, int& size, bool nullTerminate = false);
|
||||
|
||||
} }
|
||||
|
151
src/musikcore/support/ThreadGroup.h
Normal file
151
src/musikcore/support/ThreadGroup.h
Normal file
@ -0,0 +1,151 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2004-2021 musikcube team
|
||||
//
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright notice,
|
||||
// this list of conditions and the following disclaimer.
|
||||
//
|
||||
// * Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
//
|
||||
// * Neither the name of the author nor the names of other contributors may
|
||||
// be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/* copied from boost's ThreadGroup.hpp */
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <list>
|
||||
#include <thread>
|
||||
#include <shared_mutex>
|
||||
#include <mutex>
|
||||
#include <memory>
|
||||
|
||||
namespace musik { namespace core {
|
||||
|
||||
class ThreadGroup
|
||||
{
|
||||
private:
|
||||
ThreadGroup(ThreadGroup const&);
|
||||
ThreadGroup& operator=(ThreadGroup const&);
|
||||
public:
|
||||
ThreadGroup() {}
|
||||
~ThreadGroup()
|
||||
{
|
||||
for (std::list<std::thread*>::iterator it = threads.begin(), end = threads.end();
|
||||
it != end;
|
||||
++it)
|
||||
{
|
||||
delete* it;
|
||||
}
|
||||
}
|
||||
|
||||
bool is_this_thread_in()
|
||||
{
|
||||
std::thread::id id = std::this_thread::get_id();
|
||||
std::shared_lock<std::shared_mutex> guard(m);
|
||||
for (std::list<std::thread*>::iterator it = threads.begin(), end = threads.end();
|
||||
it != end;
|
||||
++it)
|
||||
{
|
||||
if ((*it)->get_id() == id)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool is_thread_in(std::thread* thrd)
|
||||
{
|
||||
if (thrd)
|
||||
{
|
||||
std::thread::id id = thrd->get_id();
|
||||
std::shared_lock<std::shared_mutex> guard(m);
|
||||
for (std::list<std::thread*>::iterator it = threads.begin(), end = threads.end();
|
||||
it != end;
|
||||
++it)
|
||||
{
|
||||
if ((*it)->get_id() == id)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
template<typename F>
|
||||
std::thread* create_thread(F threadfunc)
|
||||
{
|
||||
std::lock_guard<std::shared_mutex> guard(m);
|
||||
std::unique_ptr<std::thread> new_thread(new std::thread(threadfunc));
|
||||
threads.push_back(new_thread.get());
|
||||
return new_thread.release();
|
||||
}
|
||||
|
||||
void add_thread(std::thread* thrd)
|
||||
{
|
||||
if (thrd)
|
||||
{
|
||||
std::lock_guard<std::shared_mutex> guard(m);
|
||||
threads.push_back(thrd);
|
||||
}
|
||||
}
|
||||
|
||||
void remove_thread(std::thread* thrd)
|
||||
{
|
||||
std::lock_guard<std::shared_mutex> guard(m);
|
||||
std::list<std::thread*>::iterator const it = std::find(threads.begin(), threads.end(), thrd);
|
||||
if (it != threads.end())
|
||||
{
|
||||
threads.erase(it);
|
||||
}
|
||||
}
|
||||
|
||||
void join_all()
|
||||
{
|
||||
std::shared_lock<std::shared_mutex> guard(m);
|
||||
|
||||
for (std::list<std::thread*>::iterator it = threads.begin(), end = threads.end();
|
||||
it != end;
|
||||
++it)
|
||||
{
|
||||
if ((*it)->joinable())
|
||||
(*it)->join();
|
||||
}
|
||||
}
|
||||
|
||||
size_t size() const
|
||||
{
|
||||
std::shared_lock<std::shared_mutex> guard(m);
|
||||
return threads.size();
|
||||
}
|
||||
|
||||
private:
|
||||
std::list<std::thread*> threads;
|
||||
mutable std::shared_mutex m;
|
||||
};
|
||||
|
||||
} }
|
@ -37,10 +37,10 @@
|
||||
#include <string>
|
||||
|
||||
#define VERSION_MAJOR 0
|
||||
#define VERSION_MINOR 98
|
||||
#define VERSION_PATCH 2
|
||||
#define VERSION_COMMIT_HASH "#4facbdde"
|
||||
#define VERSION "0.98.2"
|
||||
#define VERSION_MINOR 99
|
||||
#define VERSION_PATCH 0
|
||||
#define VERSION_COMMIT_HASH "#dc9feae4"
|
||||
#define VERSION "0.99.0"
|
||||
|
||||
namespace musik {
|
||||
namespace cube {
|
||||
|
@ -61,11 +61,6 @@
|
||||
#include <musikcore/net/PiggyWebSocketClient.h>
|
||||
#include <musikcore/support/PiggyDebugBackend.h>
|
||||
|
||||
#include <boost/locale.hpp>
|
||||
#include <boost/filesystem/path.hpp>
|
||||
#include <boost/filesystem/fstream.hpp>
|
||||
#include <boost/filesystem/detail/utf8_codecvt_facet.hpp>
|
||||
|
||||
#ifdef WIN32
|
||||
#include <cursespp/Win32Util.h>
|
||||
#include "resource.h"
|
||||
@ -97,11 +92,6 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
srand((unsigned int) time(0));
|
||||
|
||||
/* the following allows boost::filesystem to use utf8 on Windows */
|
||||
std::locale locale = std::locale();
|
||||
std::locale utf8Locale(locale, new boost::filesystem::detail::utf8_codecvt_facet);
|
||||
boost::filesystem::path::imbue(utf8Locale);
|
||||
|
||||
/* ensure we have the correct locale loaded */
|
||||
core::i18n::Locale::Instance().Initialize(core::GetApplicationDirectory() + "/locales/");
|
||||
|
||||
@ -114,7 +104,11 @@ int main(int argc, char* argv[]) {
|
||||
#endif
|
||||
|
||||
std::string errorFn = core::GetDataDirectory() + "stderr.txt";
|
||||
#ifdef WIN32
|
||||
_wfreopen(u8to16(errorFn).c_str(), L"w", stderr);
|
||||
#else
|
||||
freopen(errorFn.c_str(), "w", stderr);
|
||||
#endif
|
||||
|
||||
auto prefs = Preferences::ForComponent(core::prefs::components::Settings);
|
||||
|
||||
|
@ -44,8 +44,12 @@
|
||||
#include <app/util/Messages.h>
|
||||
#include <app/overlay/PlayQueueOverlays.h>
|
||||
|
||||
#include <filesystem>
|
||||
|
||||
#include "DirectoryLayout.h"
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
using namespace musik;
|
||||
using namespace musik::core::library::constants;
|
||||
using namespace musik::core;
|
||||
@ -157,8 +161,6 @@ void DirectoryLayout::RequeryTrackList(ListWindow *view) {
|
||||
}
|
||||
|
||||
if (fullPath.size()) {
|
||||
fullPath = NormalizeDir(fullPath);
|
||||
|
||||
auto query = std::shared_ptr<TrackListQueryBase>(
|
||||
new DirectoryTrackListQuery(this->library, fullPath));
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
#include <stdafx.h>
|
||||
#include "HotkeysLayout.h"
|
||||
#include <musikcore/support/Common.h>
|
||||
#include <musikcore/sdk/String.h>
|
||||
#include <cursespp/App.h>
|
||||
#include <cursespp/Colors.h>
|
||||
#include <cursespp/DialogOverlay.h>
|
||||
@ -48,6 +48,7 @@
|
||||
using namespace cursespp;
|
||||
using namespace musik::cube;
|
||||
using namespace musik::core;
|
||||
using namespace musik::core::sdk;
|
||||
|
||||
using Entry = IScrollAdapter::EntryPtr;
|
||||
using Callback = std::function<void()>;
|
||||
@ -92,8 +93,8 @@ static void checkConflictAndSave(Hotkeys::Id id, const std::string& key, Callbac
|
||||
auto dialog = std::make_shared<DialogOverlay>();
|
||||
|
||||
std::string message = _TSTR("hotkeys_conflict_message");
|
||||
ReplaceAll(message, "{{hotkey}}", key);
|
||||
ReplaceAll(message, "{{existing}}", existing);
|
||||
str::ReplaceAll(message, "{{hotkey}}", key.c_str());
|
||||
str::ReplaceAll(message, "{{existing}}", existing.c_str());
|
||||
|
||||
(*dialog)
|
||||
.SetTitle(_TSTR("hotkeys_conflict_title"))
|
||||
@ -125,7 +126,7 @@ static void backupAndShowDialog() {
|
||||
auto dialog = std::make_shared<DialogOverlay>();
|
||||
|
||||
std::string message = _TSTR("hotkeys_backup_success_message");
|
||||
ReplaceAll(message, "{{path}}", out);
|
||||
str::ReplaceAll(message, "{{path}}", out.c_str());
|
||||
|
||||
(*dialog)
|
||||
.SetTitle(_TSTR("hotkeys_backup_success_title"))
|
||||
@ -138,7 +139,7 @@ static void backupAndShowDialog() {
|
||||
auto dialog = std::make_shared<DialogOverlay>();
|
||||
|
||||
std::string message = _TSTR("hotkeys_backup_failure_message");
|
||||
ReplaceAll(message, "{{path}}", dir);
|
||||
str::ReplaceAll(message, "{{path}}", dir.c_str());
|
||||
|
||||
(*dialog)
|
||||
.SetTitle(_TSTR("hotkeys_backup_failure_title"))
|
||||
@ -153,8 +154,8 @@ static void showDeleteOverlay(Hotkeys::Id id, Callback cb) {
|
||||
auto dialog = std::make_shared<DialogOverlay>();
|
||||
|
||||
std::string message = _TSTR("hotkeys_delete_binding_message");
|
||||
ReplaceAll(message, "{{key}}", Hotkeys::Name(id));
|
||||
ReplaceAll(message, "{{default}}", Hotkeys::Default(id));
|
||||
str::ReplaceAll(message, "{{key}}", Hotkeys::Name(id).c_str());
|
||||
str::ReplaceAll(message, "{{default}}", Hotkeys::Default(id).c_str());
|
||||
|
||||
(*dialog)
|
||||
.SetTitle(_TSTR("hotkeys_delete_binding_title"))
|
||||
|
@ -37,7 +37,7 @@
|
||||
#include <app/util/Messages.h>
|
||||
#include <musikcore/i18n/Locale.h>
|
||||
#include <musikcore/support/Auddio.h>
|
||||
#include <musikcore/support/Common.h>
|
||||
#include <musikcore/sdk/String.h>
|
||||
#include <musikcore/library/query/LyricsQuery.h>
|
||||
#include <cursespp/App.h>
|
||||
#include <cursespp/Screen.h>
|
||||
@ -183,9 +183,9 @@ void LyricsLayout::LoadLyricsForCurrentTrack() {
|
||||
|
||||
void LyricsLayout::UpdateAdapter() {
|
||||
std::string fixed = this->currentLyrics;
|
||||
ReplaceAll(fixed, "\r\n", "\n");
|
||||
ReplaceAll(fixed, "\r", "\n");
|
||||
auto items = Split(fixed, "\n");
|
||||
str::ReplaceAll(fixed, "\r\n", "\n");
|
||||
str::ReplaceAll(fixed, "\r", "\n");
|
||||
auto items = str::Split(fixed, "\n");
|
||||
this->adapter->Clear();
|
||||
for (auto& text : items) {
|
||||
this->adapter->AddEntry(std::make_shared<SingleLineEntry>(text));
|
||||
|
@ -41,16 +41,25 @@
|
||||
|
||||
#include "DirectoryAdapter.h"
|
||||
|
||||
#include <filesystem>
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
using namespace musik::cube;
|
||||
using namespace cursespp;
|
||||
using namespace boost::filesystem;
|
||||
|
||||
#ifdef WIN32
|
||||
static const fs::path kDefaultRoot("");
|
||||
#else
|
||||
static const fs::path kDefaultRoot("/");
|
||||
#endif
|
||||
|
||||
#ifdef WIN32
|
||||
static void buildDriveList(std::vector<std::string>& target) {
|
||||
target.clear();
|
||||
static char buffer[4096];
|
||||
DWORD result = ::GetLogicalDriveStringsA(4096, buffer);
|
||||
if (result) {
|
||||
const DWORD result = ::GetLogicalDriveStringsA(4096, buffer);
|
||||
if (result && buffer) {
|
||||
char* current = buffer;
|
||||
while (*current) {
|
||||
target.push_back(std::string(current));
|
||||
@ -59,26 +68,20 @@ static void buildDriveList(std::vector<std::string>& target) {
|
||||
}
|
||||
}
|
||||
|
||||
static bool shouldBuildDriveList(const boost::filesystem::path& dir) {
|
||||
std::string pathstr = dir.string();
|
||||
return
|
||||
(pathstr.size() == 2 && pathstr[1] == ':') ||
|
||||
(pathstr.size() == 3 && pathstr[2] == ':') ||
|
||||
(pathstr.size() == 0);
|
||||
static bool shouldBuildDriveList(const fs::path& dir) {
|
||||
return dir.u8string().size() == 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool hasSubdirectories(
|
||||
boost::filesystem::path p, bool showDotfiles)
|
||||
{
|
||||
static bool hasSubdirectories(fs::path p, bool showDotfiles) {
|
||||
try {
|
||||
directory_iterator end;
|
||||
directory_iterator file(p);
|
||||
fs::directory_iterator end;
|
||||
fs::directory_iterator file(p);
|
||||
|
||||
while (file != end) {
|
||||
try {
|
||||
if (is_directory(file->status())) {
|
||||
if (showDotfiles || file->path().leaf().string()[0] != '.') {
|
||||
if (fs::is_directory(file->status())) {
|
||||
if (showDotfiles || file->path().filename().u8string().at(0) != '.') {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -97,22 +100,22 @@ static bool hasSubdirectories(
|
||||
}
|
||||
|
||||
static void buildDirectoryList(
|
||||
const path& p,
|
||||
const fs::path& p,
|
||||
std::vector<std::string>& target,
|
||||
bool showDotfiles)
|
||||
{
|
||||
target.clear();
|
||||
|
||||
try {
|
||||
directory_iterator end;
|
||||
directory_iterator file(p);
|
||||
fs::directory_iterator end;
|
||||
fs::directory_iterator file(p);
|
||||
|
||||
while (file != end) {
|
||||
try {
|
||||
if (is_directory(file->status())) {
|
||||
std::string leaf = file->path().leaf().string();
|
||||
if (showDotfiles || leaf[0] != '.') {
|
||||
target.push_back(leaf);
|
||||
std::string leaf = file->path().filename().u8string();
|
||||
if (showDotfiles || leaf.at(0) != '.') {
|
||||
target.push_back(file->path().u8string());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -137,14 +140,19 @@ static void buildDirectoryList(
|
||||
}
|
||||
}
|
||||
|
||||
static std::string normalizePath(boost::filesystem::path path) {
|
||||
return musik::core::NormalizeDir(path.string());
|
||||
static std::string pathToString(fs::path path) {
|
||||
return musik::core::NormalizeDir(path.u8string());
|
||||
}
|
||||
|
||||
static fs::path stringToPath(const std::string& path) {
|
||||
return fs::u8path(musik::core::NormalizeDir(path));
|
||||
}
|
||||
|
||||
DirectoryAdapter::DirectoryAdapter() {
|
||||
this->showDotfiles = false;
|
||||
this->showRootDirectory = false;
|
||||
this->dir = musik::core::GetHomeDirectory();
|
||||
this->dir = fs::path(fs::u8path(musik::core::GetHomeDirectory()));
|
||||
this->rootDir = kDefaultRoot;
|
||||
buildDirectoryList(dir, subdirs, showDotfiles);
|
||||
}
|
||||
|
||||
@ -163,10 +171,9 @@ void DirectoryAdapter::SetShowRootDirectory(bool show) {
|
||||
}
|
||||
|
||||
size_t DirectoryAdapter::Select(cursespp::ListWindow* window) {
|
||||
bool hasParent = this->ShowParentPath();
|
||||
const bool hasParent = this->ShowParentPath();
|
||||
size_t selectedIndex = NO_INDEX;
|
||||
size_t initialIndex = window->GetSelectedIndex();
|
||||
bool selectParent = false;
|
||||
if (this->IsCurrentDirectory(initialIndex)) {
|
||||
return initialIndex;
|
||||
}
|
||||
@ -175,17 +182,31 @@ size_t DirectoryAdapter::Select(cursespp::ListWindow* window) {
|
||||
selectedIndex = this->selectedIndexStack.top();
|
||||
this->selectedIndexStack.pop();
|
||||
}
|
||||
#ifdef WIN32
|
||||
/* has_relative_path() is weird, as it does what i'd expect
|
||||
has_parent_path() to do... documentation doesn't really help
|
||||
much, but basically we're checking if we're at the root here;
|
||||
if we are, we reset the directory to empty so we can build a
|
||||
drive list. */
|
||||
if (!this->dir.has_relative_path()) {
|
||||
this->dir = "";
|
||||
}
|
||||
else {
|
||||
this->dir = this->dir.parent_path();
|
||||
}
|
||||
#else
|
||||
this->dir = this->dir.parent_path();
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
selectedIndexStack.push(initialIndex);
|
||||
initialIndex -= this->GetHeaderCount();
|
||||
this->dir /= this->subdirs[initialIndex];
|
||||
this->dir = fs::u8path(this->subdirs.at(initialIndex));
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
if (shouldBuildDriveList(this->dir)) {
|
||||
dir = path();
|
||||
dir = fs::path();
|
||||
buildDriveList(subdirs);
|
||||
return selectedIndex;
|
||||
}
|
||||
@ -199,25 +220,25 @@ size_t DirectoryAdapter::Select(cursespp::ListWindow* window) {
|
||||
|
||||
void DirectoryAdapter::SetRootDirectory(const std::string& directory) {
|
||||
if (directory.size()) {
|
||||
dir = rootDir = musik::core::NormalizeDir(directory);
|
||||
dir = rootDir = stringToPath(directory);
|
||||
}
|
||||
else {
|
||||
dir = musik::core::GetHomeDirectory();
|
||||
rootDir = path();
|
||||
rootDir = kDefaultRoot;
|
||||
}
|
||||
buildDirectoryList(dir, subdirs, showDotfiles);
|
||||
}
|
||||
|
||||
std::string DirectoryAdapter::GetFullPathAt(size_t index) {
|
||||
bool hasParent = this->ShowParentPath();
|
||||
const bool hasParent = this->ShowParentPath();
|
||||
if (hasParent && index == 0) {
|
||||
return "";
|
||||
}
|
||||
if (this->IsCurrentDirectory(index)) {
|
||||
return this->dir.string();
|
||||
return this->dir.u8string();
|
||||
}
|
||||
index -= this->GetHeaderCount();
|
||||
return normalizePath((dir / this->subdirs[index]).string());
|
||||
return pathToString(fs::u8path(this->subdirs.at(index)));
|
||||
}
|
||||
|
||||
std::string DirectoryAdapter::GetLeafAt(size_t index) {
|
||||
@ -227,12 +248,12 @@ std::string DirectoryAdapter::GetLeafAt(size_t index) {
|
||||
if (this->IsCurrentDirectory(index)) {
|
||||
return ".";
|
||||
}
|
||||
return this->subdirs[index];
|
||||
return fs::u8path(this->subdirs.at(index)).u8string();
|
||||
}
|
||||
|
||||
size_t DirectoryAdapter::IndexOf(const std::string& leaf) {
|
||||
for (size_t i = 0; i < this->subdirs.size(); i++) {
|
||||
if (this->subdirs[i] == leaf) {
|
||||
if (this->subdirs.at(i) == leaf) {
|
||||
return i + this->GetHeaderCount();
|
||||
}
|
||||
}
|
||||
@ -258,16 +279,16 @@ void DirectoryAdapter::SetDotfilesVisible(bool visible) {
|
||||
|
||||
std::string DirectoryAdapter::GetParentPath() {
|
||||
if (dir.has_parent_path() &&
|
||||
normalizePath(this->dir) != normalizePath(this->rootDir))
|
||||
pathToString(this->dir) != pathToString(this->rootDir))
|
||||
{
|
||||
return normalizePath(dir.parent_path().string());
|
||||
return pathToString(dir.parent_path().u8string());
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
std::string DirectoryAdapter::GetCurrentPath() {
|
||||
return normalizePath(dir.string());
|
||||
return pathToString(dir.u8string());
|
||||
}
|
||||
|
||||
void DirectoryAdapter::Refresh() {
|
||||
@ -275,7 +296,7 @@ void DirectoryAdapter::Refresh() {
|
||||
}
|
||||
|
||||
bool DirectoryAdapter::IsAtRoot() {
|
||||
return normalizePath(this->dir) == normalizePath(this->rootDir);
|
||||
return pathToString(this->dir) == pathToString(this->rootDir);
|
||||
}
|
||||
|
||||
bool DirectoryAdapter::ShowParentPath() {
|
||||
@ -294,7 +315,7 @@ size_t DirectoryAdapter::GetHeaderCount() {
|
||||
}
|
||||
|
||||
bool DirectoryAdapter::HasSubDirectories(size_t index) {
|
||||
bool hasParent = this->ShowParentPath();
|
||||
const bool hasParent = this->ShowParentPath();
|
||||
if (index == 0 && hasParent) {
|
||||
return true;
|
||||
}
|
||||
@ -302,7 +323,7 @@ bool DirectoryAdapter::HasSubDirectories(size_t index) {
|
||||
return !this->subdirs.empty();
|
||||
}
|
||||
index -= this->GetHeaderCount();
|
||||
return hasSubdirectories(this->dir / this->subdirs[index], this->showDotfiles);
|
||||
return hasSubdirectories(fs::u8path(this->subdirs.at(index)), this->showDotfiles);
|
||||
}
|
||||
|
||||
bool DirectoryAdapter::HasSubDirectories() {
|
||||
@ -325,11 +346,18 @@ IScrollAdapter::EntryPtr DirectoryAdapter::GetEntry(cursespp::ScrollableWindow*
|
||||
}
|
||||
else if (this->ShowCurrentDirectory()) {
|
||||
if (IsCurrentDirectory(index)) {
|
||||
const auto dir = u8fmt("[%s]", + this->rootDir.branch_path().leaf().string().c_str());
|
||||
const auto dir = u8fmt("[%s]", + this->rootDir.parent_path().filename().u8string().c_str());
|
||||
return IScrollAdapter::EntryPtr(new SingleLineEntry(dir));
|
||||
}
|
||||
}
|
||||
index -= this->GetHeaderCount();
|
||||
auto text = text::Ellipsize(this->subdirs[index], this->GetWidth());
|
||||
auto path = fs::u8path(this->subdirs[index]);
|
||||
auto pathString = path.filename().u8string();
|
||||
/* windows root drives are 'x:\', so they don't have a filename leaf. if
|
||||
we resolve an empty string, just use the whole path */
|
||||
if (!pathString.size()) {
|
||||
pathString = path.u8string();
|
||||
}
|
||||
auto text = text::Ellipsize(pathString, this->GetWidth());
|
||||
return IScrollAdapter::EntryPtr(new SingleLineEntry(text));
|
||||
}
|
||||
|
@ -36,7 +36,8 @@
|
||||
|
||||
#include <cursespp/ScrollAdapterBase.h>
|
||||
#include <cursespp/ListWindow.h>
|
||||
#include <boost/filesystem.hpp>
|
||||
|
||||
#include <filesystem>
|
||||
#include <vector>
|
||||
#include <stack>
|
||||
|
||||
@ -74,7 +75,7 @@ namespace musik {
|
||||
bool IsCurrentDirectory(size_t index);
|
||||
size_t GetHeaderCount();
|
||||
|
||||
boost::filesystem::path dir, rootDir;
|
||||
std::filesystem::path dir, rootDir;
|
||||
std::vector<std::string> subdirs;
|
||||
std::stack<size_t> selectedIndexStack;
|
||||
bool showDotfiles, allowEscapeRoot, showRootDirectory;
|
||||
|
@ -52,7 +52,6 @@ using namespace musik;
|
||||
using namespace musik::core;
|
||||
using namespace musik::cube;
|
||||
using namespace cursespp;
|
||||
using namespace boost::filesystem;
|
||||
|
||||
using Callback = std::function<void()>;
|
||||
|
||||
|
@ -36,13 +36,14 @@
|
||||
#include "LastFmOverlay.h"
|
||||
#include <app/util/Messages.h>
|
||||
#include <musikcore/support/LastFm.h>
|
||||
#include <musikcore/support/Common.h>
|
||||
#include <musikcore/sdk/String.h>
|
||||
#include <cursespp/App.h>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
using namespace musik::cube;
|
||||
using namespace musik::core;
|
||||
using namespace musik::core::sdk;
|
||||
using namespace musik;
|
||||
using namespace cursespp;
|
||||
|
||||
@ -122,14 +123,14 @@ void LastFmOverlay::UpdateMessage() {
|
||||
switch (this->state) {
|
||||
case State::Registered: {
|
||||
auto session = lastfm::LoadSession();
|
||||
core::ReplaceAll(message, "{{username}}", session.username);
|
||||
str::ReplaceAll(message, "{{username}}", session.username.c_str());
|
||||
break;
|
||||
}
|
||||
|
||||
case State::WaitingForUser:
|
||||
case State::RegisterError: {
|
||||
std::string url = lastfm::CreateAccountLinkUrl(this->linkToken);
|
||||
core::ReplaceAll(message, "{{link}}", url);
|
||||
str::ReplaceAll(message, "{{link}}", url.c_str());
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -36,11 +36,11 @@
|
||||
|
||||
#include "PluginOverlay.h"
|
||||
|
||||
#include <musikcore/support/Common.h>
|
||||
#include <musikcore/support/Preferences.h>
|
||||
#include <musikcore/support/PreferenceKeys.h>
|
||||
#include <musikcore/plugin/PluginFactory.h>
|
||||
#include <musikcore/sdk/ISchema.h>
|
||||
#include <musikcore/sdk/String.h>
|
||||
|
||||
#include <cursespp/App.h>
|
||||
#include <cursespp/DialogOverlay.h>
|
||||
@ -49,6 +49,11 @@
|
||||
#include <cursespp/SingleLineEntry.h>
|
||||
#include <cursespp/SchemaOverlay.h>
|
||||
|
||||
#include <filesystem>
|
||||
|
||||
namespace std {
|
||||
namespace fs = std::filesystem;
|
||||
}
|
||||
using namespace musik;
|
||||
using namespace musik::core;
|
||||
using namespace musik::core::sdk;
|
||||
@ -71,7 +76,7 @@ using SchemaPtr = std::shared_ptr<ISchema>;
|
||||
|
||||
static void showConfigureOverlay(IPlugin* plugin, SchemaPtr schema) {
|
||||
std::string title = _TSTR("settings_configure_plugin_title");
|
||||
ReplaceAll(title, "{{name}}", plugin->Name());
|
||||
str::ReplaceAll(title, "{{name}}", plugin->Name());
|
||||
auto prefs = Preferences::ForPlugin(plugin->Name());
|
||||
SchemaOverlay::Show(title, prefs, schema, [](bool) {});
|
||||
}
|
||||
@ -80,7 +85,7 @@ static void showNoSchemaDialog(const std::string& name) {
|
||||
std::shared_ptr<DialogOverlay> dialog(new DialogOverlay());
|
||||
|
||||
std::string message = _TSTR("settings_no_plugin_config_message");
|
||||
ReplaceAll(message, "{{name}}", name);
|
||||
str::ReplaceAll(message, "{{name}}", name.c_str());
|
||||
|
||||
(*dialog)
|
||||
.SetTitle(_TSTR("settings_no_plugin_config_title"))
|
||||
@ -171,7 +176,7 @@ class PluginListAdapter : public ScrollAdapterBase {
|
||||
[&plugins, prefs](IPlugin* raw, Plugin plugin, const std::string& fn) {
|
||||
PluginInfoPtr info(new PluginInfo());
|
||||
info->plugin = raw;
|
||||
info->fn = boost::filesystem::path(fn).filename().string();
|
||||
info->fn = std::fs::path(std::fs::u8path(fn)).filename().u8string();
|
||||
info->enabled = prefs->GetBool(info->fn, true);
|
||||
plugins.push_back(info);
|
||||
});
|
||||
|
@ -39,7 +39,7 @@
|
||||
#include <musikcore/i18n/Locale.h>
|
||||
#include <musikcore/support/Preferences.h>
|
||||
#include <musikcore/support/PreferenceKeys.h>
|
||||
#include <musikcore/support/Common.h>
|
||||
#include <musikcore/sdk/String.h>
|
||||
#include <musikcore/library/ILibrary.h>
|
||||
|
||||
#include <musikcube/app/util/PreferenceKeys.h>
|
||||
@ -54,6 +54,7 @@
|
||||
|
||||
using namespace musik;
|
||||
using namespace musik::core;
|
||||
using namespace musik::core::sdk;
|
||||
using namespace musik::cube;
|
||||
using namespace musik::cube::SettingsOverlays;
|
||||
using namespace cursespp;
|
||||
@ -201,7 +202,7 @@ void musik::cube::SettingsOverlays::CheckShowTlsWarningDialog() {
|
||||
auto dialog = std::make_shared<DialogOverlay>();
|
||||
|
||||
std::string message = _TSTR("settings_library_type_remote_tls_warning_overlay_message");
|
||||
musik::core::ReplaceAll(message, "{{link}}", kTlsInfoUrl);
|
||||
str::ReplaceAll(message, "{{link}}", kTlsInfoUrl.c_str());
|
||||
|
||||
(*dialog)
|
||||
.SetTitle(_TSTR("settings_library_type_remote_tls_warning_overlay_title"))
|
||||
|
@ -35,17 +35,18 @@
|
||||
#include <stdafx.h>
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <cursespp/Colors.h>
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <musikcore/support/Common.h>
|
||||
#include <set>
|
||||
#include <filesystem>
|
||||
|
||||
/* this whole source unit is freaking bananas, but the curses interface
|
||||
for setting colors is awful. i'm sorry for anyone who has to do work in here. */
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
using namespace musik::core;
|
||||
using namespace cursespp;
|
||||
using namespace nlohmann;
|
||||
using namespace boost::filesystem;
|
||||
|
||||
/* if the terminal supports custom colors, these are the palette
|
||||
indices we'll use to store them */
|
||||
@ -573,14 +574,14 @@ static Colors::Mode colorMode = Colors::Basic;
|
||||
static Colors::BgType bgType = Colors::Theme;
|
||||
|
||||
static void indexThemes(const std::string& directory) {
|
||||
path colorPath(directory);
|
||||
if (exists(colorPath)) {
|
||||
directory_iterator end;
|
||||
for (directory_iterator file(colorPath); file != end; file++) {
|
||||
const path& p = file->path();
|
||||
fs::path colorPath(fs::u8path(directory));
|
||||
if (fs::exists(colorPath)) {
|
||||
fs::directory_iterator end;
|
||||
for (fs::directory_iterator file(colorPath); file != end; file++) {
|
||||
const fs::path& p = file->path();
|
||||
|
||||
if (p.has_extension() && p.extension().string() == ".json") {
|
||||
std::string fn = p.filename().string();
|
||||
if (p.has_extension() && p.extension().u8string() == ".json") {
|
||||
std::string fn = p.filename().u8string();
|
||||
Theme theme;
|
||||
if (theme.LoadFromFile(directory + "/" + fn)) {
|
||||
::themes.push_back(theme);
|
||||
|
Binary file not shown.
@ -280,8 +280,8 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;_DEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -297,7 +297,7 @@
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -327,8 +327,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;_DEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -344,7 +344,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -374,8 +374,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Con|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINCON;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINCON;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -391,7 +391,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -421,8 +421,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;_DEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
@ -437,7 +437,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -466,8 +466,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;_DEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
@ -482,7 +482,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -511,8 +511,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Con|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINCON;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;_DEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINCON;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
@ -527,7 +527,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -555,8 +555,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;NDEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;NDEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -575,7 +575,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -608,8 +608,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;NDEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;NDEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -628,7 +628,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -661,8 +661,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Con|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINCON;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINCON;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -681,7 +681,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib32-msvc-14.2;../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win32/lib;../3rdparty/bin/win32/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
@ -714,8 +714,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;NDEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;NDEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -734,7 +734,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -766,8 +766,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;NDEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;NDEBUG;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINGUI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -786,7 +786,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -818,8 +818,8 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Con|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINCON;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>./;../;./cursespp;../3rdparty/include;../3rdparty/win32_include;../3rdparty/asio/asio/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;CURL_STATICLIB;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;_WEBSOCKETPP_CPP11_RANDOM_DEVICE_;ASIO_STANDALONE;NDEBUG;_CONSOLE;_SCL_SECURE_NO_WARNINGS;PDCURSES_WINCON;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -838,7 +838,7 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win\font\*.ttf" "$(TargetDir)fonts\" /Y /e
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../boost_1_74_0/lib64-msvc-14.2;../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../3rdparty/bin/win64/lib;../3rdparty/bin/win64/lib/release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
|
@ -52,7 +52,7 @@
|
||||
/* curses defines a timeout() method that causes issues with
|
||||
asio's streambuf. include it up front so work around this */
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/asio/basic_socket_streambuf.hpp>
|
||||
#include <asio/basic_socket_streambuf.hpp>
|
||||
#pragma warning(pop)
|
||||
|
||||
#include <set>
|
||||
@ -62,14 +62,12 @@ asio's streambuf. include it up front so work around this */
|
||||
#include <algorithm>
|
||||
#include <unordered_map>
|
||||
#include <thread>
|
||||
#include <filesystem>
|
||||
|
||||
#include <cmath>
|
||||
#include <string>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/algorithm/string/case_conv.hpp>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <sigslot/sigslot.h>
|
||||
#pragma warning(pop)
|
||||
|
@ -21,9 +21,6 @@
|
||||
#include <musikcore/support/PreferenceKeys.h>
|
||||
#include <musikcore/support/Common.h>
|
||||
|
||||
#include <boost/locale.hpp>
|
||||
#include <boost/filesystem/detail/utf8_codecvt_facet.hpp>
|
||||
|
||||
#include "../musikcore/version.h"
|
||||
|
||||
using namespace musik;
|
||||
@ -264,12 +261,6 @@ static void initForeground() {
|
||||
});
|
||||
}
|
||||
|
||||
static void initUtf8() {
|
||||
std::locale locale = std::locale();
|
||||
std::locale utf8Locale(locale, new boost::filesystem::detail::utf8_codecvt_facet);
|
||||
boost::filesystem::path::imbue(utf8Locale);
|
||||
}
|
||||
|
||||
static void rescanHandler(int signal) {
|
||||
debug::info("daemon", "received SIGUSR1, rescanning the library...");
|
||||
auto library = LibraryFactory::Instance().DefaultLocalLibrary();
|
||||
@ -277,7 +268,6 @@ static void rescanHandler(int signal) {
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
initUtf8();
|
||||
std::cout << "\n using lockfile at: " << getLockfileFn();
|
||||
handleCommandLine(argc, argv);
|
||||
exitIfRunning();
|
||||
|
@ -46,7 +46,7 @@ static musik::core::sdk::IPreferences* prefs;
|
||||
|
||||
#define LOCK(x) \
|
||||
/*std::cerr << "locking " << x << "\n";*/ \
|
||||
boost::recursive_mutex::scoped_lock lock(this->stateMutex); \
|
||||
std::unique_lock<std::recursive_mutex> lock(this->stateMutex); \
|
||||
/*std::cerr << "locked " << x << "\n";*/ \
|
||||
|
||||
#define WAIT() this->threadEvent.wait(lock);
|
||||
@ -143,7 +143,7 @@ AlsaOut::AlsaOut()
|
||||
, latency(0)
|
||||
, initialized(false) {
|
||||
std::cerr << "AlsaOut::AlsaOut() called" << std::endl;
|
||||
this->writeThread.reset(new boost::thread(boost::bind(&AlsaOut::WriteLoop, this)));
|
||||
this->writeThread.reset(new std::thread(std::bind(&AlsaOut::WriteLoop, this)));
|
||||
}
|
||||
|
||||
AlsaOut::~AlsaOut() {
|
||||
|
@ -35,15 +35,15 @@
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
#include <boost/thread/condition.hpp>
|
||||
#include <boost/thread/thread.hpp>
|
||||
|
||||
#include <musikcore/sdk/IOutput.h>
|
||||
#include <musikcore/sdk/IDevice.h>
|
||||
|
||||
#include <boost/thread/recursive_mutex.hpp>
|
||||
#include <boost/thread/condition.hpp>
|
||||
#include <list>
|
||||
#include <vector>
|
||||
#include <mutex>
|
||||
#include <condition_variable>
|
||||
#include <thread>
|
||||
#include <functional>
|
||||
|
||||
class AlsaOut : public musik::core::sdk::IOutput {
|
||||
public:
|
||||
@ -97,10 +97,10 @@ class AlsaOut : public musik::core::sdk::IOutput {
|
||||
double latency;
|
||||
volatile bool quit, paused, initialized;
|
||||
|
||||
std::unique_ptr<boost::thread> writeThread;
|
||||
boost::recursive_mutex stateMutex;
|
||||
boost::condition threadEvent;
|
||||
std::unique_ptr<std::thread> writeThread;
|
||||
std::recursive_mutex stateMutex;
|
||||
std::condition_variable_any threadEvent;
|
||||
std::mutex mutex;
|
||||
|
||||
std::list<std::shared_ptr<BufferContext> > buffers;
|
||||
boost::mutex mutex;
|
||||
};
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "CddaIndexerSource.h"
|
||||
|
||||
#include <musikcore/sdk/IIndexerNotifier.h>
|
||||
#include <musikcore/sdk/String.h>
|
||||
|
||||
#include <curl/curl.h>
|
||||
|
||||
@ -45,10 +46,6 @@
|
||||
#include <set>
|
||||
#include <map>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#pragma warning(pop)
|
||||
|
||||
using namespace musik::core::sdk;
|
||||
|
||||
struct CddbMetadata {
|
||||
@ -179,18 +176,15 @@ static void cddbLookup(const std::string& discId, std::string listQueryParams) {
|
||||
std::string discQueryParams;
|
||||
|
||||
if (result == CURLE_OK) { /* well... we got something back */
|
||||
listResponse = boost::replace_all_copy(listResponse, "\r\n", "\n");
|
||||
listResponse = str::ReplaceAllCopy(listResponse, "\r\n", "\n");
|
||||
|
||||
std::vector<std::string> lines;
|
||||
boost::algorithm::split(lines, listResponse, boost::is_any_of("\n"));
|
||||
std::vector<std::string> lines = str::Split(listResponse, "\n");
|
||||
|
||||
/* just choose the first disc for now. we don't have a way to present a
|
||||
UI to the user, so this is really all we can do. */
|
||||
if (lines.size() >= 1) {
|
||||
if (lines.at(0).find("200") == 0) {
|
||||
std::vector<std::string> parts;
|
||||
boost::algorithm::split(parts, lines.at(0), boost::is_any_of(" "));
|
||||
|
||||
std::vector<std::string> parts = str::Split(lines.at(0), " ");
|
||||
if (parts.size() >= 3) {
|
||||
discQueryParams = "cmd=cddb+read+" + parts[1] + "+" + parts[2] + FREEDB_HELLO;
|
||||
}
|
||||
@ -198,9 +192,7 @@ static void cddbLookup(const std::string& discId, std::string listQueryParams) {
|
||||
/* the first line of the response has a status code. anything
|
||||
in the 200 range is fine. */
|
||||
else if (lines.at(0).find("21") == 0) {
|
||||
std::vector<std::string> parts;
|
||||
boost::algorithm::split(parts, lines.at(1), boost::is_any_of(" "));
|
||||
|
||||
std::vector<std::string> parts = str::Split(lines.at(1), " ");
|
||||
if (parts.size() >= 2) {
|
||||
discQueryParams = "cmd=cddb+read+" + parts[0] + "+" + parts[1] + FREEDB_HELLO;
|
||||
}
|
||||
@ -219,11 +211,8 @@ static void cddbLookup(const std::string& discId, std::string listQueryParams) {
|
||||
curl_easy_cleanup(details);
|
||||
|
||||
if (result == CURLE_OK) {
|
||||
discResponse = boost::replace_all_copy(discResponse, "\r\n", "\n");
|
||||
|
||||
std::vector<std::string> lines;
|
||||
boost::algorithm::split(lines, discResponse, boost::is_any_of("\n"));
|
||||
|
||||
discResponse = str::ReplaceAllCopy(discResponse, "\r\n", "\n");
|
||||
std::vector<std::string> lines = str::Split(discResponse, " ");
|
||||
std::shared_ptr<CddbMetadata> metadata(new CddbMetadata());
|
||||
|
||||
for (auto line : lines) {
|
||||
@ -231,8 +220,8 @@ static void cddbLookup(const std::string& discId, std::string listQueryParams) {
|
||||
if (len) {
|
||||
auto eq = line.find_first_of('=');
|
||||
if (eq != std::string::npos) {
|
||||
std::string key = boost::trim_copy(line.substr(0, eq));
|
||||
std::string value = boost::trim_copy(line.substr(eq + 1));
|
||||
std::string key = str::Trim(line.substr(0, eq));
|
||||
std::string value = str::Trim(line.substr(eq + 1));
|
||||
|
||||
if (key == "DTITLE") {
|
||||
auto slash = value.find_first_of('/');
|
||||
@ -242,8 +231,8 @@ static void cddbLookup(const std::string& discId, std::string listQueryParams) {
|
||||
artist = album = value;
|
||||
}
|
||||
else {
|
||||
artist = boost::trim_copy(value.substr(0, slash));
|
||||
album = boost::trim_copy(value.substr(slash + 1));
|
||||
artist = str::Trim(value.substr(0, slash));
|
||||
album = str::Trim(value.substr(slash + 1));
|
||||
}
|
||||
|
||||
metadata->artist = artist;
|
||||
|
@ -271,7 +271,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
@ -296,7 +296,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
@ -321,7 +321,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Con|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
@ -346,7 +346,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -370,7 +370,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -394,7 +394,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Con|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -417,7 +417,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -443,7 +443,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -469,7 +469,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Con|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -495,7 +495,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -521,7 +521,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -547,7 +547,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Con|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
|
@ -233,7 +233,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
@ -241,7 +241,7 @@
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>avcodec-musikcube.lib;avformat-musikcube.lib;avutil-musikcube.lib;swresample-musikcube.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
@ -254,7 +254,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
@ -262,7 +262,7 @@
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>avcodec-musikcube.lib;avformat-musikcube.lib;avutil-musikcube.lib;swresample-musikcube.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
@ -275,7 +275,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
|
||||
@ -283,7 +283,7 @@
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>avcodec-musikcube.lib;avformat-musikcube.lib;avutil-musikcube.lib;swresample-musikcube.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
@ -296,7 +296,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
@ -316,7 +316,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
@ -336,7 +336,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
@ -358,7 +358,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
@ -372,7 +372,7 @@
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;../../3rdparty/bin/win32/lib</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>avcodec-musikcube.lib;avformat-musikcube.lib;avutil-musikcube.lib;swresample-musikcube.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -390,7 +390,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
@ -404,7 +404,7 @@
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;../../3rdparty/bin/win32/lib</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>avcodec-musikcube.lib;avformat-musikcube.lib;avutil-musikcube.lib;swresample-musikcube.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -422,7 +422,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
@ -436,7 +436,7 @@
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;../../3rdparty/bin/win32/lib</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>avcodec-musikcube.lib;avformat-musikcube.lib;avutil-musikcube.lib;swresample-musikcube.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -454,7 +454,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
@ -478,7 +478,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
@ -502,7 +502,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;3rdparty/win32_include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
|
@ -85,7 +85,7 @@ ScanResult GmeIndexerSource::Scan(
|
||||
this->UpdateMetadata(path, this, indexer);
|
||||
}
|
||||
catch (...) {
|
||||
std::string error = str::format("error reading metadata for %s", path.c_str());
|
||||
std::string error = str::Format("error reading metadata for %s", path.c_str());
|
||||
debug->Error(PLUGIN_NAME, error.c_str());
|
||||
}
|
||||
}
|
||||
@ -159,7 +159,7 @@ void GmeIndexerSource::UpdateMetadata(
|
||||
gme_t* data = nullptr;
|
||||
gme_err_t err = gme_open_file(fn.c_str(), &data, gme_info_only);
|
||||
if (err) {
|
||||
debug->Error(PLUGIN_NAME, str::format("error opening %s", fn.c_str()).c_str());
|
||||
debug->Error(PLUGIN_NAME, str::Format("error opening %s", fn.c_str()).c_str());
|
||||
invalidFiles.insert(fn);
|
||||
}
|
||||
else {
|
||||
@ -174,7 +174,7 @@ void GmeIndexerSource::UpdateMetadata(
|
||||
if (m3u.size()) {
|
||||
err = gme_load_m3u(data, m3u.c_str());
|
||||
if (err) {
|
||||
debug->Error(PLUGIN_NAME, str::format("m3u found, but load failed '%s'", err).c_str());
|
||||
debug->Error(PLUGIN_NAME, str::Format("m3u found, but load failed '%s'", err).c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -201,7 +201,7 @@ void GmeIndexerSource::UpdateMetadata(
|
||||
gme_info_t* info = nullptr;
|
||||
err = gme_track_info(data, &info, i);
|
||||
if (err) {
|
||||
debug->Error(PLUGIN_NAME, str::format("error getting track %d: %s", i, err).c_str());
|
||||
debug->Error(PLUGIN_NAME, str::Format("error getting track %d: %s", i, err).c_str());
|
||||
track->SetValue("duration", defaultDuration.c_str());
|
||||
track->SetValue("title", defaultTitle.c_str());
|
||||
}
|
||||
|
@ -6,5 +6,5 @@ set (httpdatastream_SOURCES
|
||||
|
||||
add_library(httpdatastream SHARED ${httpdatastream_SOURCES})
|
||||
|
||||
target_include_directories(httpdatastream BEFORE PUBLIC ${Boost_INCLUDE_DIRS})
|
||||
target_link_libraries(httpdatastream ${Boost_LIBRARIES} ${LIBCURL})
|
||||
target_include_directories(httpdatastream BEFORE PUBLIC)
|
||||
target_link_libraries(httpdatastream ${LIBCURL})
|
||||
|
@ -40,6 +40,7 @@
|
||||
#include <musikcore/sdk/IEnvironment.h>
|
||||
#include <musikcore/sdk/IPreferences.h>
|
||||
#include <musikcore/sdk/ISchema.h>
|
||||
#include <musikcore/sdk/String.h>
|
||||
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
@ -51,10 +52,6 @@
|
||||
#include <atomic>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
|
||||
/* meh... */
|
||||
#include <../../3rdparty/include/nlohmann/json.hpp>
|
||||
#include <../../3rdparty/include/websocketpp/base64/base64.hpp>
|
||||
#pragma warning(pop)
|
||||
@ -71,7 +68,6 @@
|
||||
|
||||
using namespace std::chrono;
|
||||
using namespace musik::core::sdk;
|
||||
namespace al = boost::algorithm;
|
||||
|
||||
static std::mutex globalMutex;
|
||||
static IEnvironment* environment;
|
||||
@ -120,12 +116,12 @@ extern "C" DLLEXPORT musik::core::sdk::ISchema * GetSchema() {
|
||||
}
|
||||
|
||||
static bool parseHeader(std::string raw, std::string& key, std::string& value) {
|
||||
al::replace_all(raw, "\r\n", "");
|
||||
str::ReplaceAll(raw, "\r\n", "");
|
||||
|
||||
size_t splitAt = raw.find_first_of(":");
|
||||
if (splitAt != std::string::npos) {
|
||||
key = boost::trim_copy(raw.substr(0, splitAt));
|
||||
value = boost::trim_copy(raw.substr(splitAt + 1));
|
||||
key = str::Trim(raw.substr(0, splitAt));
|
||||
value = str::Trim(raw.substr(splitAt + 1));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -36,18 +36,17 @@
|
||||
|
||||
#include "LruDiskCache.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <musikcore/sdk/String.h>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#pragma warning(pop)
|
||||
#include <algorithm>
|
||||
#include <filesystem>
|
||||
#include <chrono>
|
||||
|
||||
const std::string PREFIX = "musikcube";
|
||||
const std::string TEMP_EXTENSION = ".tmp";
|
||||
|
||||
namespace fs = boost::filesystem;
|
||||
namespace al = boost::algorithm;
|
||||
namespace fs = std::filesystem;
|
||||
using namespace musik::core::sdk;
|
||||
|
||||
using Lock = std::unique_lock<std::recursive_mutex>;
|
||||
|
||||
@ -56,27 +55,28 @@ static std::string tempFilename(const std::string& root, size_t id, int64_t inst
|
||||
}
|
||||
|
||||
static std::string finalFilename(const std::string& root, size_t id, std::string type) {
|
||||
al::replace_all(type, "/", "-");
|
||||
str::ReplaceAll(type, "/", "-");
|
||||
return root + "/" + PREFIX + "_" + std::to_string(id) + "_" + type;
|
||||
}
|
||||
|
||||
static bool isTemp(const fs::path& path) {
|
||||
return path.extension().string() == TEMP_EXTENSION;
|
||||
return path.extension().u8string() == TEMP_EXTENSION;
|
||||
}
|
||||
|
||||
static bool isTemp(const std::string& path) {
|
||||
return isTemp(fs::path(path));
|
||||
return isTemp(fs::path(fs::u8path(path)));
|
||||
}
|
||||
|
||||
static time_t touch(const std::string& path) {
|
||||
static std::filesystem::file_time_type touch(const std::string& path) {
|
||||
auto fsPath = fs::u8path(path);
|
||||
try {
|
||||
std::time_t now = time(nullptr);
|
||||
fs::last_write_time(path, now);
|
||||
std::chrono::time_point now = fs::file_time_type::clock::now();
|
||||
fs::last_write_time(fsPath, now);
|
||||
}
|
||||
catch (...) {
|
||||
}
|
||||
|
||||
return fs::last_write_time(path);
|
||||
return fs::last_write_time(fsPath);
|
||||
}
|
||||
|
||||
static bool rm(const std::string& path) {
|
||||
@ -91,7 +91,7 @@ static bool rm(const std::string& path) {
|
||||
}
|
||||
|
||||
static bool rm(const fs::path& p) {
|
||||
return rm(p.string());
|
||||
return rm(p.u8string());
|
||||
}
|
||||
|
||||
LruDiskCache::LruDiskCache()
|
||||
@ -111,9 +111,9 @@ void LruDiskCache::Init(const std::string& root, size_t maxEntries) {
|
||||
this->Purge(); /* always purge partial files on startup */
|
||||
|
||||
/* index all the completed files... */
|
||||
boost::system::error_code ec;
|
||||
std::error_code ec;
|
||||
fs::directory_iterator end;
|
||||
fs::directory_iterator file(this->root, ec);
|
||||
fs::directory_iterator file(fs::u8path(this->root), ec);
|
||||
|
||||
while (file != end) {
|
||||
if (!is_directory(file->status())) {
|
||||
@ -134,9 +134,9 @@ void LruDiskCache::Init(const std::string& root, size_t maxEntries) {
|
||||
void LruDiskCache::Purge() {
|
||||
Lock lock(stateMutex);
|
||||
|
||||
boost::system::error_code ec;
|
||||
std::error_code ec;
|
||||
fs::directory_iterator end;
|
||||
fs::directory_iterator file(this->root, ec);
|
||||
fs::directory_iterator file(fs::u8path(this->root), ec);
|
||||
|
||||
while (file != end) {
|
||||
if (!is_directory(file->status())) {
|
||||
@ -149,17 +149,16 @@ void LruDiskCache::Purge() {
|
||||
}
|
||||
|
||||
LruDiskCache::EntryPtr LruDiskCache::Parse(const fs::path& path) {
|
||||
std::string fn = path.stem().string() + path.extension().string();
|
||||
std::vector<std::string> parts;
|
||||
boost::split(parts, fn, boost::is_any_of("_"));
|
||||
std::string fn = path.stem().u8string() + path.extension().u8string();
|
||||
std::vector<std::string> parts = str::Split(fn, "_");
|
||||
if (parts.size() == 3 && parts[0] == PREFIX) {
|
||||
try {
|
||||
auto entry = std::shared_ptr<Entry>(new Entry());
|
||||
entry->id = std::stoull(parts[1].c_str());
|
||||
entry->path = path.string();
|
||||
entry->path = path.u8string();
|
||||
entry->type = parts[2];
|
||||
entry->time = fs::last_write_time(path);
|
||||
al::replace_all(entry->type, "-", "/");
|
||||
str::ReplaceAll(entry->type, "-", "/");
|
||||
return entry;
|
||||
}
|
||||
catch (...) {
|
||||
@ -249,10 +248,10 @@ FILE* LruDiskCache::Open(size_t id, int64_t instanceId, const std::string& mode,
|
||||
}
|
||||
|
||||
/* ensure the cache directory exists */
|
||||
boost::system::error_code ec;
|
||||
boost::filesystem::path p(this->root);
|
||||
if (!boost::filesystem::exists(p)) {
|
||||
boost::filesystem::create_directories(p, ec);
|
||||
std::error_code ec;
|
||||
fs::path p(fs::u8path(this->root));
|
||||
if (!fs::exists(p)) {
|
||||
fs::create_directories(p, ec);
|
||||
}
|
||||
|
||||
/* open the file and return it regardless of cache status. */
|
||||
@ -308,8 +307,8 @@ void LruDiskCache::Touch(size_t id) {
|
||||
if (it != end) {
|
||||
auto e = (*it);
|
||||
fs::path p(e->path);
|
||||
if (boost::filesystem::exists(p)) {
|
||||
e->time = touch(p.string());
|
||||
if (fs::exists(p)) {
|
||||
e->time = touch(p.u8string());
|
||||
this->SortAndPrune();
|
||||
return;
|
||||
}
|
||||
|
@ -38,10 +38,7 @@
|
||||
#include <memory>
|
||||
#include <ctime>
|
||||
#include <cstdint>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/filesystem.hpp>
|
||||
#pragma warning(pop)
|
||||
#include <filesystem>
|
||||
|
||||
class LruDiskCache {
|
||||
public:
|
||||
@ -63,7 +60,7 @@ class LruDiskCache {
|
||||
uint64_t id;
|
||||
std::string path;
|
||||
std::string type;
|
||||
std::time_t time;
|
||||
std::filesystem::file_time_type time;
|
||||
};
|
||||
|
||||
using EntryPtr = std::shared_ptr<Entry>;
|
||||
@ -71,7 +68,7 @@ class LruDiskCache {
|
||||
|
||||
void SortAndPrune();
|
||||
|
||||
static std::shared_ptr<Entry> Parse(const boost::filesystem::path& path);
|
||||
static std::shared_ptr<Entry> Parse(const std::filesystem::path& path);
|
||||
|
||||
std::recursive_mutex stateMutex;
|
||||
|
||||
|
@ -247,7 +247,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
@ -264,7 +264,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;../../../../boost_1_74_0/lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
@ -272,7 +272,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
@ -289,7 +289,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;../../../../boost_1_74_0/lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
@ -297,7 +297,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Con|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
@ -314,7 +314,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;../../../../boost_1_74_0/lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
@ -322,7 +322,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -338,7 +338,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win64/lib;../../../../boost_1_74_0/lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
@ -346,7 +346,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -362,7 +362,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win64/lib;../../../../boost_1_74_0/lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
@ -370,7 +370,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Con|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
@ -386,14 +386,14 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win64/lib;../../../../boost_1_74_0/lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -413,13 +413,13 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;../../../../boost_1_74_0/lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -439,13 +439,13 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;../../../../boost_1_74_0/lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Con|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -465,13 +465,13 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;../../../../boost_1_74_0/lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -491,13 +491,13 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win64/lib;../../../../boost_1_74_0/lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -517,13 +517,13 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win64/lib;../../../../boost_1_74_0/lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Con|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include;../../3rdparty/win32_include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -543,7 +543,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>shlwapi.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win64/lib;../../../../boost_1_74_0/lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
@ -39,11 +39,6 @@
|
||||
#include <musikcore/sdk/constants.h>
|
||||
#include <musikcore/sdk/IPlugin.h>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/filesystem/detail/utf8_codecvt_facet.hpp>
|
||||
#pragma warning(pop)
|
||||
|
||||
#ifdef WIN32
|
||||
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
|
||||
return true;
|
||||
@ -56,13 +51,6 @@
|
||||
|
||||
static class HttpDataStreamPlugin : public musik::core::sdk::IPlugin {
|
||||
public:
|
||||
HttpDataStreamPlugin() {
|
||||
/* enable utf8 filesystem (required in windows, maybe not macos/linux */
|
||||
std::locale locale = std::locale();
|
||||
std::locale utf8Locale(locale, new boost::filesystem::detail::utf8_codecvt_facet);
|
||||
boost::filesystem::path::imbue(utf8Locale);
|
||||
}
|
||||
|
||||
virtual void Release() { };
|
||||
virtual const char* Name() { return "HTTP IDataStream"; }
|
||||
virtual const char* Version() { return "0.1.0"; }
|
||||
|
@ -93,7 +93,7 @@ ScanResult OpenMptIndexerSource::Scan(
|
||||
this->UpdateMetadata(path, this, indexer);
|
||||
}
|
||||
catch (...) {
|
||||
std::string error = str::format("error reading metadata for %s", path.c_str());
|
||||
std::string error = str::Format("error reading metadata for %s", path.c_str());
|
||||
debug->Error(PLUGIN_NAME.c_str(), error.c_str());
|
||||
}
|
||||
}
|
||||
@ -161,7 +161,7 @@ static std::string formatDefaultValue(const char* key, const char* defaultValue,
|
||||
prefs->GetString(key, threadLocalBuffer, 4096, defaultValue);
|
||||
std::string value(threadLocalBuffer);
|
||||
threadLocalBuffer[0] = 0;
|
||||
return str::format(value, type.c_str());
|
||||
return str::Format(value, type.c_str());
|
||||
}
|
||||
|
||||
void OpenMptIndexerSource::UpdateMetadata(
|
||||
@ -184,7 +184,7 @@ void OpenMptIndexerSource::UpdateMetadata(
|
||||
nullptr, nullptr, nullptr, nullptr, nullptr);
|
||||
|
||||
if (!module) {
|
||||
debug->Error(PLUGIN_NAME.c_str(), str::format("error opening %s", fn.c_str()).c_str());
|
||||
debug->Error(PLUGIN_NAME.c_str(), str::Format("error opening %s", fn.c_str()).c_str());
|
||||
invalidFiles.insert(fn);
|
||||
}
|
||||
else {
|
||||
|
@ -85,7 +85,7 @@ static std::string getDeviceId() {
|
||||
}
|
||||
|
||||
void PipeWireOut::OnStreamStateChanged(void* data, enum pw_stream_state old, enum pw_stream_state state, const char* error) {
|
||||
::debug->Info(TAG, str::format("state changed from %d to %d. (%s)", old, state, error ? error : "no additional context").c_str());
|
||||
::debug->Info(TAG, str::Format("state changed from %d to %d. (%s)", old, state, error ? error : "no additional context").c_str());
|
||||
}
|
||||
|
||||
void PipeWireOut::OnCoreDone(void* userdata, uint32_t id, int seq) {
|
||||
@ -119,7 +119,7 @@ void PipeWireOut::OnRegistryGlobal(void *userdata, uint32_t id, uint32_t permiss
|
||||
}
|
||||
pw_properties_free(dict);
|
||||
}
|
||||
::debug->Info(TAG, str::format("detected PipeWire:Interface:Device with id=%d", id).c_str());
|
||||
::debug->Info(TAG, str::Format("detected PipeWire:Interface:Device with id=%d", id).c_str());
|
||||
context->instance->deviceList.Add(std::to_string(id), formattedName);
|
||||
}
|
||||
}
|
||||
@ -337,7 +337,7 @@ bool PipeWireOut::StartPipeWire(IBuffer* buffer) {
|
||||
int result;
|
||||
|
||||
if ((result = pw_thread_loop_start(this->pwThreadLoop)) != 0) {
|
||||
::debug->Error(TAG, str::format("error starting thread loop: %s", spa_strerror(result)).c_str());
|
||||
::debug->Error(TAG, str::Format("error starting thread loop: %s", spa_strerror(result)).c_str());
|
||||
goto cleanup;
|
||||
};
|
||||
|
||||
@ -371,7 +371,7 @@ bool PipeWireOut::StartPipeWire(IBuffer* buffer) {
|
||||
params[0] = spa_format_audio_raw_build(&builder, SPA_PARAM_EnumFormat, &audioInfo);
|
||||
|
||||
if (!params[0]) {
|
||||
::debug->Error(TAG, str::format(
|
||||
::debug->Error(TAG, str::Format(
|
||||
"failed to create audio format. channels=%d, rate=%d",
|
||||
this->channelCount,
|
||||
this->sampleRate).c_str());
|
||||
@ -408,7 +408,7 @@ bool PipeWireOut::StartPipeWire(IBuffer* buffer) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
::debug->Error(TAG, str::format(
|
||||
::debug->Error(TAG, str::Format(
|
||||
"error starting stream: %s",
|
||||
spa_strerror(result)).c_str());
|
||||
}
|
||||
|
@ -39,6 +39,7 @@
|
||||
#include <pulse/pulseaudio.h>
|
||||
#include <pulse/thread-mainloop.h>
|
||||
#include <math.h>
|
||||
#include <vector>
|
||||
|
||||
using namespace musik::core::sdk;
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
#include "BlockingTranscoder.h"
|
||||
#include "Util.h"
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <filesystem>
|
||||
#include <algorithm>
|
||||
#include <atomic>
|
||||
|
||||
@ -43,6 +43,10 @@
|
||||
|
||||
static std::atomic<int> activeCount(0);
|
||||
|
||||
namespace std {
|
||||
namespace fs = std::filesystem;
|
||||
}
|
||||
|
||||
using namespace musik::core::sdk;
|
||||
|
||||
BlockingTranscoder::BlockingTranscoder(
|
||||
@ -116,10 +120,15 @@ bool BlockingTranscoder::Transcode() {
|
||||
this->encoder->Finalize();
|
||||
this->output->Release();
|
||||
this->output = nullptr;
|
||||
boost::system::error_code ec;
|
||||
boost::filesystem::rename(this->tempFilename, this->finalFilename, ec);
|
||||
std::error_code ec;
|
||||
std::fs::rename(
|
||||
std::fs::u8path(this->tempFilename),
|
||||
std::fs::u8path(this->finalFilename),
|
||||
ec);
|
||||
if (ec) {
|
||||
boost::filesystem::remove(this->tempFilename, ec);
|
||||
std::fs::remove(
|
||||
std::fs::u8path(this->tempFilename),
|
||||
ec);
|
||||
}
|
||||
else {
|
||||
result = true;
|
||||
@ -134,8 +143,8 @@ bool BlockingTranscoder::Transcode() {
|
||||
this->Cleanup();
|
||||
|
||||
if (!result) {
|
||||
boost::system::error_code ec;
|
||||
boost::filesystem::remove(this->tempFilename, ec);
|
||||
std::error_code ec;
|
||||
std::fs::remove(std::fs::u8path(this->tempFilename), ec);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -26,4 +26,4 @@ endif()
|
||||
find_library(LIBZ NAMES z)
|
||||
message(STATUS "[server] using " ${LIBMICROHTTPD} ", " ${LIBZ})
|
||||
|
||||
target_link_libraries(server ${Boost_LIBRARIES} ${LIBZ} ${LIBMICROHTTPD} ${EXTRA_LIBS})
|
||||
target_link_libraries(server ${LIBZ} ${LIBMICROHTTPD} ${EXTRA_LIBS})
|
||||
|
@ -35,6 +35,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include "Util.h"
|
||||
|
||||
//#define ENABLE_DEBUG 1
|
||||
@ -222,26 +223,26 @@ namespace broadcast {
|
||||
static const std::string play_queue_changed = "play_queue_changed";
|
||||
}
|
||||
|
||||
static auto PLAYBACK_STATE_TO_STRING = makeBimap<musik::core::sdk::PlaybackState, std::string>({
|
||||
static auto PLAYBACK_STATE_TO_STRING = std::unordered_map<musik::core::sdk::PlaybackState, std::string>({
|
||||
{ musik::core::sdk::PlaybackState::Stopped, "stopped" },
|
||||
{ musik::core::sdk::PlaybackState::Playing, "playing" },
|
||||
{ musik::core::sdk::PlaybackState::Prepared, "prepared" },
|
||||
{ musik::core::sdk::PlaybackState::Paused, "paused" }
|
||||
});
|
||||
|
||||
static auto REPEAT_MODE_TO_STRING = makeBimap<musik::core::sdk::RepeatMode, std::string>({
|
||||
static auto REPEAT_MODE_TO_STRING = std::unordered_map<musik::core::sdk::RepeatMode, std::string>({
|
||||
{ musik::core::sdk::RepeatMode::None, "none" },
|
||||
{ musik::core::sdk::RepeatMode::Track, "track" },
|
||||
{ musik::core::sdk::RepeatMode::List, "list" }
|
||||
});
|
||||
|
||||
static auto REPLAYGAIN_MODE_TO_STRING = makeBimap<musik::core::sdk::ReplayGainMode, std::string>({
|
||||
static auto REPLAYGAIN_MODE_TO_STRING = std::unordered_map<musik::core::sdk::ReplayGainMode, std::string>({
|
||||
{ musik::core::sdk::ReplayGainMode::Disabled, "disabled" },
|
||||
{ musik::core::sdk::ReplayGainMode::Album, "album" },
|
||||
{ musik::core::sdk::ReplayGainMode::Track, "track" },
|
||||
});
|
||||
|
||||
static auto TRANSPORT_TYPE_TO_STRING = makeBimap<musik::core::sdk::TransportType, std::string>({
|
||||
static auto TRANSPORT_TYPE_TO_STRING = std::unordered_map<musik::core::sdk::TransportType, std::string>({
|
||||
{ musik::core::sdk::TransportType::Gapless, "gapless" },
|
||||
{ musik::core::sdk::TransportType::Crossfade, "crossfade" },
|
||||
});
|
||||
|
@ -40,15 +40,13 @@
|
||||
#include <musikcore/sdk/IEnvironment.h>
|
||||
#include <musikcore/sdk/IDebug.h>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/thread/shared_mutex.hpp>
|
||||
#include <boost/thread/locks.hpp>
|
||||
#pragma warning(pop)
|
||||
#include <shared_mutex>
|
||||
#include <mutex>
|
||||
|
||||
class ReadWriteLock {
|
||||
typedef boost::shared_mutex Mutex;
|
||||
typedef boost::unique_lock<Mutex> WriteLock;
|
||||
typedef boost::shared_lock<Mutex> ReadLock;
|
||||
typedef std::shared_mutex Mutex;
|
||||
typedef std::unique_lock<Mutex> WriteLock;
|
||||
typedef std::shared_lock<Mutex> ReadLock;
|
||||
|
||||
public:
|
||||
WriteLock Write() {
|
||||
|
@ -42,14 +42,13 @@
|
||||
#include <musikcore/sdk/String.h>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <websocketpp/base64/base64.hpp>
|
||||
#pragma warning(pop, 0)
|
||||
|
||||
#include <unordered_map>
|
||||
#include <string>
|
||||
#include <cstdlib>
|
||||
#include <filesystem>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
@ -66,6 +65,10 @@
|
||||
static const char* ENVIRONMENT_DISABLE_HTTP_SERVER_AUTH = "MUSIKCUBE_DISABLE_HTTP_SERVER_AUTH";
|
||||
static const char* TAG = "HttpServer";
|
||||
|
||||
namespace std {
|
||||
namespace fs = std::filesystem;
|
||||
}
|
||||
|
||||
using namespace musik::core::sdk;
|
||||
|
||||
std::unordered_map<std::string, std::string> CONTENT_TYPE_MAP = {
|
||||
@ -100,10 +103,8 @@ struct Range {
|
||||
|
||||
static std::string contentType(const std::string& fn) {
|
||||
try {
|
||||
boost::filesystem::path p(fn);
|
||||
std::string ext = boost::trim_copy(p.extension().string());
|
||||
boost::to_lower(ext);
|
||||
|
||||
std::fs::path p(std::fs::u8path(fn));
|
||||
std::string ext = str::ToLowerCopy(str::Trim(p.extension().u8string()));
|
||||
auto it = CONTENT_TYPE_MAP.find(ext);
|
||||
if (it != CONTENT_TYPE_MAP.end()) {
|
||||
return it->second;
|
||||
@ -117,10 +118,9 @@ static std::string contentType(const std::string& fn) {
|
||||
|
||||
static std::string fileExtension(const std::string& fn) {
|
||||
try {
|
||||
boost::filesystem::path p(fn);
|
||||
std::string ext = boost::trim_copy(p.extension().string());
|
||||
std::fs::path p(std::fs::u8path(fn));
|
||||
std::string ext = str::ToLowerCopy(str::Trim(p.extension().u8string()));
|
||||
if (ext.size()) {
|
||||
boost::to_lower(ext);
|
||||
return ext[0] == '.' ? ext.substr(1) : ext;
|
||||
}
|
||||
}
|
||||
@ -177,17 +177,14 @@ static Range* parseRange(IDataStream* file, const char* range) {
|
||||
|
||||
if (str.substr(0, 6) == "bytes=") {
|
||||
str = str.substr(6);
|
||||
|
||||
std::vector<std::string> parts;
|
||||
boost::split(parts, str, boost::is_any_of("-"));
|
||||
|
||||
std::vector<std::string> parts = str::Split(str, "-");
|
||||
if (parts.size() == 2) {
|
||||
try {
|
||||
size_t from = (size_t) std::max(0, std::stoi(boost::algorithm::trim_copy(parts[0])));
|
||||
size_t from = (size_t) std::max(0, std::stoi(str::Trim(parts[0])));
|
||||
size_t to = size;
|
||||
|
||||
if (parts.at(1).size()) {
|
||||
to = (size_t) std::min((int) size, std::stoi(boost::algorithm::trim_copy(parts[1])));
|
||||
to = (size_t) std::min((int) size, std::stoi(str::Trim(parts[1])));
|
||||
}
|
||||
|
||||
if (to > from) {
|
||||
@ -265,10 +262,7 @@ static bool isAuthenticated(MHD_Connection *connection, Context& context) {
|
||||
std::string encoded = auth.substr(6);
|
||||
if (encoded.size()) {
|
||||
std::string decoded = websocketpp::base64_decode(encoded);
|
||||
|
||||
std::vector<std::string> userPass;
|
||||
boost::split(userPass, decoded, boost::is_any_of(":"));
|
||||
|
||||
std::vector<std::string> userPass = str::Split(decoded, ":");
|
||||
if (userPass.size() == 2) {
|
||||
std::string password = GetPreferenceString(context.prefs, key::password, defaults::password);
|
||||
return userPass[0] == "default" && userPass[1] == password;
|
||||
@ -368,7 +362,7 @@ MHD_Result HttpServer::HandleRequest(
|
||||
auto server = static_cast<HttpServer*>(cls);
|
||||
|
||||
#ifdef ENABLE_DEBUG
|
||||
server->context.debug->Info(TAG, str::format("new request: %s", url).c_str());
|
||||
server->context.debug->Info(TAG, str::Format("new request: %s", url).c_str());
|
||||
#endif
|
||||
|
||||
struct MHD_Response* response = nullptr;
|
||||
@ -393,8 +387,7 @@ MHD_Result HttpServer::HandleRequest(
|
||||
urlStr = urlStr.substr(1);
|
||||
}
|
||||
|
||||
std::vector<std::string> parts;
|
||||
boost::split(parts, urlStr, boost::is_any_of("/"));
|
||||
std::vector<std::string> parts = str::Split(urlStr, "/");
|
||||
if (parts.size() > 0) {
|
||||
/* /audio/id/<id> OR /audio/external_id/<external_id> */
|
||||
if (parts.at(0) == fragment::audio && parts.size() == 3) {
|
||||
@ -413,7 +406,7 @@ MHD_Result HttpServer::HandleRequest(
|
||||
|
||||
if (response) {
|
||||
#ifdef ENABLE_DEBUG
|
||||
server->context.debug->Info(TAG, str::format("return http %d", status).c_str());
|
||||
server->context.debug->Info(TAG, str::Format("return http %d", status).c_str());
|
||||
#endif
|
||||
|
||||
ret = MHD_queue_response(connection, status, response);
|
||||
@ -480,7 +473,7 @@ int HttpServer::HandleAudioTrackRequest(
|
||||
bool isOnDemandTranscoder = !!dynamic_cast<TranscodingAudioDataStream*>(file);
|
||||
|
||||
#ifdef ENABLE_DEBUG
|
||||
server->context.debug->Info(TAG, str::format(
|
||||
server->context.debug->Info(TAG, str::Format(
|
||||
"range request: %s, resolved range: %s, isOnDemandTranscoder=%s",
|
||||
rangeVal ? rangeVal : "[unspecified]",
|
||||
range ? range->HeaderValue().c_str() : "[unresolved]",
|
||||
@ -543,7 +536,7 @@ int HttpServer::HandleAudioTrackRequest(
|
||||
&fileFreeCallback);
|
||||
|
||||
#ifdef ENABLE_DEBUG
|
||||
server->context.debug->Info(TAG, str::format("response length=%d", ((length == 0) ? 0 : length + 1)).c_str());
|
||||
server->context.debug->Info(TAG, str::Format("response length=%d", ((length == 0) ? 0 : length + 1)).c_str());
|
||||
#endif
|
||||
|
||||
if (response) {
|
||||
@ -555,7 +548,7 @@ int HttpServer::HandleAudioTrackRequest(
|
||||
if (!isOnDemandTranscoder) {
|
||||
MHD_add_response_header(response, "Accept-Ranges", "bytes");
|
||||
|
||||
if (boost::filesystem::exists(title)) {
|
||||
if (std::fs::exists(std::fs::u8path(filename))) {
|
||||
MHD_add_response_header(response, "X-musikcube-Filename-Override", externalId.c_str());
|
||||
}
|
||||
}
|
||||
@ -587,7 +580,7 @@ int HttpServer::HandleAudioTrackRequest(
|
||||
status = MHD_HTTP_PARTIAL_CONTENT;
|
||||
#ifdef ENABLE_DEBUG
|
||||
if (rangeVal) {
|
||||
server->context.debug->Info(TAG, str::format("range header: %s", range->HeaderValue().c_str()).c_str());
|
||||
server->context.debug->Info(TAG, str::Format("range header: %s", range->HeaderValue().c_str()).c_str());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -41,13 +41,15 @@
|
||||
|
||||
#include <thread>
|
||||
#include <set>
|
||||
#include <map>
|
||||
#include <filesystem>
|
||||
#include <functional>
|
||||
#include <chrono>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/filesystem.hpp>
|
||||
#pragma warning(pop)
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
using namespace std::chrono;
|
||||
using namespace musik::core::sdk;
|
||||
using namespace boost::filesystem;
|
||||
|
||||
std::mutex transcoderMutex;
|
||||
std::condition_variable waitForTranscode;
|
||||
@ -71,23 +73,43 @@ static T* getTypedEncoder(Context& context, const std::string& format) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static size_t lastWriteTime(const fs::path& path) {
|
||||
std::error_code ec;
|
||||
return (size_t)duration_cast<milliseconds>(
|
||||
std::filesystem::last_write_time(path, ec).time_since_epoch()).count();
|
||||
}
|
||||
|
||||
static size_t lastWriteTime(const std::string& path) {
|
||||
return lastWriteTime(fs::u8path(path));
|
||||
}
|
||||
|
||||
static std::filesystem::file_time_type touch(const std::string& path) {
|
||||
auto fsPath = fs::u8path(path);
|
||||
try {
|
||||
std::chrono::time_point now = fs::file_time_type::clock::now();
|
||||
fs::last_write_time(fsPath, now);
|
||||
}
|
||||
catch (...) {
|
||||
}
|
||||
|
||||
return fs::last_write_time(fsPath);
|
||||
}
|
||||
|
||||
static std::string cachePath(Context& context) {
|
||||
char buf[4096];
|
||||
context.environment->GetPath(PathType::Data, buf, sizeof(buf));
|
||||
std::string path = std::string(buf) + "/cache/transcoder/";
|
||||
boost::filesystem::path boostPath(path);
|
||||
if (!exists(boostPath)) {
|
||||
create_directories(boostPath);
|
||||
fs::path fsPath(fs::u8path(path));
|
||||
if (!fs::exists(fsPath)) {
|
||||
fs::create_directories(fsPath);
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
static void iterateTranscodeCache(Context& context, std::function<void(path)> cb) {
|
||||
static void iterateTranscodeCache(Context& context, std::function<void(fs::path)> cb) {
|
||||
if (cb) {
|
||||
directory_iterator end;
|
||||
directory_iterator file(cachePath(context));
|
||||
|
||||
fs::directory_iterator end;
|
||||
fs::directory_iterator file(fs::u8path(cachePath(context)));
|
||||
while (file != end) {
|
||||
if (!is_directory(file->status())) {
|
||||
cb(file->path());
|
||||
@ -98,20 +120,19 @@ static void iterateTranscodeCache(Context& context, std::function<void(path)> cb
|
||||
}
|
||||
|
||||
void Transcoder::RemoveTempTranscodeFiles(Context& context) {
|
||||
iterateTranscodeCache(context, [](path p) {
|
||||
if (p.extension().string() == ".tmp") {
|
||||
boost::system::error_code ec;
|
||||
remove(p, ec);
|
||||
iterateTranscodeCache(context, [](fs::path p) {
|
||||
if (p.extension().u8string() == ".tmp") {
|
||||
std::error_code ec;
|
||||
fs::remove(p, ec);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void Transcoder::PruneTranscodeCache(Context& context) {
|
||||
std::map<time_t, path> sorted;
|
||||
std::map<time_t, fs::path> sorted;
|
||||
|
||||
boost::system::error_code ec;
|
||||
iterateTranscodeCache(context, [&sorted, &ec](path p) {
|
||||
sorted[last_write_time(p, ec)] = p;
|
||||
iterateTranscodeCache(context, [&sorted](fs::path p) {
|
||||
sorted[lastWriteTime(p)] = p;
|
||||
});
|
||||
|
||||
int maxSize = context.prefs->GetInt(
|
||||
@ -122,8 +143,8 @@ void Transcoder::PruneTranscodeCache(Context& context) {
|
||||
auto it = sorted.begin();
|
||||
while (extra > 0 && it != sorted.end()) {
|
||||
auto p = it->second;
|
||||
boost::system::error_code ec;
|
||||
if (remove(p, ec)) {
|
||||
std::error_code ec;
|
||||
if (fs::remove(p, ec)) {
|
||||
--extra;
|
||||
}
|
||||
++it;
|
||||
@ -146,7 +167,7 @@ static void getTempAndFinalFilename(
|
||||
|
||||
do {
|
||||
tempFn = finalFn + "." + std::to_string(rand()) + ".tmp";
|
||||
} while (exists(tempFn));
|
||||
} while (fs::exists(fs::u8path(tempFn)));
|
||||
}
|
||||
|
||||
IDataStream* Transcoder::Transcode(
|
||||
@ -192,9 +213,8 @@ IDataStream* Transcoder::TranscodeOnDemand(
|
||||
std::string expectedFilename, tempFilename;
|
||||
getTempAndFinalFilename(context, uri, bitrate, format, tempFilename, expectedFilename);
|
||||
|
||||
if (exists(expectedFilename)) {
|
||||
boost::system::error_code ec;
|
||||
last_write_time(expectedFilename, time(nullptr), ec);
|
||||
if (fs::exists(fs::u8path(expectedFilename))) {
|
||||
touch(expectedFilename);
|
||||
return context.environment->GetDataStream(expectedFilename.c_str(), OpenFlags::Read);
|
||||
}
|
||||
|
||||
@ -211,7 +231,7 @@ IDataStream* Transcoder::TranscodeOnDemand(
|
||||
transcoderStream = new TranscodingAudioDataStream(
|
||||
context, encoder, uri, tempFilename, expectedFilename, bitrate, format);
|
||||
|
||||
/* if the stream has an indeterminite length, close it down and
|
||||
/* if the stream has an indeterminate length, close it down and
|
||||
re-open it without caching options; we don't want to fill up
|
||||
the storage disk */
|
||||
if (transcoderStream->Length() < 0) {
|
||||
@ -247,9 +267,8 @@ IDataStream* Transcoder::TranscodeAndWait(
|
||||
getTempAndFinalFilename(context, uri, bitrate, format, tempFilename, expectedFilename);
|
||||
|
||||
/* already exists? */
|
||||
if (exists(expectedFilename)) {
|
||||
boost::system::error_code ec;
|
||||
last_write_time(expectedFilename, time(nullptr), ec);
|
||||
if (fs::exists(fs::u8path(expectedFilename))) {
|
||||
touch(expectedFilename);
|
||||
return context.environment->GetDataStream(expectedFilename.c_str(), OpenFlags::Read);
|
||||
}
|
||||
|
||||
|
@ -36,16 +36,15 @@
|
||||
#include "Util.h"
|
||||
#include <algorithm>
|
||||
#include <atomic>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/filesystem.hpp>
|
||||
#pragma warning(pop)
|
||||
#include <filesystem>
|
||||
|
||||
#define BUFFER_SIZE 8192
|
||||
#define SAMPLES_PER_BUFFER BUFFER_SIZE / 4 /* sizeof(float) */
|
||||
|
||||
static std::atomic<int> activeCount(0);
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
using PositionType = TranscodingAudioDataStream::PositionType;
|
||||
|
||||
TranscodingAudioDataStream::TranscodingAudioDataStream(
|
||||
@ -138,8 +137,8 @@ bool TranscodingAudioDataStream::Close() {
|
||||
/* incomplete, delete... */
|
||||
fclose(this->outFile);
|
||||
this->outFile = nullptr;
|
||||
boost::system::error_code ec;
|
||||
boost::filesystem::remove(this->tempFilename, ec);
|
||||
std::error_code ec;
|
||||
fs::remove(fs::u8path(this->tempFilename), ec);
|
||||
}
|
||||
|
||||
Dispose();
|
||||
@ -173,8 +172,8 @@ void TranscodingAudioDataStream::Dispose() {
|
||||
if (this->outFile) {
|
||||
fclose(this->outFile);
|
||||
this->outFile = nullptr;
|
||||
boost::system::error_code ec;
|
||||
boost::filesystem::remove(this->tempFilename, ec);
|
||||
std::error_code ec;
|
||||
fs::remove(fs::u8path(this->tempFilename), ec);
|
||||
}
|
||||
|
||||
delete this;
|
||||
@ -297,10 +296,13 @@ PositionType TranscodingAudioDataStream::Read(void *buffer, PositionType bytesTo
|
||||
|
||||
this->encoder->Finalize(this->tempFilename.c_str());
|
||||
|
||||
boost::system::error_code ec;
|
||||
boost::filesystem::rename(this->tempFilename, this->finalFilename, ec);
|
||||
std::error_code ec;
|
||||
fs::rename(
|
||||
fs::u8path(this->tempFilename),
|
||||
fs::u8path(this->finalFilename),
|
||||
ec);
|
||||
if (ec) {
|
||||
boost::filesystem::remove(this->tempFilename, ec);
|
||||
fs::remove(fs::u8path(this->tempFilename), ec);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -316,8 +318,8 @@ internal_error:
|
||||
this->eof = true;
|
||||
fclose(this->outFile);
|
||||
this->outFile = nullptr;
|
||||
boost::system::error_code ec;
|
||||
boost::filesystem::remove(this->tempFilename, ec);
|
||||
std::error_code ec;
|
||||
fs::remove(fs::u8path(this->tempFilename), ec);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -35,10 +35,8 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/bimap.hpp>
|
||||
#pragma warning(pop)
|
||||
#include <algorithm>
|
||||
#include <unordered_map>
|
||||
|
||||
#include <musikcore/sdk/IPreferences.h>
|
||||
#include <musikcore/sdk/IValue.h>
|
||||
@ -53,11 +51,12 @@ extern __thread char threadLocalBuffer[4096];
|
||||
extern thread_local char threadLocalBuffer[4096];
|
||||
#endif
|
||||
|
||||
template <typename L, typename R>
|
||||
boost::bimap<L, R>
|
||||
static makeBimap(std::initializer_list<typename boost::bimap<L, R>::value_type> list) {
|
||||
/* http://stackoverflow.com/a/31841462 */
|
||||
return boost::bimap<L, R>(list.begin(), list.end());
|
||||
template <typename K, typename V>
|
||||
typename std::unordered_map<K, V>::const_iterator
|
||||
static FindKeyByValue(const std::unordered_map<K, V>& map, const V& value) {
|
||||
return std::find_if(map.begin(), map.end(), [&value](const std::pair<K, V> &p) {
|
||||
return p.second == value;
|
||||
});
|
||||
}
|
||||
|
||||
static std::string GetPreferenceString(
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include "Constants.h"
|
||||
|
||||
#include <musikcore/sdk/constants.h>
|
||||
#include <musikcore/sdk/String.h>
|
||||
|
||||
using websocketpp::lib::placeholders::_1;
|
||||
using websocketpp::lib::placeholders::_2;
|
||||
@ -49,19 +50,8 @@ static const char* TAG = "WebSocketServer";
|
||||
|
||||
/* UTILITY METHODS */
|
||||
|
||||
namespace str {
|
||||
template<typename... Args>
|
||||
static std::string format(const std::string& format, Args ... args) {
|
||||
/* https://stackoverflow.com/a/26221725 */
|
||||
size_t size = std::snprintf(nullptr, 0, format.c_str(), args ...) + 1; /* extra space for '\0' */
|
||||
std::unique_ptr<char[]> buf(new char[size]);
|
||||
std::snprintf(buf.get(), size, format.c_str(), args ...);
|
||||
return std::string(buf.get(), buf.get() + size - 1); /* omit the '\0' */
|
||||
}
|
||||
}
|
||||
|
||||
static std::string nextMessageId() {
|
||||
return str::format("musikcube-server-%d", ++nextId);
|
||||
return str::Format("musikcube-server-%d", ++nextId);
|
||||
}
|
||||
|
||||
static std::shared_ptr<char*> jsonToStringArray(const json& jsonArray) {
|
||||
@ -194,10 +184,10 @@ void WebSocketServer::ThreadProc() {
|
||||
wss->run();
|
||||
}
|
||||
catch (websocketpp::exception const & e) {
|
||||
this->context.debug->Error(TAG, str::format("[ThreadProc] websocketpp::exception: %s", e.what()).c_str());
|
||||
this->context.debug->Error(TAG, str::Format("[ThreadProc] websocketpp::exception: %s", e.what()).c_str());
|
||||
}
|
||||
catch (std::exception& e) {
|
||||
this->context.debug->Error(TAG, str::format("[ThreadProc] sttd::exception: %s", e.what()).c_str());
|
||||
this->context.debug->Error(TAG, str::Format("[ThreadProc] sttd::exception: %s", e.what()).c_str());
|
||||
}
|
||||
catch (...) {
|
||||
this->context.debug->Error(TAG, "[ThreadProc] unknown/unexpected exception");
|
||||
@ -1427,7 +1417,7 @@ void WebSocketServer::RespondWithGetGainSettings(connection_hdl connection, json
|
||||
float preampGain = context.environment->GetPreampGain();
|
||||
|
||||
this->RespondWithOptions(connection, request, {
|
||||
{ key::replaygain_mode, REPLAYGAIN_MODE_TO_STRING.left.find(replayGainMode)->second },
|
||||
{ key::replaygain_mode, REPLAYGAIN_MODE_TO_STRING.find(replayGainMode)->second },
|
||||
{ key::preamp_gain, preampGain }
|
||||
});
|
||||
}
|
||||
@ -1439,10 +1429,11 @@ void WebSocketServer::RespondWithSetGainSettings(connection_hdl connection, json
|
||||
|
||||
float currentGain = context.environment->GetPreampGain();
|
||||
auto currentMode = context.environment->GetReplayGainMode();
|
||||
auto currentModeString = REPLAYGAIN_MODE_TO_STRING.left.find(currentMode)->second;
|
||||
auto currentModeString = REPLAYGAIN_MODE_TO_STRING.find(currentMode)->second;
|
||||
|
||||
ReplayGainMode newMode = REPLAYGAIN_MODE_TO_STRING.right.find(
|
||||
options.value(key::replaygain_mode, currentModeString))->second;
|
||||
ReplayGainMode newMode = FindKeyByValue<musik::core::sdk::ReplayGainMode, std::string>(
|
||||
REPLAYGAIN_MODE_TO_STRING,
|
||||
options.value(key::replaygain_mode, currentModeString))->first;
|
||||
|
||||
float newGain = options.value(key::preamp_gain, currentGain);
|
||||
|
||||
@ -1504,20 +1495,21 @@ void WebSocketServer::RespondWithSetEqualizerSettings(connection_hdl connection,
|
||||
void WebSocketServer::RespondWithGetTransportType(connection_hdl connection, json& request) {
|
||||
auto type = context.environment->GetTransportType();
|
||||
this->RespondWithOptions(connection, request, {
|
||||
{ key::type, TRANSPORT_TYPE_TO_STRING.left.find(type)->second }
|
||||
{ key::type, TRANSPORT_TYPE_TO_STRING.find(type)->second }
|
||||
});
|
||||
}
|
||||
|
||||
void WebSocketServer::RespondWithSetTransportType(connection_hdl connection, json& request) {
|
||||
auto& options = request[message::options];
|
||||
|
||||
std::string currentType = TRANSPORT_TYPE_TO_STRING.left
|
||||
std::string currentType = TRANSPORT_TYPE_TO_STRING
|
||||
.find(context.environment->GetTransportType())->second;
|
||||
|
||||
auto newType = options.value(key::type, currentType);
|
||||
|
||||
if (currentType != newType) {
|
||||
auto enumType = TRANSPORT_TYPE_TO_STRING.right.find(newType)->second;
|
||||
auto enumType = FindKeyByValue<musik::core::sdk::TransportType, std::string>(
|
||||
TRANSPORT_TYPE_TO_STRING, newType)->first;
|
||||
context.environment->SetTransportType(enumType);
|
||||
}
|
||||
|
||||
@ -1617,8 +1609,8 @@ json WebSocketServer::WebSocketServer::ReadTrackMetadata(ITrack* track) {
|
||||
}
|
||||
|
||||
void WebSocketServer::BuildPlaybackOverview(json& options) {
|
||||
options[key::state] = PLAYBACK_STATE_TO_STRING.left.find(context.playback->GetPlaybackState())->second;
|
||||
options[key::repeat_mode] = REPEAT_MODE_TO_STRING.left.find(context.playback->GetRepeatMode())->second;
|
||||
options[key::state] = PLAYBACK_STATE_TO_STRING.find(context.playback->GetPlaybackState())->second;
|
||||
options[key::repeat_mode] = REPEAT_MODE_TO_STRING.find(context.playback->GetRepeatMode())->second;
|
||||
options[key::volume] = context.playback->GetVolume();
|
||||
options[key::shuffled] = context.playback->IsShuffled();
|
||||
options[key::muted] = context.playback->IsMuted();
|
||||
@ -1655,11 +1647,11 @@ void WebSocketServer::OnMessage(server* s, connection_hdl hdl, message_ptr msg)
|
||||
}
|
||||
}
|
||||
catch (std::exception& e) {
|
||||
this->context.debug->Error(TAG, str::format("OnMessage failed: %s", e.what()).c_str());
|
||||
this->context.debug->Error(TAG, str::Format("OnMessage failed: %s", e.what()).c_str());
|
||||
this->RespondWithInvalidRequest(hdl, value::invalid, value::invalid);
|
||||
}
|
||||
catch (...) {
|
||||
this->context.debug->Error(TAG, str::format("message parse failed: %s", msg->get_payload().c_str()).c_str());
|
||||
this->context.debug->Error(TAG, str::Format("message parse failed: %s", msg->get_payload().c_str()).c_str());
|
||||
this->RespondWithInvalidRequest(hdl, value::invalid, value::invalid);
|
||||
}
|
||||
}
|
||||
|
@ -41,11 +41,6 @@
|
||||
#include <musikcore/sdk/IPlaybackRemote.h>
|
||||
#include <musikcore/sdk/IPlugin.h>
|
||||
|
||||
#pragma warning(push, 0)
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/filesystem/detail/utf8_codecvt_facet.hpp>
|
||||
#pragma warning(pop)
|
||||
|
||||
#include <thread>
|
||||
|
||||
#ifdef WIN32
|
||||
@ -154,13 +149,6 @@ static class PlaybackRemote : public IPlaybackRemote {
|
||||
|
||||
static class Plugin : public IPlugin {
|
||||
public:
|
||||
Plugin() {
|
||||
/* enable utf8 filesystem (required in windows, maybe not macos/linux */
|
||||
std::locale locale = std::locale();
|
||||
std::locale utf8Locale(locale, new boost::filesystem::detail::utf8_codecvt_facet);
|
||||
boost::filesystem::path::imbue(utf8Locale);
|
||||
}
|
||||
|
||||
virtual void Release() { }
|
||||
virtual const char* Name() { return "musikcube Server (wss, http)"; }
|
||||
virtual const char* Version() { return "0.7.0"; }
|
||||
|
@ -233,14 +233,14 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../3rdparty/asio/asio/include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;ASIO_STANDALONE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>zlibstatD.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
@ -254,14 +254,14 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../3rdparty/asio/asio/include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;ASIO_STANDALONE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>zlibstatD.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
@ -275,14 +275,14 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../3rdparty/asio/asio/include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;ASIO_STANDALONE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>zlibstatD.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
@ -296,14 +296,14 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../3rdparty/asio/asio/include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;ASIO_STANDALONE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib64-msvc-14.2;../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>;../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>zlibstatD.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
@ -312,14 +312,14 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../3rdparty/asio/asio/include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;ASIO_STANDALONE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib64-msvc-14.2;../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>;../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>zlibstatD.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
@ -328,14 +328,14 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../3rdparty/asio/asio/include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;ASIO_STANDALONE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib64-msvc-14.2;../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>;../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>zlibstatD.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
@ -346,8 +346,8 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../3rdparty/asio/asio/include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;ASIO_STANDALONE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
@ -359,7 +359,7 @@
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;../../3rdparty/bin/win32/lib</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>zlibstat.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -377,8 +377,8 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../3rdparty/asio/asio/include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;ASIO_STANDALONE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
@ -390,7 +390,7 @@
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;../../3rdparty/bin/win32/lib</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>zlibstat.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -408,8 +408,8 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../3rdparty/asio/asio/include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;ASIO_STANDALONE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
@ -421,7 +421,7 @@
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;../../3rdparty/bin/win32/lib</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>../../3rdparty/bin/win32/lib</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>zlibstat.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -439,9 +439,9 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../3rdparty/asio/asio/include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;ASIO_STANDALONE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
@ -449,7 +449,7 @@
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib64-msvc-14.2;../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>;../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>zlibstatD.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
@ -460,9 +460,9 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../3rdparty/asio/asio/include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;ASIO_STANDALONE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
@ -470,7 +470,7 @@
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib64-msvc-14.2;../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>;../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>zlibstatD.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
@ -481,9 +481,9 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../3rdparty/include;../../3rdparty/win32_include;../../../../3rdparty/win32_include;../../3rdparty/asio/asio/include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;MHD_W32LIB;BUILDING_MHD_LIB;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;BOOST_DATE_TIME_NO_LIB;BOOST_REGEX_NO_LIB;_WEBSOCKETPP_CPP11_TYPE_TRAITS_;ASIO_STANDALONE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
@ -491,7 +491,7 @@
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib64-msvc-14.2;../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>;../../3rdparty/bin/win64/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>zlibstatD.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
@ -233,7 +233,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
@ -254,7 +254,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
@ -275,7 +275,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
@ -346,7 +346,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
@ -377,7 +377,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
@ -408,7 +408,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;../../3rdparty/win32_include;../../../../boost_1_74_0;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>3rdparty/include;../../3rdparty/win32_include;../../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NOMINMAX;ZLIB_WINAPI;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
|
@ -4,7 +4,6 @@ set (taglibreader_SOURCES
|
||||
)
|
||||
|
||||
add_library(taglibreader SHARED ${taglibreader_SOURCES})
|
||||
include_directories(${Boost_INCLUDE_DIRS})
|
||||
|
||||
find_library(LIBZ z)
|
||||
|
||||
@ -34,4 +33,4 @@ else()
|
||||
endif()
|
||||
|
||||
message(STATUS "[taglibmetadatareader] using ${LIBTAG}")
|
||||
target_link_libraries(taglibreader ${Boost_LIBRARIES} ${LIBTAG} ${LIBZ})
|
||||
target_link_libraries(taglibreader ${LIBTAG} ${LIBZ})
|
||||
|
@ -34,6 +34,8 @@
|
||||
|
||||
#include "TaglibMetadataReader.h"
|
||||
|
||||
#include <musikcore/sdk/String.h>
|
||||
|
||||
#ifdef WIN32
|
||||
#include <taglib/toolkit/tlist.h>
|
||||
#include <taglib/toolkit/tfile.h>
|
||||
@ -94,57 +96,6 @@
|
||||
|
||||
using namespace musik::core::sdk;
|
||||
|
||||
namespace str {
|
||||
static std::string lower(std::string input) {
|
||||
std::transform(input.begin(), input.end(), input.begin(), ::tolower);
|
||||
return input;
|
||||
}
|
||||
|
||||
static inline bool isSpace(const char c) {
|
||||
return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == '\v' || c == '\f';
|
||||
}
|
||||
|
||||
std::string trim(const std::string& str) {
|
||||
if (str.size()) {
|
||||
int length = (size_t) str.size();
|
||||
int start = 0, end = length;
|
||||
int i = 0;
|
||||
while (i < length) {
|
||||
if (!isSpace(str[i])) {
|
||||
break;
|
||||
}
|
||||
++start;
|
||||
++i;
|
||||
}
|
||||
i = end - 1;
|
||||
while (i >= 0) {
|
||||
if (!isSpace(str[i])) {
|
||||
break;
|
||||
}
|
||||
--i;
|
||||
}
|
||||
if (end >= start) {
|
||||
std::string result = str.substr((size_t) start, (size_t) end - start);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
static std::vector<std::string> split(
|
||||
const std::string& in, const std::string& delim)
|
||||
{
|
||||
std::vector<std::string> result;
|
||||
size_t last = 0, next = 0;
|
||||
while ((next = in.find(delim, last)) != std::string::npos) {
|
||||
result.push_back(std::move(trim(in.substr(last, next - last))));
|
||||
last = next + 1;
|
||||
}
|
||||
result.push_back(std::move(trim(in.substr(last))));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
static inline std::wstring utf8to16(const char* utf8) {
|
||||
int size = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, 0, 0);
|
||||
@ -200,7 +151,7 @@ static bool isValidYear(const std::string& year) {
|
||||
|
||||
static float toReplayGainFloat(const std::string& input) {
|
||||
/* trim any trailing " db" or "db" noise... */
|
||||
std::string lower = str::lower(input);
|
||||
std::string lower = str::ToLowerCopy(input);
|
||||
if (lower.find(" db") == lower.length() - 3) {
|
||||
lower = lower.substr(0, lower.length() - 3);
|
||||
}
|
||||
@ -252,7 +203,8 @@ void TaglibMetadataReader::Release() {
|
||||
|
||||
bool TaglibMetadataReader::CanRead(const char *extension) {
|
||||
if (extension && strlen(extension)) {
|
||||
std::string ext(str::lower(extension[0] == '.' ? &extension[1] : extension));
|
||||
std::string withoutLeadingDot = std::string(extension[0] == '.' ? &extension[1] : extension);
|
||||
std::string ext = str::ToLowerCopy(withoutLeadingDot);
|
||||
return
|
||||
ext.compare("opus") == 0 ||
|
||||
ext.compare("wv") == 0 ||
|
||||
@ -294,7 +246,7 @@ bool TaglibMetadataReader::Read(const char* uri, ITagStore *track) {
|
||||
|
||||
/* ID3v2 is a trainwreck, so it requires special processing */
|
||||
if (extension.size()) {
|
||||
if (str::lower(extension) == "mp3") {
|
||||
if (str::ToLowerCopy(extension) == "mp3") {
|
||||
this->ReadID3V2(uri, track);
|
||||
}
|
||||
}
|
||||
@ -522,7 +474,7 @@ void TaglibMetadataReader::ExtractReplayGain(const T& map, ITagStore *target)
|
||||
void TaglibMetadataReader::SetTagValueWithPossibleTotal(
|
||||
const std::string& value, const std::string& valueKey, const std::string& totalKey, ITagStore* track)
|
||||
{
|
||||
std::vector<std::string> parts = str::split(value, "/");
|
||||
std::vector<std::string> parts = str::Split(value, "/");
|
||||
this->SetTagValue(valueKey.c_str(), parts[0].c_str(), track);
|
||||
if (parts.size() > 1) {
|
||||
this->SetTagValue(totalKey.c_str(), parts[1].c_str(), track);
|
||||
@ -809,7 +761,7 @@ void TaglibMetadataReader::SetSlashSeparatedValues(
|
||||
{
|
||||
if (!tagString.isEmpty()) {
|
||||
std::string value(tagString.to8Bit(true));
|
||||
std::vector<std::string> splitValues = str::split(value, "/");
|
||||
std::vector<std::string> splitValues = str::Split(value, "/");
|
||||
std::vector<std::string>::iterator it = splitValues.begin();
|
||||
for( ; it != splitValues.end(); ++it) {
|
||||
track->SetValue(key, it->c_str());
|
||||
|
@ -259,7 +259,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;../../../../boost_1_74_0/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
@ -278,7 +278,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<GenerateMapFile>true</GenerateMapFile>
|
||||
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
|
||||
@ -291,7 +291,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;../../../../boost_1_74_0/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
@ -310,7 +310,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<GenerateMapFile>true</GenerateMapFile>
|
||||
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
|
||||
@ -323,7 +323,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Con|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;../../../../boost_1_74_0/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
@ -342,7 +342,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<GenerateMapFile>true</GenerateMapFile>
|
||||
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
|
||||
@ -355,7 +355,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;../../../../boost_1_74_0/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
@ -374,7 +374,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<GenerateMapFile>true</GenerateMapFile>
|
||||
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
|
||||
@ -386,7 +386,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;../../../../boost_1_74_0/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
@ -405,7 +405,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<GenerateMapFile>true</GenerateMapFile>
|
||||
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
|
||||
@ -417,7 +417,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Con|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;../../../../boost_1_74_0/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
@ -436,7 +436,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<GenerateMapFile>true</GenerateMapFile>
|
||||
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
|
||||
@ -450,7 +450,7 @@
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;../../../../boost_1_74_0/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -470,7 +470,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
@ -483,7 +483,7 @@
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;../../../../boost_1_74_0/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -503,7 +503,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
@ -516,7 +516,7 @@
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;../../../../boost_1_74_0/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -536,7 +536,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
@ -549,7 +549,7 @@
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;../../../../boost_1_74_0/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -569,7 +569,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
@ -581,7 +581,7 @@
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;../../../../boost_1_74_0/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -601,7 +601,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
@ -613,7 +613,7 @@
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;../../../../boost_1_74_0/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../;../../3rdparty/include/;taglib-1.11;taglib-1.11/taglib;taglib-1.11/taglib/ape;taglib-1.11/taglib/asf;taglib-1.11/taglib/flac;taglib-1.11/taglib/mpc;taglib-1.11/taglib/mpeg;taglib-1.11/taglib/mpeg/id3v1;taglib-1.11/taglib/mpeg/id3v2;taglib-1.11/taglib/mpeg/id3v2/frames;taglib-1.11/taglib/ogg;taglib-1.11/taglib/ogg/flac;taglib-1.11/taglib/ogg/opus;taglib-1.11/taglib/ogg/speex;taglib-1.11/taglib/ogg/vorbis;taglib-1.11/taglib/toolkit;taglib-1.11/taglib/trueaudio;taglib-1.11/taglib/wavpack;taglib-1.11/taglib/xm;taglib-1.11/taglib/riff;taglib-1.11/taglib/riff/aiff;taglib-1.11/taglib/riff/wav;taglib-1.11/taglib/mod;taglib-1.11/taglib/s3m;taglib-1.11/taglib/mp4;taglib-1.11/taglib/it;taglib-1.11/3rdparty;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@ -633,7 +633,7 @@
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../boost_1_74_0/lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
|
@ -87,7 +87,7 @@ class WaveOut : public IOutput {
|
||||
|
||||
/* note we apparently use a std::list<> here, and not std::set<> because
|
||||
when we need to do a lookup we have a WaveOutBuffer*, and not a shared_ptr.
|
||||
we could fix this up by using boost::enable_shared_from_this */
|
||||
we could fix this up by using std::enable_shared_from_this */
|
||||
typedef std::deque<WaveOutBufferPtr> BufferList;
|
||||
|
||||
/* instance state relating to output device, including the thread that
|
||||
|
Loading…
x
Reference in New Issue
Block a user