diff --git a/modules/juce_events/messages/juce_MessageManager.h b/modules/juce_events/messages/juce_MessageManager.h index 4e57055b89..d3a1a5ede2 100644 --- a/modules/juce_events/messages/juce_MessageManager.h +++ b/modules/juce_events/messages/juce_MessageManager.h @@ -96,9 +96,9 @@ public: //============================================================================== /** Asynchronously invokes a function or C++11 lambda on the message thread. */ template - static void callAsync (FunctionType functionToCall) + static void callAsync (FunctionType&& functionToCall) { - new AsyncCallInvoker (functionToCall); + new AsyncCallInvoker (std::forward (functionToCall)); } /** Calls a function using the message-thread. @@ -343,8 +343,8 @@ private: template struct AsyncCallInvoker : public MessageBase { - AsyncCallInvoker (FunctionType f) : callback (f) { post(); } - void messageCallback() override { callback(); } + AsyncCallInvoker (FunctionType&& f) : callback (std::forward (f)) { post(); } + void messageCallback() override { callback(); } FunctionType callback; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AsyncCallInvoker)