X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fui_signaller.h;h=9d4495cd18921822b2fcfa02836a3c916f2cfedd;hb=05c37bfdb86be26497d5baa448a0cbda20e33bed;hp=ee4d230d407e566114ae57b491700196c19d21c5;hpb=6788ff5967508056d1321c16143bf72fa7cd4516;p=dcpomatic.git diff --git a/src/lib/ui_signaller.h b/src/lib/ui_signaller.h index ee4d230d4..9d4495cd1 100644 --- a/src/lib/ui_signaller.h +++ b/src/lib/ui_signaller.h @@ -24,6 +24,8 @@ #include #include +class Signaller; + /** A class to allow signals to be emitted from non-UI threads and handled * by a UI thread. */ @@ -37,23 +39,6 @@ public: _ui_thread = boost::this_thread::get_id (); } - /** Emit a signal from any thread whose handlers will be called in the UI - * thread. Use something like: - * - * ui_signaller->emit (boost::bind (boost::ref (SomeSignal), parameter)); - */ - template - void emit (T f) { - if (boost::this_thread::get_id() == _ui_thread) { - /* already in the UI thread */ - f (); - } else { - /* non-UI thread; post to the service and wake up the UI */ - _service.post (f); - wake_ui (); - } - } - /* Do something next time the UI is idle */ template void when_idle (T f) { @@ -73,6 +58,25 @@ public: } private: + /** Emit a signal from any thread whose handlers will be called in the UI + * thread. Use something like: + * + * ui_signaller->emit (boost::bind (boost::ref (SomeSignal), parameter)); + */ + template + void emit (T f) { + if (boost::this_thread::get_id() == _ui_thread) { + /* already in the UI thread */ + f (); + } else { + /* non-UI thread; post to the service and wake up the UI */ + _service.post (f); + wake_ui (); + } + } + + friend class Signaller; + /** A io_service which is used as the conduit for messages */ boost::asio::io_service _service; /** Object required to keep io_service from stopping when it has nothing to do */