X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Fencode_server.cc;h=abd8537c01786475c927ad1a09ac1ba9cb40a063;hb=b1dc9c3a2f7e55c9afc5bf2d5b465371b048e14f;hp=635913cc29ec8d304390389241f18a81fc06cd0c;hpb=5a5324ed3a381a86dfe0a6e3932c1d58fdcd596f;p=dcpomatic.git diff --git a/src/lib/encode_server.cc b/src/lib/encode_server.cc index 635913cc2..abd8537c0 100644 --- a/src/lib/encode_server.cc +++ b/src/lib/encode_server.cc @@ -31,7 +31,6 @@ #include "config.h" #include "cross.h" #include "player_video.h" -#include "safe_stringstream.h" #include "raw_convert.h" #include "compose.hpp" #include "log.h" @@ -41,7 +40,6 @@ #include #include #include -#include #include #include #include @@ -64,7 +62,6 @@ using boost::thread; using boost::bind; using boost::scoped_array; using boost::optional; -using boost::make_shared; using dcp::Size; using dcp::Data; @@ -87,15 +84,23 @@ EncodeServer::~EncodeServer () } BOOST_FOREACH (boost::thread* i, _worker_threads) { - DCPOMATIC_ASSERT (i->joinable ()); - i->join (); + /* Ideally this would be a DCPOMATIC_ASSERT(i->joinable()) but we + can't throw exceptions from a destructor. + */ + if (i->joinable ()) { + i->join (); + } delete i; } _broadcast.io_service.stop (); if (_broadcast.thread) { - DCPOMATIC_ASSERT (_broadcast.thread->joinable ()); - _broadcast.thread->join (); + /* Ideally this would be a DCPOMATIC_ASSERT(_broadcast.thread->joinable()) but we + can't throw exceptions from a destructor. + */ + if (_broadcast.thread->joinable ()) { + _broadcast.thread->join (); + } } } @@ -110,7 +115,7 @@ EncodeServer::process (shared_ptr socket, struct timeval& after_read, st socket->read (reinterpret_cast (buffer.get()), length); string s (buffer.get()); - shared_ptr xml = make_shared ("EncodingRequest"); + shared_ptr xml (new cxml::Document ("EncodingRequest")); xml->read_string (s); /* This is a double-check; the server shouldn't even be on the candidate list if it is the wrong version, but it doesn't hurt to make sure here. @@ -121,7 +126,7 @@ EncodeServer::process (shared_ptr socket, struct timeval& after_read, st return -1; } - shared_ptr pvf = make_shared (xml, socket); + shared_ptr pvf (new PlayerVideo (xml, socket)); DCPVideo dcp_video_frame (pvf, xml, _log); @@ -266,7 +271,7 @@ EncodeServer::broadcast_received () if (_verbose) { cout << "Offering services to master " << _broadcast.send_endpoint.address().to_string () << "\n"; } - shared_ptr socket = make_shared (); + shared_ptr socket (new Socket); try { socket->connect (boost::asio::ip::tcp::endpoint (_broadcast.send_endpoint.address(), Config::instance()->server_port_base() + 1)); socket->write (xml.length() + 1);