--- /dev/null 2019-03-19 11:03:33.121000004 +1100 +++ rstudio-1.1.463/src/cpp/core/include/core/BoostSignals.hpp 2018-11-17 21:24:35.285976284 +1100 @@ -0,0 +1,40 @@ +/* + * BoostSignals.hpp + * + * Copyright (C) 2009-18 by RStudio, Inc. + * + * Unless you have received this program directly from RStudio pursuant + * to the terms of a commercial license agreement with RStudio, then + * this program is licensed to you under the terms of version 3 of the + * GNU Affero General Public License. This program is distributed WITHOUT + * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, + * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the + * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details. + * + */ + +#ifndef CORE_RSTUDIO_BOOST_SIGNALS_HPP +#define CORE_RSTUDIO_BOOST_SIGNALS_HPP + +#if RSTUDIO_BOOST_SIGNALS_VERSION == 1 + +# include +# define RSTUDIO_BOOST_SIGNAL boost::signal +# define RSTUDIO_BOOST_CONNECTION boost::signals::connection +# define RSTUDIO_BOOST_SCOPED_CONNECTION boost::signals::scoped_connection +# define RSTUDIO_BOOST_LAST_VALUE boost::last_value + +#elif RSTUDIO_BOOST_SIGNALS_VERSION == 2 + +# include +# define RSTUDIO_BOOST_SIGNAL boost::signals2::signal +# define RSTUDIO_BOOST_CONNECTION boost::signals2::connection +# define RSTUDIO_BOOST_SCOPED_CONNECTION boost::signals2::scoped_connection +# define RSTUDIO_BOOST_LAST_VALUE boost::signals2::last_value + +#else +# error "Unrecognized RSTUDIO_BOOST_SIGNALS_VERSION" +#endif + +#endif // CORE_RSTUDIO_BOOST_SIGNALS_HPP + --- rstudio-1.1.463-orig/src/cpp/CMakeLists.txt 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/CMakeLists.txt 2018-11-17 21:24:35.285976284 +1100 @@ -208,6 +208,18 @@ message(STATUS "Using RStudio-provided Boost ${BOOST_VERSION}") endif() +# allow opt-in to using Boost.Signals2 +# TODO: remove this in RStudio v1.3 and port to signals2 +if(NOT RSTUDIO_BOOST_SIGNALS_VERSION) + if (BOOST_VERSION VERSION_LESS 1.69.0) + set(RSTUDIO_BOOST_SIGNALS_VERSION 1) + else() + set(RSTUDIO_BOOST_SIGNALS_VERSION 2) + endif() +endif() + +message(STATUS "Using Booost.Signals version ${RSTUDIO_BOOST_SIGNALS_VERSION}") +add_definitions(-DRSTUDIO_BOOST_SIGNALS_VERSION=${RSTUDIO_BOOST_SIGNALS_VERSION}) # add boost as system include directory include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) --- rstudio-1.1.463-orig/src/cpp/r/include/r/session/RConsoleHistory.hpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/r/include/r/session/RConsoleHistory.hpp 2018-11-17 21:24:35.285976284 +1100 @@ -20,8 +20,8 @@ #include #include -#include +#include #include namespace rstudio { @@ -44,7 +44,7 @@ public: typedef boost::circular_buffer::value_type value_type; typedef boost::circular_buffer::const_iterator const_iterator; - typedef boost::signal AddSignal; + typedef RSTUDIO_BOOST_SIGNAL AddSignal; private: ConsoleHistory(); @@ -86,8 +86,7 @@ core::Error loadFromFile(const core::FilePath& filePath, bool verifyFile); core::Error saveToFile(const core::FilePath& filePath) const; - boost::signals::connection connectOnAdd( - const AddSignal::slot_function_type& slot) + RSTUDIO_BOOST_CONNECTION connectOnAdd(const AddSignal::slot_function_type& slot) { return onAdd_.connect(slot); } --- rstudio-1.1.463-orig/src/cpp/r/include/r/session/RGraphics.hpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/r/include/r/session/RGraphics.hpp 2018-11-17 21:24:35.286976293 +1100 @@ -19,6 +19,8 @@ #include #include +#include + namespace rstudio { namespace r { namespace session { @@ -56,8 +58,8 @@ #include #include -#include +#include #include #include @@ -162,7 +164,7 @@ virtual void clear() = 0; // subscribe to showManipulator event - virtual boost::signal& onShowManipulator() = 0; + virtual RSTUDIO_BOOST_SIGNAL& onShowManipulator() = 0; // set manipulator values virtual void setPlotManipulatorValues(const core::json::Object& values) = 0; --- rstudio-1.1.463-orig/src/cpp/r/session/graphics/RGraphicsPlotManager.cpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/r/session/graphics/RGraphicsPlotManager.cpp 2018-11-17 21:24:35.286976293 +1100 @@ -540,7 +540,7 @@ -boost::signal& PlotManager::onShowManipulator() +RSTUDIO_BOOST_SIGNAL& PlotManager::onShowManipulator() { return plotManipulatorManager().onShowManipulator(); } --- rstudio-1.1.463-orig/src/cpp/r/session/graphics/RGraphicsPlotManager.hpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/r/session/graphics/RGraphicsPlotManager.hpp 2018-11-17 21:24:35.287976303 +1100 @@ -22,10 +22,10 @@ #include #include #include -#include #include #include +#include #include #include @@ -45,10 +45,10 @@ struct GraphicsDeviceEvents { - boost::signal onNewPage; - boost::signal onDrawing; - boost::signal onResized; - boost::signal onClosed; + RSTUDIO_BOOST_SIGNAL onNewPage; + RSTUDIO_BOOST_SIGNAL onDrawing; + RSTUDIO_BOOST_SIGNAL onResized; + RSTUDIO_BOOST_SIGNAL onClosed; }; class PlotManipulatorManager; @@ -110,7 +110,7 @@ virtual void clear(); - virtual boost::signal& onShowManipulator() ; + virtual RSTUDIO_BOOST_SIGNAL& onShowManipulator() ; virtual void setPlotManipulatorValues(const core::json::Object& values); virtual void manipulatorPlotClicked(int x, int y); --- rstudio-1.1.463-orig/src/cpp/r/session/graphics/RGraphicsPlotManipulatorManager.cpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/r/session/graphics/RGraphicsPlotManipulatorManager.cpp 2018-11-17 21:24:35.287976303 +1100 @@ -184,7 +184,7 @@ } -boost::signal& PlotManipulatorManager::onShowManipulator() +RSTUDIO_BOOST_SIGNAL& PlotManipulatorManager::onShowManipulator() { return onShowManipulator_; } --- rstudio-1.1.463-orig/src/cpp/r/session/graphics/RGraphicsPlotManipulatorManager.hpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/r/session/graphics/RGraphicsPlotManipulatorManager.hpp 2018-11-17 21:24:35.287976303 +1100 @@ -16,8 +16,7 @@ #ifndef R_SESSION_GRAPHICS_PLOT_MANIPULATOR_MANAGER_HPP #define R_SESSION_GRAPHICS_PLOT_MANIPULATOR_MANAGER_HPP -#include - +#include #include #include @@ -53,7 +52,7 @@ public: core::Error initialize(const UnitConversionFunctions& convert); - boost::signal& onShowManipulator() ; + RSTUDIO_BOOST_SIGNAL& onShowManipulator() ; void setPlotManipulatorValues(const core::json::Object& values); void manipulatorPlotClicked(int x, int y); @@ -85,7 +84,7 @@ bool replayingManipulator_; // manipulator event hook - boost::signal onShowManipulator_; + RSTUDIO_BOOST_SIGNAL onShowManipulator_; // unit conversion function UnitConversionFunctions convert_; --- rstudio-1.1.463-orig/src/cpp/server/include/server/ServerSessionManager.hpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/server/include/server/ServerSessionManager.hpp 2018-11-17 21:27:05.255436316 +1100 @@ -20,9 +20,9 @@ #include #include -#include #include +#include #include #include --- rstudio-1.1.463-orig/src/cpp/session/SessionMain.cpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/session/SessionMain.cpp 2018-11-17 21:24:35.288976313 +1100 @@ -33,12 +33,12 @@ #include #include -#include #include #include #include #include +#include #include #include #include --- rstudio-1.1.463-orig/src/cpp/session/SessionModuleContext.cpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/session/SessionModuleContext.cpp 2018-11-17 21:24:35.289976322 +1100 @@ -19,10 +19,10 @@ #include #include -#include #include #include +#include #include #include #include @@ -586,13 +586,13 @@ int nextGroup_; - boost::signal, + RSTUDIO_BOOST_SIGNAL, int, std::less > suspendSignal_; - boost::signal, + RSTUDIO_BOOST_SIGNAL, int, std::greater > resumeSignal_; }; --- rstudio-1.1.463-orig/src/cpp/session/include/session/SessionConsoleProcess.hpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/session/include/session/SessionConsoleProcess.hpp 2018-11-17 21:24:35.290976332 +1100 @@ -20,10 +20,10 @@ #include #include -#include #include #include +#include #include #include @@ -146,7 +146,7 @@ void setPromptHandler( const boost::function& onPrompt); - boost::signal& onExit() { return onExit_; } + RSTUDIO_BOOST_SIGNAL& onExit() { return onExit_; } std::string handle() const { return procInfo_->getHandle(); } InteractionMode interactionMode() const { return procInfo_->getInteractionMode(); } @@ -264,7 +264,7 @@ boost::mutex inputOutputQueueMutex_; boost::function onPrompt_; - boost::signal onExit_; + RSTUDIO_BOOST_SIGNAL onExit_; // regex for prompt detection boost::regex controlCharsPattern_; --- rstudio-1.1.463-orig/src/cpp/session/include/session/SessionModuleContext.hpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/session/include/session/SessionModuleContext.hpp 2018-11-17 21:28:25.019212857 +1100 @@ -21,9 +21,9 @@ #include #include -#include #include +#include #include #include #include @@ -315,35 +315,35 @@ // session events struct Events : boost::noncopyable { - boost::signal onSessionInfo; - boost::signal onClientInit; - boost::signal onBeforeExecute; - boost::signal onConsolePrompt; - boost::signal onConsoleInput; - boost::signal + RSTUDIO_BOOST_SIGNAL onSessionInfo; + RSTUDIO_BOOST_SIGNAL onClientInit; + RSTUDIO_BOOST_SIGNAL onBeforeExecute; + RSTUDIO_BOOST_SIGNAL onConsolePrompt; + RSTUDIO_BOOST_SIGNAL onConsoleInput; + RSTUDIO_BOOST_SIGNAL onActiveConsoleChanged; - boost::signal + RSTUDIO_BOOST_SIGNAL onConsoleOutput; - boost::signal onUserInterrupt; - boost::signal onDetectChanges; - boost::signal onSourceEditorFileSaved; - boost::signal onDeferredInit; - boost::signal afterSessionInitHook; - boost::signal onBackgroundProcessing; - boost::signal onShutdown; - boost::signal onQuit; - boost::signal onDestroyed; - boost::signal&)> + RSTUDIO_BOOST_SIGNAL onUserInterrupt; + RSTUDIO_BOOST_SIGNAL onDetectChanges; + RSTUDIO_BOOST_SIGNAL onSourceEditorFileSaved; + RSTUDIO_BOOST_SIGNAL onDeferredInit; + RSTUDIO_BOOST_SIGNAL afterSessionInitHook; + RSTUDIO_BOOST_SIGNAL onBackgroundProcessing; + RSTUDIO_BOOST_SIGNAL onShutdown; + RSTUDIO_BOOST_SIGNAL onQuit; + RSTUDIO_BOOST_SIGNAL onDestroyed; + RSTUDIO_BOOST_SIGNAL&)> onLibPathsChanged; - boost::signal onPackageLoaded; - boost::signal onPackageLibraryMutated; - boost::signal onPreferencesSaved; - boost::signal + RSTUDIO_BOOST_SIGNAL onPackageLoaded; + RSTUDIO_BOOST_SIGNAL onPackageLibraryMutated; + RSTUDIO_BOOST_SIGNAL onPreferencesSaved; + RSTUDIO_BOOST_SIGNAL onDistributedEvent; - boost::signal onPermissionsChanged; + RSTUDIO_BOOST_SIGNAL onPermissionsChanged; // signal for detecting extended type of documents - boost::signal), + RSTUDIO_BOOST_SIGNAL), firstNonEmpty > onDetectSourceExtendedType; }; --- rstudio-1.1.463-orig/src/cpp/session/include/session/SessionSourceDatabase.hpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/session/include/session/SessionSourceDatabase.hpp 2018-11-17 21:24:35.291976342 +1100 @@ -21,8 +21,8 @@ #include #include -#include +#include #include #include @@ -204,14 +204,14 @@ // source database events struct Events : boost::noncopyable { - boost::signal)> onDocUpdated; - boost::signal)> onDocUpdated; + RSTUDIO_BOOST_SIGNAL)> onDocRenamed; - boost::signal onDocAdded; - boost::signal onDocAdded; + RSTUDIO_BOOST_SIGNAL)> onDocPendingRemove; - boost::signal onDocRemoved; - boost::signal onRemoveAll; + RSTUDIO_BOOST_SIGNAL onDocRemoved; + RSTUDIO_BOOST_SIGNAL onRemoveAll; }; Events& events(); --- rstudio-1.1.463-orig/src/cpp/session/include/session/SessionUserSettings.hpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/session/include/session/SessionUserSettings.hpp 2018-11-17 21:24:35.291976342 +1100 @@ -20,8 +20,8 @@ #include #include -#include +#include #include #include #include @@ -62,7 +62,7 @@ friend UserSettings& userSettings(); public: - boost::signal onChanged; + RSTUDIO_BOOST_SIGNAL onChanged; public: // COPYING: boost::noncopyable --- rstudio-1.1.463-orig/src/cpp/session/include/session/projects/SessionProjects.hpp 2018-10-25 09:42:55.000000000 +1100 +++ rstudio-1.1.463/src/cpp/session/include/session/projects/SessionProjects.hpp 2018-11-17 21:24:35.291976342 +1100 @@ -22,8 +22,8 @@ #include #include #include -#include +#include #include #include #include @@ -220,10 +220,10 @@ bool hasFileMonitor_; std::vector monitorSubscribers_; - boost::signal&)> onMonitoringEnabled_; - boost::signal&)> + RSTUDIO_BOOST_SIGNAL&)> onMonitoringEnabled_; + RSTUDIO_BOOST_SIGNAL&)> onFilesChanged_; - boost::signal onMonitoringDisabled_; + RSTUDIO_BOOST_SIGNAL onMonitoringDisabled_; }; ProjectContext& projectContext();