diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2012-07-16 03:04:04 +0200 |
|---|---|---|
| committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2012-07-16 03:04:04 +0200 |
| commit | c732f39b553542c25883d1190b7c658a9b2d6f58 (patch) | |
| tree | 8dc3d0d653668413dcec8bb6fe94b9bafa6498ee | |
| parent | f4d29f813d1d5c2c1a12a72ebfd3b3f589a1db9d (diff) | |
GLibSignal: replace sigc::slot with std::function
(bzr r2501.1.2)
| -rw-r--r-- | UnityCore/Filter.h | 2 | ||||
| -rw-r--r-- | UnityCore/GLibSignal-inl.h | 3 | ||||
| -rw-r--r-- | UnityCore/GLibSignal.h | 5 | ||||
| -rw-r--r-- | tests/test_glib_signals.cpp | 1 |
4 files changed, 7 insertions, 4 deletions
diff --git a/UnityCore/Filter.h b/UnityCore/Filter.h index 213c50cc0..86c315c9f 100644 --- a/UnityCore/Filter.h +++ b/UnityCore/Filter.h @@ -24,7 +24,7 @@ #include <map> #include <memory> #include <NuxCore/Property.h> -#include <sigc++/trackable.h> +#include <sigc++/sigc++.h> #include "GLibSignal.h" #include "Variant.h" diff --git a/UnityCore/GLibSignal-inl.h b/UnityCore/GLibSignal-inl.h index 0f3e7a9b5..278462478 100644 --- a/UnityCore/GLibSignal-inl.h +++ b/UnityCore/GLibSignal-inl.h @@ -37,6 +37,9 @@ template <typename R, typename G, typename... Ts> void Signal<R, G, Ts...>::Connect(G object, std::string const& signal_name, SignalCallback const& callback) { + if (!callback || !G_IS_OBJECT(object) || signal_name.empty()) + return; + object_ = reinterpret_cast<GObject*>(object); name_ = signal_name; callback_ = callback; diff --git a/UnityCore/GLibSignal.h b/UnityCore/GLibSignal.h index b498888bb..e31f052d2 100644 --- a/UnityCore/GLibSignal.h +++ b/UnityCore/GLibSignal.h @@ -26,7 +26,6 @@ #include <memory> #include <boost/noncopyable.hpp> #include <glib-object.h> -#include <sigc++/sigc++.h> namespace unity { @@ -61,14 +60,14 @@ public: * workaround this issue using the trick below. * See GCC bug http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35722 */ #if !defined(__GNUC__) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 7) - typedef sigc::slot<R, G, Ts...> SignalCallback; + typedef std::function<R(G, Ts...)> SignalCallback; #else template<template <typename...> class T, typename... params> struct expand_variadic { typedef T<params...> type; }; - typedef typename expand_variadic<sigc::slot, R, G, Ts...>::type SignalCallback; + typedef typename expand_variadic<std::function, R(G, Ts...)>::type SignalCallback; #endif inline Signal() {}; diff --git a/tests/test_glib_signals.cpp b/tests/test_glib_signals.cpp index e3f0fa34c..19112a94a 100644 --- a/tests/test_glib_signals.cpp +++ b/tests/test_glib_signals.cpp @@ -1,4 +1,5 @@ #include <UnityCore/GLibSignal.h> +#include <sigc++/sigc++.h> #include <gtest/gtest.h> #include "test_glib_signals_utils.h" |
