diff --git a/libobs/obs.hpp b/libobs/obs.hpp index 9e9fc35a5..3e3351aa3 100644 --- a/libobs/obs.hpp +++ b/libobs/obs.hpp @@ -150,4 +150,35 @@ public: param = param_; signal_handler_connect(handler, signal, callback, param); } + + OBSSignal(const OBSSignal&) = delete; + OBSSignal(OBSSignal &&other) + : handler (other.handler), + signal (other.signal), + callback(other.callback), + param (other.param) + { + other.handler = nullptr; + other.signal = nullptr; + other.callback = nullptr; + other.param = nullptr; + } + + OBSSignal &operator=(const OBSSignal &) = delete; + OBSSignal &operator=(OBSSignal &&other) + { + Disconnect(); + + handler = other.handler; + signal = other.signal; + callback = other.callback; + param = other.param; + + other.handler = nullptr; + other.signal = nullptr; + other.callback = nullptr; + other.param = nullptr; + + return *this; + } };