boost::filesystem::create_directory (directory());
}
- boost::mutex::scoped_lock lm (_state_mutex);
LocaleGuard lg;
boost::filesystem::create_directories (directory());
void
Film::read_metadata ()
{
- boost::mutex::scoped_lock lm (_state_mutex);
LocaleGuard lg;
if (boost::filesystem::exists (file ("metadata")) && !boost::filesystem::exists (file ("metadata.xml"))) {
string
Film::dir (string d) const
{
- boost::mutex::scoped_lock lm (_directory_mutex);
-
boost::filesystem::path p;
p /= _directory;
p /= d;
}
/** Given a file or directory name, return its full path within the Film's directory.
- * _directory_mutex must not be locked on entry.
* Any required parent directories will be created.
*/
string
Film::file (string f) const
{
- boost::mutex::scoped_lock lm (_directory_mutex);
-
boost::filesystem::path p;
p /= _directory;
p /= f;
void
Film::set_directory (string d)
{
- boost::mutex::scoped_lock lm (_state_mutex);
_directory = d;
_dirty = true;
}
void
Film::set_name (string n)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _name = n;
- }
+ _name = n;
signal_changed (NAME);
}
void
Film::set_use_dci_name (bool u)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _use_dci_name = u;
- }
+ _use_dci_name = u;
signal_changed (USE_DCI_NAME);
}
void
Film::set_dcp_content_type (DCPContentType const * t)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _dcp_content_type = t;
- }
+ _dcp_content_type = t;
signal_changed (DCP_CONTENT_TYPE);
}
void
Film::set_container (Ratio const * c)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _container = c;
- }
+ _container = c;
signal_changed (CONTAINER);
}
void
Film::set_resolution (Resolution r)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _resolution = r;
- }
+ _resolution = r;
signal_changed (RESOLUTION);
}
void
Film::set_scaler (Scaler const * s)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _scaler = s;
- }
+ _scaler = s;
signal_changed (SCALER);
}
void
Film::set_with_subtitles (bool w)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _with_subtitles = w;
- }
+ _with_subtitles = w;
signal_changed (WITH_SUBTITLES);
}
void
Film::set_j2k_bandwidth (int b)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _j2k_bandwidth = b;
- }
+ _j2k_bandwidth = b;
signal_changed (J2K_BANDWIDTH);
}
void
Film::set_dci_metadata (DCIMetadata m)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _dci_metadata = m;
- }
+ _dci_metadata = m;
signal_changed (DCI_METADATA);
}
void
Film::set_video_frame_rate (int f)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _video_frame_rate = f;
- }
+ _video_frame_rate = f;
signal_changed (VIDEO_FRAME_RATE);
}
void
Film::set_audio_channels (int c)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _audio_channels = c;
- }
+ _audio_channels = c;
signal_changed (AUDIO_CHANNELS);
}
void
Film::set_three_d (bool t)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _three_d = t;
- }
+ _three_d = t;
signal_changed (THREE_D);
}
void
Film::signal_changed (Property p)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _dirty = true;
- }
+ _dirty = true;
switch (p) {
case Film::CONTENT:
shared_ptr<Playlist>
Film::playlist () const
{
- boost::mutex::scoped_lock lm (_state_mutex);
return _playlist;
}
void
Film::set_sequence_video (bool s)
{
- {
- boost::mutex::scoped_lock lm (_state_mutex);
- _sequence_video = s;
- _playlist->set_sequence_video (s);
- }
-
+ _sequence_video = s;
+ _playlist->set_sequence_video (s);
signal_changed (SEQUENCE_VIDEO);
}
#include <string>
#include <vector>
#include <inttypes.h>
-#include <boost/thread/mutex.hpp>
-#include <boost/thread.hpp>
#include <boost/signals2.hpp>
#include <boost/enable_shared_from_this.hpp>
+#include <boost/filesystem.hpp>
#include "util.h"
#include "types.h"
-#include "playlist.h"
#include "dci_metadata.h"
class DCPContentType;
class Log;
class Content;
class Player;
+class Playlist;
+class AudioContent;
/** @class Film
*
/* GET */
std::string directory () const {
- boost::mutex::scoped_lock lm (_directory_mutex);
return _directory;
}
std::string name () const {
- boost::mutex::scoped_lock lm (_state_mutex);
return _name;
}
bool use_dci_name () const {
- boost::mutex::scoped_lock lm (_state_mutex);
return _use_dci_name;
}
DCPContentType const * dcp_content_type () const {
- boost::mutex::scoped_lock lm (_state_mutex);
return _dcp_content_type;
}
Ratio const * container () const {
- boost::mutex::scoped_lock lm (_state_mutex);
return _container;
}
Resolution resolution () const {
- boost::mutex::scoped_lock lm (_state_mutex);
return _resolution;
}
Scaler const * scaler () const {
- boost::mutex::scoped_lock lm (_state_mutex);
return _scaler;
}
bool with_subtitles () const {
- boost::mutex::scoped_lock lm (_state_mutex);
return _with_subtitles;
}
int j2k_bandwidth () const {
- boost::mutex::scoped_lock lm (_state_mutex);
return _j2k_bandwidth;
}
DCIMetadata dci_metadata () const {
- boost::mutex::scoped_lock lm (_state_mutex);
return _dci_metadata;
}
/** @return The frame rate of the DCP */
int video_frame_rate () const {
- boost::mutex::scoped_lock lm (_state_mutex);
return _video_frame_rate;
}
int audio_channels () const {
- boost::mutex::scoped_lock lm (_state_mutex);
return _audio_channels;
}
bool three_d () const {
- boost::mutex::scoped_lock lm (_state_mutex);
return _three_d;
}
bool sequence_video () const {
- boost::mutex::scoped_lock lm (_state_mutex);
return _sequence_video;
}
* must not be relative.
*/
std::string _directory;
- /** Mutex for _directory */
- mutable boost::mutex _directory_mutex;
/** Name for DCP-o-matic */
std::string _name;
/** true if our state has changed since we last saved it */
mutable bool _dirty;
- /** Mutex for all state except _directory */
- mutable boost::mutex _state_mutex;
-
friend class paths_test;
friend class film_metadata_test;
};