X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fimage-loader%2Fimage-load-thread.cpp;h=a06953ea7eb5fb86f5ae611d8655f4aef56ff5a4;hb=66521be1c480614a631f58d77be161e1c247e35f;hp=a27db1450e458aaa9a83012d37abcaeaa2c9c4c8;hpb=bd75dc4cad4ce62cc9206abf19280b40825b9726;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/image-loader/image-load-thread.cpp b/dali-toolkit/internal/image-loader/image-load-thread.cpp index a27db14..a06953e 100644 --- a/dali-toolkit/internal/image-loader/image-load-thread.cpp +++ b/dali-toolkit/internal/image-loader/image-load-thread.cpp @@ -18,6 +18,9 @@ // CLASS HEADER #include "image-load-thread.h" +// EXTERNAL INCLUDES +#include + namespace Dali { @@ -27,12 +30,31 @@ namespace Toolkit namespace Internal { -LoadingTask::LoadingTask(uint32_t id, BitmapLoader loader ) -: loader( loader ), - id( id ) +LoadingTask::LoadingTask( uint32_t id, const VisualUrl& url, ImageDimensions dimensions, + FittingMode::Type fittingMode, SamplingMode::Type samplingMode, bool orientationCorrection ) +: pixelData(), + url( url ), + id( id ), + dimensions( dimensions ), + fittingMode( fittingMode ), + samplingMode( samplingMode ), + orientationCorrection( orientationCorrection ) { } +void LoadingTask::Load() +{ + if( url.IsLocal() ) + { + pixelData = Dali::LoadImageFromFile( url.GetUrl(), dimensions, fittingMode, samplingMode, orientationCorrection ); + } + else + { + pixelData = Dali::DownloadImageSynchronously ( url.GetUrl(), dimensions, fittingMode, samplingMode, orientationCorrection ); + } +} + + ImageLoadThread::ImageLoadThread( EventThreadCallback* trigger ) : mTrigger( trigger ) { @@ -50,9 +72,9 @@ ImageLoadThread::~ImageLoadThread() void ImageLoadThread::Run() { - while( LoadingTask* task = NextTaskToProcess()) + while( LoadingTask* task = NextTaskToProcess() ) { - task->loader.Load(); + task->Load(); AddCompletedTask( task ); } } @@ -68,7 +90,7 @@ void ImageLoadThread::AddTask( LoadingTask* task ) mLoadQueue.PushBack( task ); } - if( wasEmpty) + if( wasEmpty ) { // wake up the image loading thread mConditionalWait.Notify(); @@ -97,7 +119,7 @@ bool ImageLoadThread::CancelTask( uint32_t loadingTaskId ) // Lock while remove task from the queue ConditionalWait::ScopedLock lock( mConditionalWait ); - for( Vector< LoadingTask* >::Iterator iter = mLoadQueue.Begin(); iter != mLoadQueue.End(); iter++ ) + for( Vector< LoadingTask* >::Iterator iter = mLoadQueue.Begin(); iter != mLoadQueue.End(); ++iter ) { if( (*iter)->id == loadingTaskId ) { @@ -116,9 +138,9 @@ void ImageLoadThread::CancelAll() // Lock while remove task from the queue ConditionalWait::ScopedLock lock( mConditionalWait ); - for( Vector< LoadingTask* >::Iterator iter = mLoadQueue.Begin(); iter != mLoadQueue.End(); iter++ ) + for( Vector< LoadingTask* >::Iterator iter = mLoadQueue.Begin(); iter != mLoadQueue.End(); ++iter ) { - delete (*iter); + delete ( *iter ); } mLoadQueue.Clear(); } @@ -150,8 +172,6 @@ void ImageLoadThread::AddCompletedTask( LoadingTask* task ) mTrigger->Trigger(); } - - } // namespace Internal } // namespace Toolkit