From 89854c55b9f7bfbc856b64e25bf5ee856b028c90 Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 8 Oct 2014 11:26:55 +0100 Subject: [PATCH] Added flag JUCE_COMPILER_SUPPORTS_LAMBDAS --- modules/juce_core/system/juce_PlatformDefs.h | 9 +++++++++ modules/juce_events/messages/juce_MessageManager.cpp | 3 +++ modules/juce_events/messages/juce_MessageManager.h | 2 ++ 3 files changed, 14 insertions(+) diff --git a/modules/juce_core/system/juce_PlatformDefs.h b/modules/juce_core/system/juce_PlatformDefs.h index 4086dfa9f4..5049dcddc1 100644 --- a/modules/juce_core/system/juce_PlatformDefs.h +++ b/modules/juce_core/system/juce_PlatformDefs.h @@ -337,6 +337,10 @@ namespace juce #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && ! defined (JUCE_DELETED_FUNCTION) #define JUCE_DELETED_FUNCTION = delete #endif + + #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && ! defined (JUCE_COMPILER_SUPPORTS_LAMBDAS) + #define JUCE_COMPILER_SUPPORTS_LAMBDAS 1 + #endif #endif #if JUCE_CLANG && defined (__has_feature) @@ -356,6 +360,10 @@ namespace juce #define JUCE_DELETED_FUNCTION = delete #endif + #if __has_feature (cxx_lambdas) + #define JUCE_COMPILER_SUPPORTS_LAMBDAS 1 + #endif + #ifndef JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL #define JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL 1 #endif @@ -372,6 +380,7 @@ namespace juce #if defined (_MSC_VER) && _MSC_VER >= 1700 #define JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL 1 + #define JUCE_COMPILER_SUPPORTS_LAMBDAS 1 #endif #ifndef JUCE_DELETED_FUNCTION diff --git a/modules/juce_events/messages/juce_MessageManager.cpp b/modules/juce_events/messages/juce_MessageManager.cpp index cfaf8cfa83..44c2adc80f 100644 --- a/modules/juce_events/messages/juce_MessageManager.cpp +++ b/modules/juce_events/messages/juce_MessageManager.cpp @@ -131,6 +131,7 @@ void MessageManager::stopDispatchLoop() #endif //============================================================================== +#if JUCE_COMPILER_SUPPORTS_LAMBDAS struct AsyncFunction : private MessageManager::MessageBase { AsyncFunction (std::function f) : fn (f) { post(); } @@ -146,7 +147,9 @@ void MessageManager::callAsync (std::function f) { new AsyncFunction (f); } +#endif +//============================================================================== class AsyncFunctionCallback : public MessageManager::MessageBase { public: diff --git a/modules/juce_events/messages/juce_MessageManager.h b/modules/juce_events/messages/juce_MessageManager.h index bd91977c8c..0901b29d3b 100644 --- a/modules/juce_events/messages/juce_MessageManager.h +++ b/modules/juce_events/messages/juce_MessageManager.h @@ -91,10 +91,12 @@ public: #endif //============================================================================== + #if JUCE_COMPILER_SUPPORTS_LAMBDAS /** Asynchronously invokes a function or C++11 lambda on the message thread. Internally this uses the CallbackMessage class to invoke the callback. */ static void callAsync (std::function); + #endif /** Calls a function using the message-thread.