diff --git a/include/RemotePlugin.h b/include/RemotePlugin.h index 0a14458f6..67f0c3807 100644 --- a/include/RemotePlugin.h +++ b/include/RemotePlugin.h @@ -25,7 +25,6 @@ #ifndef REMOTE_PLUGIN_H #define REMOTE_PLUGIN_H -#include "lmms_export.h" #include "MidiEvent.h" #include "VstSyncData.h" @@ -89,6 +88,7 @@ typedef int32_t key_t; #endif #else +#include "lmms_export.h" #include #include #include @@ -886,6 +886,7 @@ private: private slots: void processFinished( int exitCode, QProcess::ExitStatus exitStatus ); + void processErrored(QProcess::ProcessError err ); } ; #endif diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 392a2ad45..21c174d0b 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -94,9 +94,7 @@ IF(MSVC) organic ReverbSC sid - vestige vibed - vst_base VstEffect Xpressive zynaddsubfx diff --git a/plugins/vestige/CMakeLists.txt b/plugins/vestige/CMakeLists.txt index 21803a924..823c03202 100644 --- a/plugins/vestige/CMakeLists.txt +++ b/plugins/vestige/CMakeLists.txt @@ -1,6 +1,5 @@ IF(LMMS_SUPPORT_VST) INCLUDE(BuildPlugin) - INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/../vst_base") LINK_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/..") IF(LMMS_BUILD_LINUX) LINK_LIBRARIES(-Wl,--enable-new-dtags) @@ -10,7 +9,6 @@ IF(LMMS_SUPPORT_VST) SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${PLUGIN_DIR}") ENDIF() BUILD_PLUGIN(vestige vestige.cpp vestige.h MOCFILES vestige.h EMBEDDED_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/*.png") - TARGET_LINK_LIBRARIES(vestige -lvstbase) - ADD_DEPENDENCIES(vestige vstbase) + TARGET_LINK_LIBRARIES(vestige vstbase) ENDIF(LMMS_SUPPORT_VST) diff --git a/plugins/vestige/vestige.cpp b/plugins/vestige/vestige.cpp index b8204f404..710d9fe55 100644 --- a/plugins/vestige/vestige.cpp +++ b/plugins/vestige/vestige.cpp @@ -22,6 +22,10 @@ * */ +#include + +#include "VstPlugin.h" + #include "vestige.h" #include @@ -41,7 +45,7 @@ #include "gui_templates.h" #include "InstrumentPlayHandle.h" #include "InstrumentTrack.h" -#include "VstPlugin.h" + #include "MainWindow.h" #include "Mixer.h" #include "GuiApplication.h" @@ -52,6 +56,7 @@ #include "ToolTip.h" #include "FileDialog.h" + #include "embed.h" @@ -59,7 +64,7 @@ extern "C" { -Plugin::Descriptor PLUGIN_EXPORT vestige_plugin_descriptor = +Plugin::Descriptor Q_DECL_EXPORT vestige_plugin_descriptor = { STRINGIFY( PLUGIN_NAME ), "VeSTige", @@ -612,7 +617,7 @@ void VestigeInstrumentView::updateMenu( void ) QMenu * to_menu = m_selPresetButton->menu(); to_menu->clear(); - QAction *presetActions[list1.size()]; + QVector presetActions(list1.size()); for (int i = 0; i < list1.size(); i++) { presetActions[i] = new QAction(this); @@ -1163,7 +1168,7 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +Q_DECL_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) { return new vestigeInstrument( static_cast( _data ) ); } diff --git a/plugins/vst_base/CMakeLists.txt b/plugins/vst_base/CMakeLists.txt index b0a478232..eccfb4246 100644 --- a/plugins/vst_base/CMakeLists.txt +++ b/plugins/vst_base/CMakeLists.txt @@ -1,93 +1,110 @@ -IF(LMMS_SUPPORT_VST) +IF(NOT LMMS_SUPPORT_VST) + RETURN() +ENDIF() INCLUDE(BuildPlugin) -IF(LMMS_BUILD_WIN32) - ADD_DEFINITIONS(-DPTW32_STATIC_LIB) - ADD_EXECUTABLE(RemoteVstPlugin "${CMAKE_CURRENT_SOURCE_DIR}/RemoteVstPlugin.cpp") +SET(LMMS_BINARY_DIR ${CMAKE_BINARY_DIR}) +SET(LMMS_SOURCE_DIR ${CMAKE_SOURCE_DIR}) +SET(EXTERNALPROJECT_ARGS "") - TARGET_LINK_LIBRARIES(RemoteVstPlugin Qt5::Core) - TARGET_LINK_LIBRARIES(RemoteVstPlugin -lpthread -lgdi32 -lws2_32) - SET_TARGET_PROPERTIES(RemoteVstPlugin PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -O0") - ADD_CUSTOM_COMMAND(TARGET RemoteVstPlugin POST_BUILD COMMAND "${STRIP}" "$") - INSTALL(TARGETS RemoteVstPlugin RUNTIME DESTINATION "${PLUGIN_DIR}") +# build 32 bit version of RemoteVstPlugin +IF(LMMS_BUILD_WIN64 AND MSVC) + INCLUDE(ExternalProject) - # FIXME: 32-bit VST fails on MSYS - IF(LMMS_BUILD_WIN64 AND NOT LMMS_BUILD_MSYS) - # build 32 bit version of RemoteVstPlugin for Win64 so we can load - # 32 bit VST plugins - ADD_SUBDIRECTORY(Win64) - ENDIF(LMMS_BUILD_WIN64 AND NOT LMMS_BUILD_MSYS) -ENDIF(LMMS_BUILD_WIN32) + SET(MSVC_VER ${CMAKE_CXX_COMPILER_VERSION}) -SET(REMOTE_VST_PLUGIN_FILEPATH "RemoteVstPlugin" CACHE STRING "Relative file path to RemoteVstPlugin") - -INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/src/3rdparty/qt5-x11embed/src/") -ADD_DEFINITIONS(-DREMOTE_VST_PLUGIN_FILEPATH="${REMOTE_VST_PLUGIN_FILEPATH}") -BUILD_PLUGIN(vstbase vst_base.cpp VstPlugin.cpp VstPlugin.h communication.h MOCFILES VstPlugin.h) - -IF(LMMS_BUILD_LINUX) - TARGET_LINK_LIBRARIES(vstbase qx11embedcontainer) -ENDIF() - -IF(LMMS_BUILD_LINUX AND NOT WANT_VST_NOWINE) - -IF(LMMS_HOST_X86_64) - SET(EXTRA_FLAGS -m32) - IF(WINE_LIBRARY_FIX) - SET(EXTRA_FLAGS ${EXTRA_FLAGS} -nodefaultlibs ${WINE_LIBRARY_FIX}wine/libwinecrt0.a -L${WINE_LIBRARY_FIX}wine/ -luser32 -lkernel32 -lgdi32) - ENDIF() -ENDIF(LMMS_HOST_X86_64) - -SET(WINE_CXX_FLAGS "" CACHE STRING "Extra flags passed to wineg++") - -STRING(REPLACE "include/wine" "include" WINE_INCLUDE_BASE_DIR ${WINE_INCLUDE_DIR}) -STRING(REPLACE "lib/libwine.so" "lib" WINE_LIBRARY_DIR ${WINE_LIBRARY}) -STRING(REPLACE " " ";" WINE_BUILD_FLAGS ${CMAKE_CXX_FLAGS} " " ${CMAKE_EXE_LINKER_FLAGS} " " ${WINE_CXX_FLAGS}) - -SET(WINE_CXX_ARGS - -I${CMAKE_BINARY_DIR} - -I${CMAKE_SOURCE_DIR}/include - -I${WINE_INCLUDE_BASE_DIR} - -I${WINE_INCLUDE_DIR}/windows - -L${WINE_LIBRARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/RemoteVstPlugin.cpp - -std=c++0x - -mwindows -lpthread ${EXTRA_FLAGS} -fno-omit-frame-pointer - ${WINE_BUILD_FLAGS} - -o ../RemoteVstPlugin -) - -# winegcc fails if winebuild is not in path -GET_FILENAME_COMPONENT(WINE_BINDIR ${WINE_CXX} PATH) -FIND_PROGRAM(WINEBUILD winebuild NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH) -IF(NOT WINEBUILD) - IF(CMAKE_VERSION VERSION_LESS 3.1) - MESSAGE(WARNING "winebuild is not in PATH. Building RemoteVstPlugin may fail.") + IF(MSVC_VER VERSION_GREATER 19.0 OR MSVC_VER VERSION_EQUAL 19.0) + SET(GENERATOR "Visual Studio 14 2015") + SET(MSVC_YEAR 2015) + ELSEIF(MSVC_VER VERSION_EQUAL 19.10 OR MSVC_VER VERSION_EQUAL 19.10) + SET(GENERATOR "Visual Studio 15 2017") + SET(MSVC_YEAR 2017) ELSE() - SET(WINE_CXX_ARGS -E env PATH=$ENV{PATH}:${WINE_BINDIR} ${WINE_CXX} ${WINE_CXX_ARGS}) - SET(WINE_CXX "${CMAKE_COMMAND}") + MESSAGE(SEND_ERROR "Can't build RemoteVstPlugin32, unknown MSVC version ${MSVC_VER}") ENDIF() + + GET_FILENAME_COMPONENT(QT_BIN_DIR ${QT_QMAKE_EXECUTABLE} DIRECTORY) + SET(QT_32_PREFIX "${QT_BIN_DIR}/../../msvc${MSVC_YEAR}") + IF(NOT (IS_DIRECTORY ${QT_32_PREFIX} AND EXISTS ${QT_32_PREFIX}/bin/qmake.exe)) + MESSAGE(SEND_ERROR "Can't build RemoteVstPlugin32, no Qt 32 bit installation found at ${QT_32_PREFIX}") + ENDIF() + + ExternalProject_Add(RemoteVstPlugin32 + SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin" + INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/../" + CMAKE_GENERATOR ${GENERATOR} + CMAKE_ARGS + -DLMMS_SOURCE_DIR=${CMAKE_SOURCE_DIR} + -DLMMS_BINARY_DIR=${CMAKE_BINARY_DIR} + -DCMAKE_PREFIX_PATH=${QT_32_PREFIX} + -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + INSTALL_COMMAND "" + BUILD_ALWAYS ON + ) +ELSEIF(LMMS_BUILD_WIN32) + ADD_SUBDIRECTORY(RemoteVstPlugin) +ELSEIF(LMMS_BUILD_LINUX AND NOT WANT_VST_NOWINE) + IF(LMMS_HOST_X86_64) + SET(EXTRA_FLAGS -m32) + IF(WINE_LIBRARY_FIX) + SET(EXTRA_FLAGS ${EXTRA_FLAGS} -nodefaultlibs ${WINE_LIBRARY_FIX}wine/libwinecrt0.a -L${WINE_LIBRARY_FIX}wine/ -luser32 -lkernel32 -lgdi32) + ENDIF() + ENDIF(LMMS_HOST_X86_64) + + SET(WINE_CXX_FLAGS "" CACHE STRING "Extra flags passed to wineg++") + + STRING(REPLACE "include/wine" "include" WINE_INCLUDE_BASE_DIR ${WINE_INCLUDE_DIR}) + STRING(REPLACE "lib/libwine.so" "lib" WINE_LIBRARY_DIR ${WINE_LIBRARY}) + STRING(REPLACE " " ";" WINE_BUILD_FLAGS ${CMAKE_CXX_FLAGS} " " ${CMAKE_EXE_LINKER_FLAGS} " " ${WINE_CXX_FLAGS}) + + SET(WINE_CXX_ARGS + -I${CMAKE_BINARY_DIR} + -I${CMAKE_SOURCE_DIR}/include + -I${WINE_INCLUDE_BASE_DIR} + -I${WINE_INCLUDE_DIR}/windows + -L${WINE_LIBRARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/RemoteVstPlugin.cpp + -std=c++0x + -mwindows -lpthread ${EXTRA_FLAGS} -fno-omit-frame-pointer + ${WINE_BUILD_FLAGS} + -o ../RemoteVstPlugin + ) + + # winegcc fails if winebuild is not in path + GET_FILENAME_COMPONENT(WINE_BINDIR ${WINE_CXX} PATH) + FIND_PROGRAM(WINEBUILD winebuild NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH) + IF(NOT WINEBUILD) + IF(CMAKE_VERSION VERSION_LESS 3.1) + MESSAGE(WARNING "winebuild is not in PATH. Building RemoteVstPlugin may fail.") + ELSE() + SET(WINE_CXX_ARGS -E env PATH=$ENV{PATH}:${WINE_BINDIR} ${WINE_CXX} ${WINE_CXX_ARGS}) + SET(WINE_CXX "${CMAKE_COMMAND}") + ENDIF() + ENDIF() + + set(ENV{PATH} "$ENV{PATH}:${WINE_BINDIR}") + + ADD_CUSTOM_COMMAND( + SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/RemoteVstPlugin.cpp" + COMMAND export + ARGS "PATH=$PATH:${WINE_BINDIR}" + COMMAND ${WINE_CXX} + ARGS ${WINE_CXX_ARGS} + # Ensure correct file extension + COMMAND sh -c "mv ../RemoteVstPlugin.exe ../RemoteVstPlugin || true" + TARGET vstbase + OUTPUTS ../RemoteVstPlugin + VERBATIM + ) + + SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ../RemoteVstPlugin32.exe.so) + INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin32" "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin32.exe.so" DESTINATION "${PLUGIN_DIR}") ENDIF() -set(ENV{PATH} "$ENV{PATH}:${WINE_BINDIR}") +# build 64 bit version of RemoteVstPlugin +IF(LMMS_BUILD_WIN64) + ADD_SUBDIRECTORY(RemoteVstPlugin) +ENDIF() -ADD_CUSTOM_COMMAND( - SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/RemoteVstPlugin.cpp" - COMMAND export - ARGS "PATH=$PATH:${WINE_BINDIR}" - COMMAND ${WINE_CXX} - ARGS ${WINE_CXX_ARGS} - # Ensure correct file extension - COMMAND sh -c "mv ../RemoteVstPlugin.exe ../RemoteVstPlugin || true" - TARGET vstbase - OUTPUTS ../RemoteVstPlugin - VERBATIM -) - -SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ../RemoteVstPlugin.exe.so) -INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin" "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin.exe.so" DESTINATION "${PLUGIN_DIR}") -ENDIF(LMMS_BUILD_LINUX AND NOT WANT_VST_NOWINE) - - -ENDIF(LMMS_SUPPORT_VST) +ADD_SUBDIRECTORY(vstbase) diff --git a/plugins/vst_base/RemoteVstPlugin/CMakeLists.txt b/plugins/vst_base/RemoteVstPlugin/CMakeLists.txt new file mode 100644 index 000000000..d077a80c0 --- /dev/null +++ b/plugins/vst_base/RemoteVstPlugin/CMakeLists.txt @@ -0,0 +1,33 @@ +cmake_minimum_required(VERSION 3.0.0) +project(RemoteVstPlugin + LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 11) + +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(BITNESS 64) +else() + set(BITNESS 32) +endif() + +set(EXE_NAME RemoteVstPlugin${BITNESS}) + +add_executable(${EXE_NAME} + ../RemoteVstPlugin.cpp +) + +target_include_directories(${EXE_NAME} + PRIVATE + "${LMMS_SOURCE_DIR}/plugins/vst_base/common" + "${LMMS_SOURCE_DIR}/include" + "${LMMS_BINARY_DIR}" +) + +if(WIN32) + find_package(Qt5 REQUIRED COMPONENTS Core) + target_link_libraries(${EXE_NAME} Qt5::Core) +endif() + +IF(STRIP) + ADD_CUSTOM_COMMAND(TARGET RemoteVstPlugin32 POST_BUILD COMMAND "${STRIP}" "$") +ENDIF() diff --git a/plugins/vst_base/VstPlugin.cpp b/plugins/vst_base/VstPlugin.cpp index 26c789275..6096a0d49 100644 --- a/plugins/vst_base/VstPlugin.cpp +++ b/plugins/vst_base/VstPlugin.cpp @@ -24,6 +24,8 @@ #include "VstPlugin.h" +#include "communication.h" + #include #include #include @@ -79,12 +81,14 @@ VstPlugin::VstPlugin( const QString & _plugin ) : { setSplittedChannels( true ); - tryLoad( REMOTE_VST_PLUGIN_FILEPATH ); #ifdef LMMS_BUILD_WIN64 + tryLoad( "RemoteVstPlugin64" ); if( m_badDllFormat ) { m_badDllFormat = false; - tryLoad( "32/RemoteVstPlugin32" ); +#endif + tryLoad( "RemoteVstPlugin32" ); +#ifdef LMMS_BUILD_WIN64 } #endif diff --git a/plugins/vst_base/VstPlugin.h b/plugins/vst_base/VstPlugin.h index 9e8b39771..6ef325497 100644 --- a/plugins/vst_base/VstPlugin.h +++ b/plugins/vst_base/VstPlugin.h @@ -33,12 +33,14 @@ #include #include "JournallingObject.h" -#include "communication.h" +#include "RemotePlugin.h" + +#include "vstbase_export.h" class vstSubWin; -class PLUGIN_EXPORT VstPlugin : public RemotePlugin, public JournallingObject +class VSTBASE_EXPORT VstPlugin : public RemotePlugin, public JournallingObject { Q_OBJECT public: diff --git a/plugins/vst_base/Win64/CMakeLists.txt b/plugins/vst_base/Win64/CMakeLists.txt deleted file mode 100644 index 39b9b5a9b..000000000 --- a/plugins/vst_base/Win64/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}" "${CMAKE_SOURCE_DIR}/include") -SET(CMAKE_CXX_COMPILER "${CMAKE_CXX_COMPILER32}") - -ADD_EXECUTABLE(RemoteVstPlugin32 "${CMAKE_CURRENT_SOURCE_DIR}/../RemoteVstPlugin.cpp") - -SET(QTCORE "Qt5Core") -TARGET_LINK_LIBRARIES(RemoteVstPlugin32 -l${QTCORE} -lpthread -lgdi32 -lws2_32) - -ADD_CUSTOM_COMMAND(TARGET RemoteVstPlugin32 POST_BUILD COMMAND "${STRIP}" "$") -SET_TARGET_PROPERTIES(RemoteVstPlugin32 PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -O0") - -INSTALL(TARGETS RemoteVstPlugin32 RUNTIME DESTINATION "${PLUGIN_DIR}/32") -INSTALL(FILES "${MINGW_PREFIX32}/bin/${QTCORE}.dll" "${MINGW_PREFIX32}/bin/zlib1.dll" "${MINGW_PREFIX32}/${CMAKE_SYSTEM_PROCESSOR32}-w64-mingw32/bin/libwinpthread-1.dll" - DESTINATION "${PLUGIN_DIR}/32") - diff --git a/plugins/vst_base/communication.h b/plugins/vst_base/communication.h index bacf43c1e..cfe136627 100644 --- a/plugins/vst_base/communication.h +++ b/plugins/vst_base/communication.h @@ -27,8 +27,6 @@ #ifndef _COMMUNICATION_H #define _COMMUNICATION_H -#include "RemotePlugin.h" - struct VstParameterDumpItem diff --git a/plugins/vst_base/vst_base.cpp b/plugins/vst_base/vst_base.cpp index 1c1770abe..0ca1159a2 100644 --- a/plugins/vst_base/vst_base.cpp +++ b/plugins/vst_base/vst_base.cpp @@ -26,12 +26,12 @@ #include "Plugin.h" #include "embed.h" - +#include "vstbase_export.h" extern "C" { -Plugin::Descriptor PLUGIN_EXPORT vstbase_plugin_descriptor = +Plugin::Descriptor VSTBASE_EXPORT vstbase_plugin_descriptor = { STRINGIFY( PLUGIN_NAME ), "VST Base", diff --git a/plugins/vst_base/vstbase/CMakeLists.txt b/plugins/vst_base/vstbase/CMakeLists.txt new file mode 100644 index 000000000..28c09edb3 --- /dev/null +++ b/plugins/vst_base/vstbase/CMakeLists.txt @@ -0,0 +1,14 @@ +BUILD_PLUGIN(vstbase + ../vst_base.cpp ../VstPlugin.cpp ../VstPlugin.h ../communication.h + MOCFILES ../VstPlugin.h + EXPORT_BASE_NAME vstbase + LINK SHARED +) + +TARGET_INCLUDE_DIRECTORIES(vstbase + PUBLIC ../ +) + +IF(LMMS_BUILD_LINUX) + TARGET_LINK_LIBRARIES(vstbase qx11embedcontainer) +ENDIF() diff --git a/src/core/RemotePlugin.cpp b/src/core/RemotePlugin.cpp index 64b5e592d..7b10ed50b 100644 --- a/src/core/RemotePlugin.cpp +++ b/src/core/RemotePlugin.cpp @@ -33,6 +33,7 @@ #include "Mixer.h" #include "Engine.h" +#include #include #ifndef SYNC_WITH_SHM_FIFO @@ -78,7 +79,6 @@ RemotePlugin::RemotePlugin() : RemotePluginBase(), #endif m_failed( true ), - m_process(), m_watcher( this ), m_commMutex( QMutex::Recursive ), m_splitChannels( false ), @@ -120,6 +120,11 @@ RemotePlugin::RemotePlugin() : qWarning( "Unable to start the server." ); } #endif + + connect( &m_process, SIGNAL( finished( int, QProcess::ExitStatus ) ), + this, SLOT( processFinished( int, QProcess::ExitStatus ) ) ); + connect( &m_process, SIGNAL( errorOccured( QProcess::ProcessError ) ), + this, SLOT( processErrored( QProcess::ProcessError ) ) ); } @@ -219,9 +224,6 @@ bool RemotePlugin::init(const QString &pluginExecutable, qDebug() << exec << args; #endif - connect( &m_process, SIGNAL( finished( int, QProcess::ExitStatus ) ), - this, SLOT( processFinished( int, QProcess::ExitStatus ) ) ); - #ifndef SYNC_WITH_SHM_FIFO struct pollfd pollin; pollin.fd = m_server; @@ -454,11 +456,24 @@ void RemotePlugin::resizeSharedProcessingMemory() void RemotePlugin::processFinished( int exitCode, QProcess::ExitStatus exitStatus ) { + if ( exitStatus == QProcess::CrashExit ) + { + qCritical() << "Remote plugin crashed"; + } + else if ( exitCode ) + { + qCritical() << "Remote plugin exit code: " << exitCode; + } #ifndef SYNC_WITH_SHM_FIFO invalidate(); #endif } +void RemotePlugin::processErrored( QProcess::ProcessError err ) +{ + qCritical() << "Process error: " << err; +} +