Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Multimedia
Kdenlive
Commits
423ba3b1
Commit
423ba3b1
authored
Dec 06, 2017
by
Jean-Baptiste Mardelle
Browse files
Fix crash on playlists concurrent jobs using library clips
CCBUG: 386616
parent
52bf3012
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/bin/projectclip.cpp
View file @
423ba3b1
...
...
@@ -104,7 +104,9 @@ ProjectClip::~ProjectClip()
// controller is deleted in bincontroller
abortAudioThumbs
();
bin
()
->
slotAbortAudioThumb
(
m_id
,
duration
().
ms
());
QMutexLocker
audioLock
(
&
m_audioMutex
);
if
(
m_controller
)
{
QMutexLocker
locker
(
&
m_controller
->
producerMutex
);
}
m_thumbMutex
.
lock
();
m_requestedThumbs
.
clear
();
m_thumbMutex
.
unlock
();
...
...
@@ -399,13 +401,13 @@ Mlt::Producer *ProjectClip::originalProducer()
Mlt
::
Producer
*
ProjectClip
::
thumbProducer
()
{
QMutexLocker
locker
(
&
m_producerMutex
);
if
(
m_thumbsProducer
)
{
return
m_thumbsProducer
;
}
if
(
!
m_controller
||
m_controller
->
clipType
()
==
Unknown
)
{
return
nullptr
;
}
QMutexLocker
locker
(
&
m_controller
->
producerMutex
);
Mlt
::
Producer
prod
=
m_controller
->
originalProducer
();
if
(
!
prod
.
is_valid
())
{
return
nullptr
;
...
...
@@ -1023,7 +1025,10 @@ const QString ProjectClip::getAudioThumbPath(AudioStreamInfo *audioInfo)
void
ProjectClip
::
slotCreateAudioThumbs
()
{
QMutexLocker
lock
(
&
m_audioMutex
);
if
(
!
m_controller
)
{
return
;
}
QMutexLocker
locker
(
&
m_controller
->
producerMutex
);
Mlt
::
Producer
*
prod
=
originalProducer
();
if
(
!
prod
||
!
prod
->
is_valid
())
{
return
;
...
...
src/bin/projectclip.h
View file @
423ba3b1
...
...
@@ -241,7 +241,6 @@ private:
QMutex
m_producerMutex
;
QMutex
m_thumbMutex
;
QMutex
m_intraThumbMutex
;
QMutex
m_audioMutex
;
QFuture
<
void
>
m_thumbThread
;
QList
<
int
>
m_requestedThumbs
;
QFuture
<
void
>
m_intraThread
;
...
...
src/mltcontroller/clipcontroller.cpp
View file @
423ba3b1
...
...
@@ -251,7 +251,7 @@ void ClipController::updateProducer(const QString &id, Mlt::Producer *producer)
{
//TODO replace all track producers
Q_UNUSED
(
id
)
QMutexLocker
locker
(
&
producerMutex
);
Mlt
::
Properties
passProperties
;
// Keep track of necessary properties
QString
proxy
=
producer
->
get
(
"kdenlive:proxy"
);
...
...
src/mltcontroller/clipcontroller.h
View file @
423ba3b1
...
...
@@ -60,6 +60,8 @@ public:
explicit
ClipController
(
BinController
*
bincontroller
);
virtual
~
ClipController
();
QMutex
producerMutex
;
/** @brief Returns true if the master producer is valid */
bool
isValid
();
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment