projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
C++11 tidying.
[dcpomatic.git]
/
src
/
lib
/
butler.cc
diff --git
a/src/lib/butler.cc
b/src/lib/butler.cc
index 56acbd8a0817aa4809741aea234a3589a9d9162c..b2128efdb28f0b9cb7660d7ff42d94c94c6648ee 100644
(file)
--- a/
src/lib/butler.cc
+++ b/
src/lib/butler.cc
@@
-37,7
+37,7
@@
using std::weak_ptr;
using std::shared_ptr;
using boost::bind;
using boost::optional;
using std::shared_ptr;
using boost::bind;
using boost::optional;
-using
boost
::function;
+using
std
::function;
using namespace dcpomatic;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
using namespace dcpomatic;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
@@
-179,6
+179,8
@@
void
Butler::thread ()
try
{
Butler::thread ()
try
{
+ start_of_thread ("Butler");
+
while (true) {
boost::mutex::scoped_lock lm (_mutex);
while (true) {
boost::mutex::scoped_lock lm (_mutex);
@@
-237,10
+239,21
@@
Butler::get_video (bool blocking, Error* e)
{
boost::mutex::scoped_lock lm (_mutex);
{
boost::mutex::scoped_lock lm (_mutex);
-
if (_suspended || (_video.empty() && !blocking)
) {
+
auto setup_error = [this](Error* e, Error::Code fallback
) {
if (e) {
if (e) {
- e->code = Error::AGAIN;
+ if (_died) {
+ e->code = Error::DIED;
+ e->message = _died_message;
+ } else if (_finished) {
+ e->code = Error::FINISHED;
+ } else {
+ e->code = fallback;
+ }
}
}
+ };
+
+ if (_video.empty() && (_finished || _died || (_suspended && !blocking))) {
+ setup_error (e, Error::AGAIN);
return make_pair(shared_ptr<PlayerVideo>(), DCPTime());
}
return make_pair(shared_ptr<PlayerVideo>(), DCPTime());
}
@@
-250,20
+263,11
@@
Butler::get_video (bool blocking, Error* e)
}
if (_video.empty()) {
}
if (_video.empty()) {
- if (e) {
- if (_died) {
- e->code = Error::DIED;
- e->message = _died_message;
- } else if (_finished) {
- e->code = Error::FINISHED;
- } else {
- e->code = Error::NONE;
- }
- }
+ setup_error (e, Error::NONE);
return make_pair(shared_ptr<PlayerVideo>(), DCPTime());
}
return make_pair(shared_ptr<PlayerVideo>(), DCPTime());
}
-
pair<shared_ptr<PlayerVideo>, DCPTime>
const r = _video.get ();
+
auto
const r = _video.get ();
_summon.notify_all ();
return r;
}
_summon.notify_all ();
return r;
}
@@
-305,7
+309,7
@@
void
Butler::prepare (weak_ptr<PlayerVideo> weak_video)
try
{
Butler::prepare (weak_ptr<PlayerVideo> weak_video)
try
{
-
shared_ptr<PlayerVideo>
video = weak_video.lock ();
+
auto
video = weak_video.lock ();
/* 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());
/* 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());
@@
-361,7
+365,7
@@
Butler::audio (shared_ptr<AudioBuffers> audio, DCPTime time, int frame_rate)
optional<DCPTime>
Butler::get_audio (float* out, Frame frames)
{
optional<DCPTime>
Butler::get_audio (float* out, Frame frames)
{
-
optional<DCPTime>
t = _audio.get (out, _audio_channels, frames);
+
auto
t = _audio.get (out, _audio_channels, frames);
_summon.notify_all ();
return t;
}
_summon.notify_all ();
return t;
}