summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-04-26 22:31:24 +0100
committerCarl Hetherington <cth@carlh.net>2019-04-26 22:31:24 +0100
commitaafa1cc676b6bd4d333f0ff3a09e1effabf979c3 (patch)
tree52bd25097ea5131338c0b3c62a37dffa265cea2b /src/lib
parente7e7035f800accbb09ac99aa26d15bff22588d0b (diff)
Make sure at least one position change event is emitted after
a timeline drag (with frequent=false), even if lots have been sent with frequent=true. Otherwise the code in the CHNAGE_TYPE_DONE branch of Butler::player_change never gets to seek (since frequent is true, it ignores the signal). Without the seek things go wrong. Believed to fix #1534.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/content.cc4
-rw-r--r--src/lib/content.h2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/lib/content.cc b/src/lib/content.cc
index ca76b01a6..2ca029d5a 100644
--- a/src/lib/content.cc
+++ b/src/lib/content.cc
@@ -211,7 +211,7 @@ Content::signal_change (ChangeType c, int p)
}
void
-Content::set_position (shared_ptr<const Film> film, DCPTime p)
+Content::set_position (shared_ptr<const Film> film, DCPTime p, bool force_emit)
{
/* video and audio content can modify its position */
@@ -227,7 +227,7 @@ Content::set_position (shared_ptr<const Film> film, DCPTime p)
{
boost::mutex::scoped_lock lm (_mutex);
- if (p == _position) {
+ if (p == _position && !force_emit) {
cc.abort ();
return;
}
diff --git a/src/lib/content.h b/src/lib/content.h
index 96359fadb..4c1d55765 100644
--- a/src/lib/content.h
+++ b/src/lib/content.h
@@ -135,7 +135,7 @@ public:
return _digest;
}
- void set_position (boost::shared_ptr<const Film> film, DCPTime);
+ void set_position (boost::shared_ptr<const Film> film, DCPTime, bool force_emit = false);
/** DCPTime that this content starts; i.e. the time that the first
* bit of the content (trimmed or not) will happen.