render: fix issue responding to cancelled tasks
This commit is contained in:
@@ -24,6 +24,7 @@ set(OLIVE_SOURCES
|
||||
render/audioparams.h
|
||||
render/audioplaybackcache.cpp
|
||||
render/audioplaybackcache.h
|
||||
render/cancelatom.h
|
||||
render/color.cpp
|
||||
render/color.h
|
||||
render/colorprocessor.cpp
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
#ifndef CANCELATOM_H
|
||||
#define CANCELATOM_H
|
||||
|
||||
#include <QMutex>
|
||||
|
||||
namespace olive {
|
||||
|
||||
class CancelAtom
|
||||
{
|
||||
public:
|
||||
CancelAtom() :
|
||||
cancelled_(false),
|
||||
heard_(false)
|
||||
{}
|
||||
|
||||
bool IsCancelled()
|
||||
{
|
||||
QMutexLocker locker(&mutex_);
|
||||
if (cancelled_) {
|
||||
heard_ = true;
|
||||
}
|
||||
return cancelled_;
|
||||
}
|
||||
|
||||
void Cancel()
|
||||
{
|
||||
QMutexLocker locker(&mutex_);
|
||||
cancelled_ = true;
|
||||
}
|
||||
|
||||
bool HeardCancel()
|
||||
{
|
||||
QMutexLocker locker(&mutex_);
|
||||
return heard_;
|
||||
}
|
||||
|
||||
private:
|
||||
QMutex mutex_;
|
||||
|
||||
bool cancelled_;
|
||||
|
||||
bool heard_;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // CANCELATOM_H
|
||||
@@ -134,7 +134,7 @@ void RenderProcessor::Run()
|
||||
// Depending on the render ticket type, start a job
|
||||
RenderManager::TicketType type = ticket_->property("type").value<RenderManager::TicketType>();
|
||||
|
||||
SetCancelPointer(&ticket_->IsCancelled());
|
||||
SetCancelPointer(ticket_->GetCancelAtom());
|
||||
|
||||
SetCacheVideoParams(ticket_->property("vparam").value<VideoParams>());
|
||||
SetCacheAudioParams(ticket_->property("aparam").value<AudioParams>());
|
||||
|
||||
Reference in New Issue
Block a user