From f15872768d9859db021aaed4b408e95411a7efad Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Tue, 14 Apr 2020 12:31:18 +0200 Subject: [PATCH] Add OpenH264 support Update Cisco codec version First Rework on download/extract codec file Ensure to stop download context before sending end signals Replace qt.conf with qt.conf.in to have custom setting that depends of packaging or not --- CHANGELOG.md | 5 ++ CMakeLists.txt | 6 +- README.md | 9 +-- linphone-app/assets/qt.conf | 6 -- linphone-app/assets/qt.conf.in | 3 + .../linphone_package/CMakeLists.txt | 81 ++++++++++++++----- .../SingleApplicationDBus.cpp | 2 +- .../components/codecs/VideoCodecsModel.cpp | 17 ++-- .../src/components/file/FileDownloader.cpp | 4 +- .../Linphone/Dialog/OnlineInstallerDialog.qml | 18 +---- 10 files changed, 90 insertions(+), 61 deletions(-) delete mode 100644 linphone-app/assets/qt.conf create mode 100644 linphone-app/assets/qt.conf.in diff --git a/CHANGELOG.md b/CHANGELOG.md index 1386f6a78..ebdc09895 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,12 +17,15 @@ - TelKeypad supports A, B, C and D keys. - TelKeypad supports keyboard. - OpenH264 codec can be download in the application. +- Use native BZip2 instead of Minizip to extract codec on Mac and Linux - New icons - Disable screensaver on fullscreen video call. - Add caller/callee on saved files. - Supports totally french, english, portuguese, russian, turkish, ukrainian. - App Nap avoiding for MacOs - Simplify building process +- Enable High DPI Displays support +- NSIS (Windows), DMG (MacOsX) and Appimage (Linux) deployments ### Fixes @@ -31,6 +34,8 @@ - Do not use `:` separator when a file is saved on Windows. - Avoid mark as read on selected chat room if window is not active. - Search box in main page will not reset its text when clicking on it +- Crash on account authentifications +- Apple permissions ### Removed diff --git a/CMakeLists.txt b/CMakeLists.txt index 2dcb90c5b..a8b1769c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,6 +86,8 @@ option(ENABLE_TOOLS "Enable tools of SDK" NO) option(ENABLE_STRICT "Build with strict compilator flags e.g. -Wall -Werror" NO) option(ENABLE_FFMPEG "Build mediastreamer2 with ffmpeg video support." YES) option(ENABLE_BUILD_VERBOSE "Enable the build generation to be more verbose" NO) +option(ENABLE_OPENH264 "Enable the use of OpenH264 codec" YES) +option(ENABLE_NON_FREE_CODECS "Enable the use of non free codecs" YES) if(WIN32 OR APPLE) else() @@ -103,7 +105,9 @@ list(APPEND APP_OPTIONS "-DENABLE_TOOLS=${ENABLE_TOOLS}") list(APPEND APP_OPTIONS "-DENABLE_STRICT=${ENABLE_STRICT}") list(APPEND APP_OPTIONS "-DENABLE_FFMPEG=${ENABLE_FFMPEG}") list(APPEND APP_OPTIONS "-DENABLE_BUILD_VERBOSE=${ENABLE_BUILD_VERBOSE}") - +list(APPEND APP_OPTIONS "-DENABLE_OPENH264=${ENABLE_OPENH264}") +list(APPEND APP_OPTIONS "-DENABLE_NON_FREE_CODECS=${ENABLE_NON_FREE_CODECS}") + if(ENABLE_V4L) list(APPEND APP_OPTIONS "-DENABLE_V4L=${ENABLE_V4L}") endif() diff --git a/README.md b/README.md index e5d141d9d..4a7ef4671 100644 --- a/README.md +++ b/README.md @@ -49,8 +49,8 @@ For Desktop : you will need `Qt5` (_5.9 or newer_). `C++11` support is required! 2. You have to set the environment variable `Qt5_DIR` to point to the path containing the cmake folders of Qt5, and the `PATH` to the Qt5 `bin`. Example: - Qt5_DIR="~/Qt/5.9/gcc_64/lib/cmake" - PATH="~/Qt/5.9/gcc_64/bin/:$PATH" + Qt5_DIR="~/Qt/5.12.5/gcc_64/lib/cmake" + PATH="~/Qt/5.12.5/gcc_64/bin/:$PATH" Note: If you have `qtchooser` set in your `PATH`, the best use is : @@ -132,11 +132,6 @@ Dependencies from 4.1 version of Desktop: apt-get install libqt53dcore5:amd64 libqt53dextras5:amd64 libqt53dinput5:amd64 libqt53dlogic5:amd64 libqt53dquick5:amd64 libqt53dquickextras5:amd64 libqt53dquickinput5:amd64 libqt53dquickrender5:amd64 libqt53drender5:amd64 libqt5concurrent5:amd64 libqt5core5a:amd64 libqt5dbus5:amd64 libqt5designer5:amd64 libqt5designercomponents5:amd64 libqt5gui5:amd64 libqt5help5:amd64 libqt5multimedia5:amd64 libqt5multimedia5-plugins:amd64 libqt5multimediawidgets5:amd64 libqt5network5:amd64 libqt5opengl5:amd64 libqt5opengl5-dev:amd64 libqt5positioning5:amd64 libqt5printsupport5:amd64 libqt5qml5:amd64 libqt5quick5:amd64 libqt5quickcontrols2-5:amd64 libqt5quickparticles5:amd64 libqt5quicktemplates2-5:amd64 libqt5quicktest5:amd64 libqt5quickwidgets5:amd64 libqt5script5:amd64 libqt5scripttools5:amd64 libqt5sensors5:amd64 libqt5serialport5:amd64 libqt5sql5:amd64 libqt5sql5-sqlite:amd64 libqt5svg5:amd64 libqt5svg5-dev:amd64 libqt5test5:amd64 libqt5webchannel5:amd64 libqt5webengine-data libqt5webenginecore5:amd64 libqt5webenginewidgets5:amd64 libqt5webkit5:amd64 libqt5widgets5:amd64 libqt5x11extras5:amd64 libqt5xml5:amd64 libqt5xmlpatterns5:amd64 qt5-default:amd64 qt5-doc qt5-gtk-platformtheme:amd64 qt5-qmake:amd64 qt5-qmltooling-plugins:amd64 -## Known bugs and issues - -* __4K (High DPI Displays)__ If you encounter troubles with high DPI displays on Windows, please to see this link: https://bugreports.qt.io/browse/QTBUG-53022 - - ## Updating your build You need to update the project: diff --git a/linphone-app/assets/qt.conf b/linphone-app/assets/qt.conf deleted file mode 100644 index 14dfd2030..000000000 --- a/linphone-app/assets/qt.conf +++ /dev/null @@ -1,6 +0,0 @@ -[Platforms] -WindowsArguments = dpiawareness=1 -[Paths] -Plugins = PlugIns -Imports = Resources/qml -Qml2Imports = Resources/qml diff --git a/linphone-app/assets/qt.conf.in b/linphone-app/assets/qt.conf.in new file mode 100644 index 000000000..eed5596da --- /dev/null +++ b/linphone-app/assets/qt.conf.in @@ -0,0 +1,3 @@ +[Platforms] +WindowsArguments = dpiawareness=1 +@APP_QT_CONF_PATH@ diff --git a/linphone-app/cmake_builder/linphone_package/CMakeLists.txt b/linphone-app/cmake_builder/linphone_package/CMakeLists.txt index 9e01c35c7..c3e77d70a 100644 --- a/linphone-app/cmake_builder/linphone_package/CMakeLists.txt +++ b/linphone-app/cmake_builder/linphone_package/CMakeLists.txt @@ -103,15 +103,21 @@ if (WIN32) if (NOT DEPLOYQT_PROGRAM) message(FATAL_ERROR "Could not find the windeployqt program. Make sure it is in the PATH.") endif () - file(GLOB LIB_FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/*.dll") + file(GLOB LIB_FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/*.dll") install(FILES ${LIB_FILES} DESTINATION "${CMAKE_INSTALL_BINDIR}/") file(GLOB LIB_FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_BINDIR}/*.dll") + if( ENABLE_OPENH264)# Remove openH264 lib from the installation. this codec will be download by user + foreach(item ${LIB_FILES}) + get_filename_component(LIBRARY_FILENAME ${item} NAME) + if("${LIBRARY_FILENAME}" MATCHES "^openh264.*.dll$") + list(REMOVE_ITEM LIB_FILES ${item}) + endif() + endforeach(item) + endif() install(FILES ${LIB_FILES} DESTINATION "${CMAKE_INSTALL_BINDIR}/") file(GLOB EXE_FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_BINDIR}/*.exe") install(FILES ${EXE_FILES} DESTINATION "${CMAKE_INSTALL_BINDIR}/") - if (EXISTS "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/mediastreamer") - install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/mediastreamer" DESTINATION "${CMAKE_INSTALL_LIBDIR}" USE_SOURCE_PERMISSIONS) - endif () + install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/mediastreamer" DESTINATION "${CMAKE_INSTALL_LIBDIR}" USE_SOURCE_PERMISSIONS) file(GLOB GRAMMAR_FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/Belr/grammars/*") install(FILES ${GRAMMAR_FILES} DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/belr/grammars/" ) install(FILES "${MINIZIP_PREFIX}/${CMAKE_INSTALL_BINDIR}/minizip.dll" DESTINATION "${CMAKE_INSTALL_BINDIR}") @@ -119,7 +125,9 @@ if (WIN32) install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/sounds" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}" USE_SOURCE_PERMISSIONS) install(FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/Linphone/rootca.pem" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${EXECUTABLE_NAME}/") install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/linphonerc-factory" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}") - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/qt.conf" DESTINATION "${CMAKE_INSTALL_BINDIR}") + set(APP_QT_CONF_PATH "") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../assets/qt.conf.in" "${CMAKE_CURRENT_BINARY_DIR}/../../qt.conf" @ONLY) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/../../qt.conf" DESTINATION "${CMAKE_INSTALL_BINDIR}") install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/assistant" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}" USE_SOURCE_PERMISSIONS) install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.exe" DESTINATION "${CMAKE_INSTALL_BINDIR}") install( CODE "execute_process(COMMAND ${DEPLOYQT_PROGRAM} \"\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/${EXECUTABLE_NAME}.exe\" -qmldir=${LINPHONE_QML_DIR} --compiler-runtime)")# -verbose=2)" COMPONENT binary_application) @@ -132,24 +140,34 @@ elseif (APPLE) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/Info.plist.in" "${CMAKE_CURRENT_BINARY_DIR}/../../Info.plist" @ONLY) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/entitlements.xml.in" "${CMAKE_CURRENT_BINARY_DIR}/../../entitlements.xml" @ONLY) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/linphone.icns" "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.icns" COPYONLY) + if(ENABLE_APP_PACKAGING) + set(APP_QT_CONF_PATH "[Paths]\nPlugins = PlugIns\nImports = Resources/qml\nQml2Imports = Resources/qml") + else() + set(APP_QT_CONF_PATH "") + endif() + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../assets/qt.conf.in" "${CMAKE_CURRENT_BINARY_DIR}/../../qt.conf" @ONLY) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/../../qt.conf" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/../../Info.plist" DESTINATION "${APPLICATION_NAME}.app/Contents") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.icns" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources") install( CODE "execute_process(COMMAND rsync -a \"${LINPHONE_OUTPUT_DIR}/Frameworks\" \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/\" )") #Use rsync to bypass symlinks override issues of frameworks install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}" DESTINATION "${APPLICATION_NAME}.app/Contents/MacOS") file(GLOB SHARED_LIBRARIES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/lib*.dylib") - foreach (LIBRARY ${SHARED_LIBRARIES}) - install(FILES "${LIBRARY}" DESTINATION "${APPLICATION_NAME}.app/Contents/Frameworks") - endforeach () - if (EXISTS "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/mediastreamer") - file(COPY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/mediastreamer" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_LIBDIR}" USE_SOURCE_PERMISSIONS) - endif () + if( ENABLE_OPENH264 )# Remove openH264 lib from the installation. this codec will be download by user + foreach(item ${SHARED_LIBRARIES}) + get_filename_component(LIBRARY_FILENAME ${item} NAME) + if("${LIBRARY_FILENAME}" MATCHES "^libopenh264.*.dylib$") + list(REMOVE_ITEM SHARED_LIBRARIES ${item}) + endif() + endforeach(item) + endif() + install(FILES ${SHARED_LIBRARIES} DESTINATION "${APPLICATION_NAME}.app/Contents/Frameworks") file(GLOB GRAMMAR_FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/Belr/grammars/*") install(FILES ${GRAMMAR_FILES} DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/belr/grammars/") install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/images" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}" USE_SOURCE_PERMISSIONS OPTIONAL) install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/sounds" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}" USE_SOURCE_PERMISSIONS) install(FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/Linphone/rootca.pem" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}") install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/linphonerc-factory" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}") - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/qt.conf" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/") + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/assistant" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}" USE_SOURCE_PERMISSIONS) file(GLOB SHARED_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR}/../../${APPLICATION_NAME}.app/Contents/Frameworks/lib*.dylib") @@ -184,26 +202,45 @@ else()# Not Windows and Apple execute_process(COMMAND install_name_tool -addrpath "$ORIGIN/../lib64" "${LIBRARY}") endforeach () install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_BINDIR}/" DESTINATION "${CMAKE_INSTALL_BINDIR}" USE_SOURCE_PERMISSIONS) -#Just in case. This is useless because we have to use CMAKE_INSTALL_LIBDIR +#Just in case. This is useless because we have to use CMAKE_INSTALL_LIBDIR if( EXISTS "${LINPHONE_OUTPUT_DIR}/lib/") - install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/lib/" DESTINATION "lib" USE_SOURCE_PERMISSIONS) + file(GLOB SHARED_LIBRARIES "${LINPHONE_OUTPUT_DIR}/lib/*.so*") + if( ENABLE_OPENH264 )# Remove openH264 lib from the installation. this codec will be download by user + foreach(item ${SHARED_LIBRARIES}) + get_filename_component(LIBRARY_FILENAME ${item} NAME) + if("${LIBRARY_FILENAME}" MATCHES "^libopenh264.*$") + list(REMOVE_ITEM SHARED_LIBRARIES ${item}) + endif() + endforeach(item) + endif() + install(FILES ${SHARED_LIBRARIES} DESTINATION "lib") endif() if( EXISTS "${LINPHONE_OUTPUT_DIR}/lib64/") - install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/lib64/" DESTINATION "lib64" USE_SOURCE_PERMISSIONS) + file(GLOB SHARED_LIBRARIES "${LINPHONE_OUTPUT_DIR}/lib64/*.so*") + if( ENABLE_OPENH264 )# Remove openH264 lib from the installation. this codec will be download by user + foreach(item ${SHARED_LIBRARIES}) + get_filename_component(LIBRARY_FILENAME ${item} NAME) + if("${LIBRARY_FILENAME}" MATCHES "^libopenh264.*$") + list(REMOVE_ITEM SHARED_LIBRARIES ${item}) + endif() + endforeach(item) + endif() + install(FILES ${SHARED_LIBRARIES} DESTINATION "lib64") endif() install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}" USE_SOURCE_PERMISSIONS) if(ENABLE_BUILD_VERBOSE) message("INSTALLATION : ${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/" ) endif() - if (EXISTS "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/mediastreamer") - file(COPY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/mediastreamer" DESTINATION "${CMAKE_INSTALL_LIBDIR}" USE_SOURCE_PERMISSIONS) - endif () - # Install desktop/icon files. - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../assets/linphone.desktop.cmake" "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.desktop" @ONLY) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.desktop" DESTINATION "${CMAKE_INSTALL_DATADIR}/applications") + install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/mediastreamer" DESTINATION "${CMAKE_INSTALL_LIBDIR}" USE_SOURCE_PERMISSIONS) +# Install desktop/icon files. + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../assets/linphone.desktop.cmake" "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.desktop" @ONLY) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.desktop" DESTINATION "${CMAKE_INSTALL_DATADIR}/applications") + set(APP_QT_CONF_PATH "") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../assets/qt.conf.in" "${CMAKE_CURRENT_BINARY_DIR}/../../qt.conf" @ONLY) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/../../qt.conf" DESTINATION "${CMAKE_INSTALL_BINDIR}") install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/images/linphone_logo.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps/" RENAME "${EXECUTABLE_NAME}.svg") install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/linphonerc-factory" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${EXECUTABLE_NAME}") - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/qt.conf" DESTINATION "${CMAKE_INSTALL_BINDIR}") + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/assistant" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${EXECUTABLE_NAME}" USE_SOURCE_PERMISSIONS) set(ICON_DIRS 16x16 22x22 24x24 32x32 64x64 128x128 256x256) foreach (DIR ${ICON_DIRS}) diff --git a/linphone-app/src/app/single-application/SingleApplicationDBus.cpp b/linphone-app/src/app/single-application/SingleApplicationDBus.cpp index 9ddba55ff..112cad857 100644 --- a/linphone-app/src/app/single-application/SingleApplicationDBus.cpp +++ b/linphone-app/src/app/single-application/SingleApplicationDBus.cpp @@ -56,7 +56,7 @@ void SingleApplicationPrivate::startSecondary () { } void SingleApplicationPrivate::terminate (int signum) { - Q_UNUSED(signum); + Q_UNUSED(signum) SingleApplication::instance()->quit(); } diff --git a/linphone-app/src/components/codecs/VideoCodecsModel.cpp b/linphone-app/src/components/codecs/VideoCodecsModel.cpp index 50ad7ff5a..ea0836512 100644 --- a/linphone-app/src/components/codecs/VideoCodecsModel.cpp +++ b/linphone-app/src/components/codecs/VideoCodecsModel.cpp @@ -33,6 +33,7 @@ #include "utils/Utils.hpp" #include "VideoCodecsModel.hpp" +#include // ============================================================================= @@ -47,17 +48,17 @@ namespace { constexpr char LibraryExtension[] = "so"; constexpr char H264InstallName[] = "libopenh264.so"; #ifdef Q_PROCESSOR_X86_64 - constexpr char PluginUrlH264[] = "http://ciscobinary.openh264.org/libopenh264-1.8.0-linux64.4.so.bz2"; + constexpr char PluginUrlH264[] = "http://ciscobinary.openh264.org/libopenh264-2.1.0-linux64.5.so.bz2"; #else - constexpr char PluginUrlH264[] = "http://ciscobinary.openh264.org/libopenh264-1.8.0-linux32.4.so.bz2"; + constexpr char PluginUrlH264[] = "http://ciscobinary.openh264.org/libopenh264-2.1-0-linux32.5.so.bz2"; #endif // ifdef Q_PROCESSOR_X86_64 #elif defined(Q_OS_WIN) constexpr char LibraryExtension[] = "dll"; constexpr char H264InstallName[] = "openh264.dll"; #ifdef Q_OS_WIN64 - constexpr char PluginUrlH264[] = "http://ciscobinary.openh264.org/openh264-1.8.0-win64.dll.bz2"; + constexpr char PluginUrlH264[] = "http://ciscobinary.openh264.org/openh264-2.1.0-win64.dll.bz2"; #else - constexpr char PluginUrlH264[] = "http://ciscobinary.openh264.org/openh264-1.8.0-win32.dll.bz2"; + constexpr char PluginUrlH264[] = "http://ciscobinary.openh264.org/openh264-2.1.0-win32.dll.bz2"; #endif // ifdef Q_OS_WIN64 #endif // ifdef Q_OS_LINUX } @@ -111,7 +112,7 @@ static bool downloadUpdatableCodec ( qWarning() << QStringLiteral("Unable to write codec version in: `%1`.").arg(versionFilePath); return; } - if (versionFile.write(Utils::appStringToCoreString(downloadUrl).c_str(), downloadUrl.length()) == -1) { + if (versionFile.write(Utils::appStringToCoreString(downloadUrl).c_str(), downloadUrl.length()) == -1) { fileExtractor->remove(); versionFile.close(); versionFile.remove(); @@ -174,10 +175,10 @@ void VideoCodecsModel::load () { QDirIterator it(getCodecsFolder()); while (it.hasNext()) { QFileInfo info(it.next()); - if (info.suffix() == LibraryExtension) { - const QString filename(info.fileName()); + const QString filename(info.fileName()); + if ( QLibrary::isLibrary(filename) ) { qInfo() << QStringLiteral("Loading `%1` symbols...").arg(filename); - if (!QLibrary(info.filePath()).load()) + if (!QLibrary(info.filePath()).load()) //lib.load()) qWarning() << QStringLiteral("Failed to load `%1` symbols.").arg(filename); } } diff --git a/linphone-app/src/components/file/FileDownloader.cpp b/linphone-app/src/components/file/FileDownloader.cpp index 8ff2b4fa5..68f2ef445 100644 --- a/linphone-app/src/components/file/FileDownloader.cpp +++ b/linphone-app/src/components/file/FileDownloader.cpp @@ -133,14 +133,14 @@ void FileDownloader::handleDownloadFinished() { if (isHttpRedirect(mNetworkReply)) { qWarning() << QStringLiteral("Request was redirected."); mDestinationFile.remove(); + cleanDownloadEnd(); emit downloadFailed(); } else { qInfo() << QStringLiteral("Download of %1 finished.").arg(mUrl.toString()); mDestinationFile.close(); + cleanDownloadEnd(); emit downloadFinished(mDestinationFile.fileName()); } - - cleanDownloadEnd(); } void FileDownloader::handleError (QNetworkReply::NetworkError code) { diff --git a/linphone-app/ui/modules/Linphone/Dialog/OnlineInstallerDialog.qml b/linphone-app/ui/modules/Linphone/Dialog/OnlineInstallerDialog.qml index 060e018e9..3a3c5cc86 100644 --- a/linphone-app/ui/modules/Linphone/Dialog/OnlineInstallerDialog.qml +++ b/linphone-app/ui/modules/Linphone/Dialog/OnlineInstallerDialog.qml @@ -15,7 +15,6 @@ DialogPlus { property alias downloadUrl: fileDownloader.url property alias installFolder: fileDownloader.downloadFolder - property bool extract: false property string installName // Right install name. property string mime // Human readable name. @@ -30,14 +29,9 @@ DialogPlus { } function _endInstall (exitStatus) { - if (dialog.extract) { - fileDownloader.remove() - } - if (exitStatus === 1) { Utils.write(installFolder + mime + '.txt', downloadUrl) } - dialog._exitStatus = exitStatus dialog._installing = false } @@ -132,12 +126,8 @@ DialogPlus { onDownloadFailed: dialog._endInstall(0) onDownloadFinished: { fileExtractor.file = filePath - if (dialog.extract) { - progressBar.target = fileExtractor - fileExtractor.extract() - } else { - dialog._endInstall(1) - } + progressBar.target = fileExtractor + fileExtractor.extract() } } @@ -147,8 +137,8 @@ DialogPlus { extractFolder: dialog.installFolder extractName: dialog.installName - onExtractFailed: dialog._endInstall(0) - onExtractFinished: dialog._endInstall(1) + onExtractFailed: {fileDownloader.remove(); dialog._endInstall(0)} + onExtractFinished: {fileDownloader.remove(); dialog._endInstall(1)} } } }