Use an enum instead of a bool to specify blocking/non-blocking.
[dcpomatic.git] / src / lib / butler.cc
index ca0887a4cc3cb05410c8d88b47005aac69188db8..f19e1e0808b13ca92ca3e712b34d15dcea212502 100644 (file)
@@ -57,7 +57,7 @@ using namespace boost::placeholders;
 
 /** @param pixel_format Pixel format functor that will be used when calling ::image on PlayerVideos coming out of this
  *  butler.  This will be used (where possible) to prepare the PlayerVideos so that calling image() on them is quick.
- *  @param aligned Same as above for the `aligned' flag.
+ *  @param alignment Same as above for the `alignment' value.
  *  @param fast Same as above for the `fast' flag.
  */
 Butler::Butler (
@@ -67,7 +67,7 @@ Butler::Butler (
        int audio_channels,
        function<AVPixelFormat (AVPixelFormat)> pixel_format,
        VideoRange video_range,
-       bool aligned,
+       Image::Alignment alignment,
        bool fast,
        bool prepare_only_proxy
        )
@@ -84,7 +84,7 @@ Butler::Butler (
        , _disable_audio (false)
        , _pixel_format (pixel_format)
        , _video_range (video_range)
-       , _aligned (aligned)
+       , _alignment (alignment)
        , _fast (fast)
        , _prepare_only_proxy (prepare_only_proxy)
 {
@@ -238,30 +238,30 @@ try
 }
 
 
-/** @param blocking true if we should block until video is available.  If blocking is false
+/** @param behaviour BLOCKING if we should block until video is available.  If behaviour is NON_BLOCKING
  *  and no video is immediately available the method will return a 0 PlayerVideo and the error AGAIN.
  *  @param e if non-0 this is filled with an error code (if an error occurs) or is untouched if no error occurs.
  */
 pair<shared_ptr<PlayerVideo>, DCPTime>
-Butler::get_video (bool blocking, Error* e)
+Butler::get_video (Behaviour behaviour, Error* e)
 {
        boost::mutex::scoped_lock lm (_mutex);
 
        auto setup_error = [this](Error* e, Error::Code fallback) {
                if (e) {
                        if (_died) {
-                               e->code = Error::DIED;
+                               e->code = Error::Code::DIED;
                                e->message = _died_message;
                        } else if (_finished) {
-                               e->code = Error::FINISHED;
+                               e->code = Error::Code::FINISHED;
                        } else {
                                e->code = fallback;
                        }
                }
        };
 
-       if (_video.empty() && (_finished || _died || (_suspended && !blocking))) {
-               setup_error (e, Error::AGAIN);
+       if (_video.empty() && (_finished || _died || (_suspended && behaviour == Behaviour::NON_BLOCKING))) {
+               setup_error (e, Error::Code::AGAIN);
                return make_pair(shared_ptr<PlayerVideo>(), DCPTime());
        }
 
@@ -271,7 +271,7 @@ Butler::get_video (bool blocking, Error* e)
        }
 
        if (_video.empty()) {
-               setup_error (e, Error::NONE);
+               setup_error (e, Error::Code::NONE);
                return make_pair(shared_ptr<PlayerVideo>(), DCPTime());
        }
 
@@ -325,7 +325,7 @@ try
        /* If the weak_ptr cannot be locked the video obviously no longer requires any work */
        if (video) {
                LOG_TIMING("start-prepare in %1", thread_id());
-               video->prepare (_pixel_format, _video_range, _aligned, _fast, _prepare_only_proxy);
+               video->prepare (_pixel_format, _video_range, _alignment, _fast, _prepare_only_proxy);
                LOG_TIMING("finish-prepare in %1", thread_id());
        }
 }
@@ -467,13 +467,13 @@ Butler::Error::summary () const
 {
        switch (code)
        {
-               case Error::NONE:
+               case Error::Code::NONE:
                        return "No error registered";
-               case Error::AGAIN:
+               case Error::Code::AGAIN:
                        return "Butler not ready";
-               case Error::DIED:
+               case Error::Code::DIED:
                        return String::compose("Butler died (%1)", message);
-               case Error::FINISHED:
+               case Error::Code::FINISHED:
                        return "Butler finished";
        }