}
} catch (boost::thread_interrupted) {
/* The butler thread is being terminated */
+} catch (...) {
+ store_current ();
}
pair<shared_ptr<PlayerVideo>, DCPTime>
#include "video_ring_buffers.h"
#include "audio_ring_buffers.h"
#include "audio_mapping.h"
+#include "exception_store.h"
#include <boost/shared_ptr.hpp>
#include <boost/weak_ptr.hpp>
#include <boost/thread.hpp>
class Player;
class PlayerVideo;
-class Butler : public boost::noncopyable
+class Butler : public ExceptionStore, public boost::noncopyable
{
public:
Butler (boost::weak_ptr<const Film> film, boost::shared_ptr<Player> player, AudioMapping map, int audio_channels);
DCPTime const next = now + DCPTime::from_frames (1, _film->video_frame_rate ());
_timer.Start (max ((next.seconds() - time().seconds()) * 1000, 0.0), wxTIMER_ONE_SHOT);
}
+
+ if (_butler) {
+ _butler->rethrow ();
+ }
}
void