X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fcontent_part.h;h=eb96b13710e210593ca47c8911225362d5bfb084;hp=d3b9b310d97747a31af4fe3ebfafb02a03df50a3;hb=8f12e84009d7c2685bb2eeb32665876463d4e6e5;hpb=3828baf56467224f5d44049bf1e7a7ed11f43a05 diff --git a/src/lib/content_part.h b/src/lib/content_part.h index d3b9b310d..eb96b1371 100644 --- a/src/lib/content_part.h +++ b/src/lib/content_part.h @@ -1,3 +1,4 @@ + /* Copyright (C) 2016 Carl Hetherington @@ -22,6 +23,7 @@ #define DCPOMATIC_CONTENT_PART_H #include "content.h" +#include "change_signaller.h" #include #include @@ -31,7 +33,7 @@ class Film; class ContentPart { public: - ContentPart (Content* parent) + explicit ContentPart (Content* parent) : _parent (parent) {} @@ -40,28 +42,30 @@ protected: void maybe_set (T& member, T new_value, int property) const { + ChangeSignaller cc (_parent, property); { boost::mutex::scoped_lock lm (_mutex); if (member == new_value) { + cc.abort (); return; } member = new_value; } - _parent->signal_changed (property); } template void maybe_set (boost::optional& member, T new_value, int property) const { + ChangeSignaller cc (_parent, property); { boost::mutex::scoped_lock lm (_mutex); if (member && member.get() == new_value) { + cc.abort (); return; } member = new_value; } - _parent->signal_changed (property); } Content* _parent;