From 57d1dffdbd453af572d1460495edd81427bc2b04 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Wed, 15 Dec 2021 15:20:04 +0100 Subject: [PATCH] Update to SingleApplication 3.3.2 proper --- CMakeLists.txt | 2 +- .../.github/workflows/build-cmake.yml | 56 ------------ .../.github/FUNDING.yml | 0 .../.github/workflows/build.yml | 87 +++++++++++++++++++ .../.gitignore | 0 .../CHANGELOG.md | 11 ++- .../CMakeLists.txt | 0 .../LICENSE | 0 .../README.md | 3 +- .../SingleApplication | 0 .../Windows.md | 0 .../examples/basic/CMakeLists.txt | 0 .../examples/basic/basic.pro | 0 .../examples/basic/main.cpp | 0 .../examples/calculator/CMakeLists.txt | 0 .../examples/calculator/button.cpp | 0 .../examples/calculator/button.h | 0 .../examples/calculator/calculator.cpp | 0 .../examples/calculator/calculator.h | 0 .../examples/calculator/calculator.pro | 0 .../examples/calculator/main.cpp | 0 .../examples/sending_arguments/CMakeLists.txt | 0 .../examples/sending_arguments/main.cpp | 0 .../sending_arguments/messagereceiver.cpp | 0 .../sending_arguments/messagereceiver.h | 0 .../sending_arguments/sending_arguments.pro | 0 .../singleapplication.cpp | 0 .../singleapplication.h | 0 .../singleapplication.pri | 0 .../singleapplication_p.cpp | 15 +++- .../singleapplication_p.h | 0 31 files changed, 112 insertions(+), 62 deletions(-) delete mode 100644 third_party/SingleApplication-3.3.0/.github/workflows/build-cmake.yml rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/.github/FUNDING.yml (100%) create mode 100644 third_party/SingleApplication-3.3.2/.github/workflows/build.yml rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/.gitignore (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/CHANGELOG.md (96%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/CMakeLists.txt (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/LICENSE (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/README.md (98%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/SingleApplication (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/Windows.md (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/basic/CMakeLists.txt (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/basic/basic.pro (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/basic/main.cpp (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/calculator/CMakeLists.txt (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/calculator/button.cpp (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/calculator/button.h (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/calculator/calculator.cpp (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/calculator/calculator.h (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/calculator/calculator.pro (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/calculator/main.cpp (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/sending_arguments/CMakeLists.txt (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/sending_arguments/main.cpp (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/sending_arguments/messagereceiver.cpp (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/sending_arguments/messagereceiver.h (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/examples/sending_arguments/sending_arguments.pro (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/singleapplication.cpp (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/singleapplication.h (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/singleapplication.pri (100%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/singleapplication_p.cpp (95%) rename third_party/{SingleApplication-3.3.0 => SingleApplication-3.3.2}/singleapplication_p.h (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e805621..57dec461 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -509,7 +509,7 @@ endif() # single instance functionality set(QAPPLICATION_CLASS QApplication CACHE STRING "Inheritance class for SingleApplication") -add_subdirectory(third_party/SingleApplication-3.3.0/) +add_subdirectory(third_party/SingleApplication-3.3.2/) feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/third_party/SingleApplication-3.3.0/.github/workflows/build-cmake.yml b/third_party/SingleApplication-3.3.0/.github/workflows/build-cmake.yml deleted file mode 100644 index 6344b504..00000000 --- a/third_party/SingleApplication-3.3.0/.github/workflows/build-cmake.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: "CI: Build Test" - -on: [push, pull_request] - -jobs: - build: - - strategy: - matrix: - qt_version: [5.12.6, 5.13.2, 5.14.0, 5.15.0, 6.0.0] - platform: [ubuntu-20.04, windows-latest, macos-latest] - include: - - qt_version: 6.0.0 - additional_arguments: -D QT_DEFAULT_MAJOR_VERSION=6 - - platform: ubuntu-20.04 - CXXFLAGS: -Wall -Wextra -pedantic -Werror - - platform: macos-latest - CXXFLAGS: -Wall -Wextra -pedantic -Werror - - platform: windows-latest - CXXFLAGS: /W4 /WX - - runs-on: ${{ matrix.platform }} - env: - CXXFLAGS: ${{ matrix.CXXFLAGS }} - - steps: - - uses: actions/checkout@v2.3.4 - - - name: Install Qt - uses: jurplel/install-qt-action@v2.11.1 - with: - version: ${{ matrix.qt_version }} - - - name: cmake - run: cmake . ${{ matrix.additional_arguments }} - - - name: cmake build - run: cmake --build . - - - name: Build example - basic (cmake) - working-directory: examples/basic/ - run: | - cmake . ${{ matrix.additional_arguments }} - cmake --build . - - - name: Build example - calculator (cmake) - working-directory: examples/calculator/ - run: | - cmake . ${{ matrix.additional_arguments }} - cmake --build . - - - name: Build example - sending_arguments (cmake) - working-directory: examples/sending_arguments/ - run: | - cmake . ${{ matrix.additional_arguments }} - cmake --build . diff --git a/third_party/SingleApplication-3.3.0/.github/FUNDING.yml b/third_party/SingleApplication-3.3.2/.github/FUNDING.yml similarity index 100% rename from third_party/SingleApplication-3.3.0/.github/FUNDING.yml rename to third_party/SingleApplication-3.3.2/.github/FUNDING.yml diff --git a/third_party/SingleApplication-3.3.2/.github/workflows/build.yml b/third_party/SingleApplication-3.3.2/.github/workflows/build.yml new file mode 100644 index 00000000..ffc37f41 --- /dev/null +++ b/third_party/SingleApplication-3.3.2/.github/workflows/build.yml @@ -0,0 +1,87 @@ +name: "CI: Build Test" + +on: + push: + branches-ignore: + - "releases/**" + paths-ignore: + - "**.md" + +jobs: + build: + strategy: + matrix: + qt_version: [5.12.6, 5.13.2, 5.14.0, 5.15.0, 6.0.0] + platform: [ubuntu-20.04, windows-latest, macos-latest] + include: + - qt_version: 6.0.0 + additional_arguments: -D QT_DEFAULT_MAJOR_VERSION=6 + - platform: ubuntu-20.04 + make: make + CXXFLAGS: -Wall -Wextra -pedantic -Werror + MAKEFLAGS: -j2 + - platform: macos-latest + make: make + CXXFLAGS: -Wall -Wextra -pedantic -Werror + MAKEFLAGS: -j3 + - platform: windows-latest + make: nmake + CXXFLAGS: /W4 /WX /MP + + runs-on: ${{ matrix.platform }} + env: + CXXFLAGS: ${{ matrix.CXXFLAGS }} + MAKEFLAGS: ${{ matrix.MAKEFLAGS }} + + steps: + - name: Clone repo + uses: actions/checkout@v2.3.4 + + - name: Install Qt + uses: jurplel/install-qt-action@v2.14.0 + with: + version: ${{ matrix.qt_version }} + + - name: Build library with CMake + run: | + cmake . ${{ matrix.additional_arguments }} + cmake --build . + + - name: Build basic example with CMake + working-directory: examples/basic/ + run: | + cmake . ${{ matrix.additional_arguments }} + cmake --build . + + - name: Build calculator example CMake + working-directory: examples/calculator/ + run: | + cmake . ${{ matrix.additional_arguments }} + cmake --build . + + - name: Build sending_arguments example with CMake + working-directory: examples/sending_arguments/ + run: | + cmake . ${{ matrix.additional_arguments }} + cmake --build . + + - name: Setup MSVC environment for QMake + uses: ilammy/msvc-dev-cmd@v1 + + - name: Build basic example with QMake + working-directory: examples/basic/ + run: | + qmake + ${{ matrix.make }} + + - name: Build calculator example QMake + working-directory: examples/calculator/ + run: | + qmake + ${{ matrix.make }} + + - name: Build sending_arguments example with QMake + working-directory: examples/sending_arguments/ + run: | + qmake + ${{ matrix.make }} diff --git a/third_party/SingleApplication-3.3.0/.gitignore b/third_party/SingleApplication-3.3.2/.gitignore similarity index 100% rename from third_party/SingleApplication-3.3.0/.gitignore rename to third_party/SingleApplication-3.3.2/.gitignore diff --git a/third_party/SingleApplication-3.3.0/CHANGELOG.md b/third_party/SingleApplication-3.3.2/CHANGELOG.md similarity index 96% rename from third_party/SingleApplication-3.3.0/CHANGELOG.md rename to third_party/SingleApplication-3.3.2/CHANGELOG.md index 51669b90..348ca26d 100644 --- a/third_party/SingleApplication-3.3.0/CHANGELOG.md +++ b/third_party/SingleApplication-3.3.2/CHANGELOG.md @@ -3,11 +3,20 @@ Changelog If by accident I have forgotten to credit someone in the CHANGELOG, email me and I will fix it. +__3.3.2__ +--------- + +* Fixed crash caused by sending a `writeAck` on a removed connection. - _Nicolas Werner_ + +__3.3.1__ +--------- + +* Added support for _AppImage_ dynamic executable paths. - _Michael Klein_ __3.3.0__ --------- -* Fixed message fragmentation issue causing crashes and incorrectly and inconsistently received messages. - _Nils Jeisecke_ +* Fixed message fragmentation issue causing crashes and incorrectly / inconsistently received messages. - _Nils Jeisecke_ __3.2.0__ --------- diff --git a/third_party/SingleApplication-3.3.0/CMakeLists.txt b/third_party/SingleApplication-3.3.2/CMakeLists.txt similarity index 100% rename from third_party/SingleApplication-3.3.0/CMakeLists.txt rename to third_party/SingleApplication-3.3.2/CMakeLists.txt diff --git a/third_party/SingleApplication-3.3.0/LICENSE b/third_party/SingleApplication-3.3.2/LICENSE similarity index 100% rename from third_party/SingleApplication-3.3.0/LICENSE rename to third_party/SingleApplication-3.3.2/LICENSE diff --git a/third_party/SingleApplication-3.3.0/README.md b/third_party/SingleApplication-3.3.2/README.md similarity index 98% rename from third_party/SingleApplication-3.3.0/README.md rename to third_party/SingleApplication-3.3.2/README.md index 457ab339..a76bada3 100644 --- a/third_party/SingleApplication-3.3.0/README.md +++ b/third_party/SingleApplication-3.3.2/README.md @@ -182,7 +182,8 @@ bool SingleApplication::sendMessage( QByteArray message, int timeout = 100 ) ``` Sends `message` to the Primary Instance. Uses `timeout` as a the maximum timeout -in milliseconds for blocking functions +in milliseconds for blocking functions. Returns `true` if the message has been sent +successfully. If the message can't be sent or the function timeouts - returns `false`. --- diff --git a/third_party/SingleApplication-3.3.0/SingleApplication b/third_party/SingleApplication-3.3.2/SingleApplication similarity index 100% rename from third_party/SingleApplication-3.3.0/SingleApplication rename to third_party/SingleApplication-3.3.2/SingleApplication diff --git a/third_party/SingleApplication-3.3.0/Windows.md b/third_party/SingleApplication-3.3.2/Windows.md similarity index 100% rename from third_party/SingleApplication-3.3.0/Windows.md rename to third_party/SingleApplication-3.3.2/Windows.md diff --git a/third_party/SingleApplication-3.3.0/examples/basic/CMakeLists.txt b/third_party/SingleApplication-3.3.2/examples/basic/CMakeLists.txt similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/basic/CMakeLists.txt rename to third_party/SingleApplication-3.3.2/examples/basic/CMakeLists.txt diff --git a/third_party/SingleApplication-3.3.0/examples/basic/basic.pro b/third_party/SingleApplication-3.3.2/examples/basic/basic.pro similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/basic/basic.pro rename to third_party/SingleApplication-3.3.2/examples/basic/basic.pro diff --git a/third_party/SingleApplication-3.3.0/examples/basic/main.cpp b/third_party/SingleApplication-3.3.2/examples/basic/main.cpp similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/basic/main.cpp rename to third_party/SingleApplication-3.3.2/examples/basic/main.cpp diff --git a/third_party/SingleApplication-3.3.0/examples/calculator/CMakeLists.txt b/third_party/SingleApplication-3.3.2/examples/calculator/CMakeLists.txt similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/calculator/CMakeLists.txt rename to third_party/SingleApplication-3.3.2/examples/calculator/CMakeLists.txt diff --git a/third_party/SingleApplication-3.3.0/examples/calculator/button.cpp b/third_party/SingleApplication-3.3.2/examples/calculator/button.cpp similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/calculator/button.cpp rename to third_party/SingleApplication-3.3.2/examples/calculator/button.cpp diff --git a/third_party/SingleApplication-3.3.0/examples/calculator/button.h b/third_party/SingleApplication-3.3.2/examples/calculator/button.h similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/calculator/button.h rename to third_party/SingleApplication-3.3.2/examples/calculator/button.h diff --git a/third_party/SingleApplication-3.3.0/examples/calculator/calculator.cpp b/third_party/SingleApplication-3.3.2/examples/calculator/calculator.cpp similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/calculator/calculator.cpp rename to third_party/SingleApplication-3.3.2/examples/calculator/calculator.cpp diff --git a/third_party/SingleApplication-3.3.0/examples/calculator/calculator.h b/third_party/SingleApplication-3.3.2/examples/calculator/calculator.h similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/calculator/calculator.h rename to third_party/SingleApplication-3.3.2/examples/calculator/calculator.h diff --git a/third_party/SingleApplication-3.3.0/examples/calculator/calculator.pro b/third_party/SingleApplication-3.3.2/examples/calculator/calculator.pro similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/calculator/calculator.pro rename to third_party/SingleApplication-3.3.2/examples/calculator/calculator.pro diff --git a/third_party/SingleApplication-3.3.0/examples/calculator/main.cpp b/third_party/SingleApplication-3.3.2/examples/calculator/main.cpp similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/calculator/main.cpp rename to third_party/SingleApplication-3.3.2/examples/calculator/main.cpp diff --git a/third_party/SingleApplication-3.3.0/examples/sending_arguments/CMakeLists.txt b/third_party/SingleApplication-3.3.2/examples/sending_arguments/CMakeLists.txt similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/sending_arguments/CMakeLists.txt rename to third_party/SingleApplication-3.3.2/examples/sending_arguments/CMakeLists.txt diff --git a/third_party/SingleApplication-3.3.0/examples/sending_arguments/main.cpp b/third_party/SingleApplication-3.3.2/examples/sending_arguments/main.cpp similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/sending_arguments/main.cpp rename to third_party/SingleApplication-3.3.2/examples/sending_arguments/main.cpp diff --git a/third_party/SingleApplication-3.3.0/examples/sending_arguments/messagereceiver.cpp b/third_party/SingleApplication-3.3.2/examples/sending_arguments/messagereceiver.cpp similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/sending_arguments/messagereceiver.cpp rename to third_party/SingleApplication-3.3.2/examples/sending_arguments/messagereceiver.cpp diff --git a/third_party/SingleApplication-3.3.0/examples/sending_arguments/messagereceiver.h b/third_party/SingleApplication-3.3.2/examples/sending_arguments/messagereceiver.h similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/sending_arguments/messagereceiver.h rename to third_party/SingleApplication-3.3.2/examples/sending_arguments/messagereceiver.h diff --git a/third_party/SingleApplication-3.3.0/examples/sending_arguments/sending_arguments.pro b/third_party/SingleApplication-3.3.2/examples/sending_arguments/sending_arguments.pro similarity index 100% rename from third_party/SingleApplication-3.3.0/examples/sending_arguments/sending_arguments.pro rename to third_party/SingleApplication-3.3.2/examples/sending_arguments/sending_arguments.pro diff --git a/third_party/SingleApplication-3.3.0/singleapplication.cpp b/third_party/SingleApplication-3.3.2/singleapplication.cpp similarity index 100% rename from third_party/SingleApplication-3.3.0/singleapplication.cpp rename to third_party/SingleApplication-3.3.2/singleapplication.cpp diff --git a/third_party/SingleApplication-3.3.0/singleapplication.h b/third_party/SingleApplication-3.3.2/singleapplication.h similarity index 100% rename from third_party/SingleApplication-3.3.0/singleapplication.h rename to third_party/SingleApplication-3.3.2/singleapplication.h diff --git a/third_party/SingleApplication-3.3.0/singleapplication.pri b/third_party/SingleApplication-3.3.2/singleapplication.pri similarity index 100% rename from third_party/SingleApplication-3.3.0/singleapplication.pri rename to third_party/SingleApplication-3.3.2/singleapplication.pri diff --git a/third_party/SingleApplication-3.3.0/singleapplication_p.cpp b/third_party/SingleApplication-3.3.2/singleapplication_p.cpp similarity index 95% rename from third_party/SingleApplication-3.3.0/singleapplication_p.cpp rename to third_party/SingleApplication-3.3.2/singleapplication_p.cpp index 4069ef78..6702b943 100644 --- a/third_party/SingleApplication-3.3.0/singleapplication_p.cpp +++ b/third_party/SingleApplication-3.3.2/singleapplication_p.cpp @@ -144,8 +144,17 @@ void SingleApplicationPrivate::genBlockServerName() } if( ! (options & SingleApplication::Mode::ExcludeAppPath) ){ -#ifdef Q_OS_WIN +#if defined(Q_OS_WIN) appData.addData( SingleApplication::app_t::applicationFilePath().toLower().toUtf8() ); +#elif defined(Q_OS_LINUX) + // If the application is running as an AppImage then the APPIMAGE env var should be used + // instead of applicationPath() as each instance is launched with its own executable path + const QByteArray appImagePath = qgetenv( "APPIMAGE" ); + if( appImagePath.isEmpty() ){ // Not running as AppImage: use path to executable file + appData.addData( SingleApplication::app_t::applicationFilePath().toUtf8() ); + } else { // Running as AppImage: Use absolute path to AppImage file + appData.addData( appImagePath ); + }; #else appData.addData( SingleApplication::app_t::applicationFilePath().toUtf8() ); #endif @@ -494,14 +503,14 @@ void SingleApplicationPrivate::slotDataAvailable( QLocalSocket *dataSocket, quin if ( !isFrameComplete( dataSocket ) ) return; - auto message = dataSocket->readAll(); + const QByteArray message = dataSocket->readAll(); writeAck( dataSocket ); ConnectionInfo &info = connectionMap[dataSocket]; info.stage = StageConnectedHeader; - Q_EMIT q->receivedMessage(instanceId, message); + Q_EMIT q->receivedMessage( instanceId, message); } void SingleApplicationPrivate::slotClientConnectionClosed( QLocalSocket *closedSocket, quint32 instanceId ) diff --git a/third_party/SingleApplication-3.3.0/singleapplication_p.h b/third_party/SingleApplication-3.3.2/singleapplication_p.h similarity index 100% rename from third_party/SingleApplication-3.3.0/singleapplication_p.h rename to third_party/SingleApplication-3.3.2/singleapplication_p.h