| Age | Commit message (Collapse) | Author |
|
sed -i "/include.*compose.hpp/d;" src/lib/*.cc src/wx/*.cc src/wx/*.h src/tools/*.cc src/lib/*.h test/*.cc
|
|
sed -i "/Plural-Forms/n;/%100/n;/scanf/n;s/%[123456789]/{}/g" src/lib/*.cc src/lib/*.h src/wx/*.cc src/tools/*.cc src/lib/po/*.po src/wx/po/*.po src/tools/po/*.po test/*.cc
sed -i "s/String::compose */fmt::format/g" src/lib/*.cc src/lib/*.h src/wx/*.cc src/tools/*.cc test/*.cc
|
|
|
|
|
|
|
|
|
|
|
|
This could cause Butler::audio to be called with _audio_channels = 0
and _disable_audio = false, causing an exception in AudioBuffers when
remap() tried to make an AudioBuffers object with a channel count of 0.
|
|
|
|
|
|
Otherwise if there is non available we'll insert silence and potentially
push the audio out of sync (late). May help with #2098.
|
|
|
|
|
|
|
|
|
|
the shader and do colourspace conversion there.
|
|
|
|
|
|
|
|
|
|
This causes, for example, player UI hangs when trying to play
something unplayable (e.g. a DCP with no KDM).
|
|
|
|
|
|
While playback is happening we need to do that in the butler's
buffers and in the little delay inside Player.
This removes the seek on every crop change, making it a lot
quicker (#1758).
|
|
|
|
Our export formats all currently use limited range but we weren't
making sure data fed to the encoders was limited range.
Should fix #1832.
|
|
Forward-ported-from: d1e9749ca290673639a49d693a8fe5c6557cc2de
|
|
Adapted from d23f55d8cd73adda823d0a2fcabc129b8845a81 in master.
|
|
assertion failures.
Before this, it was possible for J2KEncoder::terminate_threads()
to finish without terminating all threads if the thread _running_
terminate_threads() was itself interrupt()ed.
This is because the thread_group::join_all() in terminate_threads()
is an interruption point, so it was possible it not to complete
but instead to throw interrupted_exception. Then the owning
J2KEncoder would be torn down but the threads would still be running,
causing use-after-frees.
This commit adds some boost::this_thread::disable_interruption
objects to ensure that the owning thread is not interrupted while
it is being destroyed.
Also tidy up code that does this stuff, assuming that it's safe
to not call thread::joinable but instead do
thread.interrupt();
try {
thread.join();
} catch (...) {}
|
|
|
|
|
|
the whole of ::audio. Otherwise changes to pending seeks can be
mixed up with audio being put into the ringbuffer.
|
|
many content changes in an idle handler, rather than blocking
the UI update until the seek and image redisplay have finished.
|
|
of the state of frequent, so Butler::player_change must always seek
regardless of the state of frequent. Otherwise setup_pieces() results
in the next pass() output being at position 0, which causes problems
when the audio from that output is pushed into the audio ring buffers.
|
|
|
|
|
|
|
|
- some player_change; _awaiting is set
- regular seek occurs (perhaps to a time much earlier than _awaiting)
- another player_change occurs; player_change handler wrongly seeks back to _awaiting
May help with #1505.
|
|
|
|
|
|
|
|
|
|
|
|
a slight performance improvement for playback.
|
|
|
|
This is important for audio. _audio.put() must be called with
sequential data, so if you're going to discard audio (as was
happening when _suspended) you need to clear _audio before
put()ting any more.
This happens with seek; when _pending_seek_position is set
_audio is cleared and then nothing more is added until the
seek is done.
_suspended may be set and then reset with no change having
happened (type _CANCELLED) so I think you have to keep storing
data in this case. It will be discarded when the seek comes
around after a _DONE change.
|
|
while it's suspended. Then make the GUI follow that suggestion.
Should
|
|
|
|
Fix player_change to summon the butler if _suspended is changed, and
ensure that the butler's Player::Change handler is the first to be
called so that suspension is sorted out before any other
Player::Change handlers might call get_video().
This is to prevent the sequence
1. player change-pending emitted
2. hence butler suspended -> 1
3. player change-done emitted
4. first handler is something which calls get_video()
5. get_video() awaits video which will never arrive because the butler
is suspended.
Here there is a pending change-done signal to butler. Ensuring this
arrives before the handler which calls get_video() sorts it out.
|
|
|