diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-12-31 15:44:51 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-12-31 15:44:51 +0000 |
| commit | ad49361b303d1ceff7048fa0e89ba609ca9ce376 (patch) | |
| tree | be6413325604b0d403add54a8de6ea861ec90772 /src/lib/exceptions.h | |
| parent | b2a9271256e09fcfedff3beea5fc73c04e7c0e14 (diff) | |
| parent | 5625ba9542e38504e87799dd655be5071161fb1f (diff) | |
Merge 1.0
Diffstat (limited to 'src/lib/exceptions.h')
| -rw-r--r-- | src/lib/exceptions.h | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/lib/exceptions.h b/src/lib/exceptions.h index f4631c09b..c1240538f 100644 --- a/src/lib/exceptions.h +++ b/src/lib/exceptions.h @@ -230,17 +230,30 @@ public: PixelFormatError (std::string o, AVPixelFormat f); }; +/** A parent class for classes which have a need to catch and + * re-throw exceptions. This is intended for classes + * which run their own thread; they should do something like + * + * void my_thread () + * try { + * // do things which might throw exceptions + * } catch (...) { + * store_current (); + * } + * + * and then in another thread call rethrow(). If any + * exception was thrown by my_thread it will be stored by + * store_current() and then rethrow() will re-throw it where + * it can be handled. + */ class ExceptionStore { public: - bool thrown () const { - boost::mutex::scoped_lock lm (_mutex); - return _exception; - } - void rethrow () { boost::mutex::scoped_lock lm (_mutex); - boost::rethrow_exception (_exception); + if (_exception) { + boost::rethrow_exception (_exception); + } } protected: |
