From 78664f8073256de51355c9162f61a4ae4fa560d7 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 12 Apr 2016 23:25:19 +0100 Subject: [PATCH] Take some stuff out of VideoContent into ContentPart. --- src/lib/content_part.h | 37 +++++++++++++++++++++++++++++++++++++ src/lib/video_content.cc | 9 +++------ src/lib/video_content.h | 6 ++---- 3 files changed, 42 insertions(+), 10 deletions(-) create mode 100644 src/lib/content_part.h diff --git a/src/lib/content_part.h b/src/lib/content_part.h new file mode 100644 index 000000000..2d0f73f7f --- /dev/null +++ b/src/lib/content_part.h @@ -0,0 +1,37 @@ +/* + Copyright (C) 2016 Carl Hetherington + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include + +class Content; +class Film; + +class ContentPart +{ +public: + ContentPart (Content* parent, boost::shared_ptr film) + : _parent (parent) + , _film (film) + {} + +protected: + Content* _parent; + boost::weak_ptr _film; + mutable boost::mutex _mutex; +}; diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc index 708edee76..4059c29d1 100644 --- a/src/lib/video_content.cc +++ b/src/lib/video_content.cc @@ -65,8 +65,7 @@ using boost::optional; using boost::dynamic_pointer_cast; VideoContent::VideoContent (Content* parent, shared_ptr film) - : _parent (parent) - , _film (film) + : ContentPart (parent, film) , _video_length (0) , _video_frame_type (VIDEO_FRAME_TYPE_2D) , _scale (VideoContentScale (Ratio::from_id ("178"))) @@ -78,8 +77,7 @@ VideoContent::VideoContent (Content* parent, shared_ptr film) } VideoContent::VideoContent (Content* parent, shared_ptr film, cxml::ConstNodePtr node, int version) - : _parent (parent) - , _film (film) + : ContentPart (parent, film) { _video_size.width = node->number_child ("VideoWidth"); _video_size.height = node->number_child ("VideoHeight"); @@ -117,8 +115,7 @@ VideoContent::VideoContent (Content* parent, shared_ptr film, cxml:: } VideoContent::VideoContent (Content* parent, shared_ptr film, vector > c) - : _parent (parent) - , _film (film) + : ContentPart (parent, film) , _video_length (0) , _yuv (false) { diff --git a/src/lib/video_content.h b/src/lib/video_content.h index 768f1897d..075f7b701 100644 --- a/src/lib/video_content.h +++ b/src/lib/video_content.h @@ -25,6 +25,7 @@ #include "dcpomatic_time.h" #include "user_property.h" #include "types.h" +#include "content_part.h" #include #include #include @@ -47,7 +48,7 @@ public: static int const VIDEO_FADE_OUT; }; -class VideoContent : public boost::enable_shared_from_this +class VideoContent : public ContentPart, public boost::enable_shared_from_this { public: VideoContent (Content* parent, boost::shared_ptr); @@ -184,9 +185,6 @@ public: private: - Content* _parent; - boost::weak_ptr _film; - mutable boost::mutex _mutex; Frame _video_length; /** Video frame rate, or not set if this content should use the DCP's frame rate */ boost::optional _video_frame_rate; -- 2.30.2