/*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <dali/devel-api/adaptor-framework/image-loading.h>
#include <dali/devel-api/adaptor-framework/thread-settings.h>
#include <dali/integration-api/adaptor-framework/adaptor.h>
+#include <dali/integration-api/debug.h>
namespace Dali
{
namespace Internal
{
+LoadingTask::LoadingTask( uint32_t id, Dali::AnimatedImageLoading animatedImageLoading, uint32_t frameIndex )
+: pixelBuffer(),
+ url(),
+ id( id ),
+ dimensions(),
+ fittingMode(),
+ samplingMode(),
+ orientationCorrection(),
+ preMultiplyOnLoad( DevelAsyncImageLoader::PreMultiplyOnLoad::OFF ),
+ isMaskTask( false ),
+ maskPixelBuffer(),
+ contentScale( 1.0f ),
+ cropToMask( false ),
+ animatedImageLoading( animatedImageLoading ),
+ frameIndex( frameIndex )
+{
+}
+
LoadingTask::LoadingTask( uint32_t id, const VisualUrl& url, ImageDimensions dimensions,
FittingMode::Type fittingMode, SamplingMode::Type samplingMode, bool orientationCorrection, DevelAsyncImageLoader::PreMultiplyOnLoad preMultiplyOnLoad )
: pixelBuffer(),
isMaskTask( false ),
maskPixelBuffer(),
contentScale( 1.0f ),
- cropToMask( false )
+ cropToMask( false ),
+ animatedImageLoading(),
+ frameIndex( 0u )
{
}
isMaskTask( true ),
maskPixelBuffer( maskPixelBuffer ),
contentScale( contentScale ),
- cropToMask( cropToMask )
+ cropToMask( cropToMask ),
+ animatedImageLoading(),
+ frameIndex( 0u )
{
}
void LoadingTask::Load()
-{
- if( url.IsLocalResource() )
+{;
+ if( animatedImageLoading )
+ {
+ pixelBuffer = animatedImageLoading.LoadFrame( frameIndex );
+ }
+ else if( url.IsLocalResource() )
{
pixelBuffer = Dali::LoadImageFromFile( url.GetUrl(), dimensions, fittingMode, samplingMode, orientationCorrection );
}
{
pixelBuffer = Dali::DownloadImageSynchronously ( url.GetUrl(), dimensions, fittingMode, samplingMode, orientationCorrection );
}
+
+ if( !pixelBuffer )
+ {
+ DALI_LOG_ERROR( "LoadingTask::Load: Loading is failed: %s\n", url.GetUrl().c_str() );
+ }
}
void LoadingTask::ApplyMask()
Join();
delete mTrigger;
+
+ for( auto&& iter : mLoadQueue )
+ {
+ delete iter;
+ }
+ mLoadQueue.Clear();
+
+ for( auto&& iter : mCompleteQueue )
+ {
+ delete iter;
+ }
+ mCompleteQueue.Clear();
}
void ImageLoadThread::Run()
void ImageLoadThread::AddTask( LoadingTask* task )
{
bool wasEmpty = false;
-
{
// Lock while adding task to the queue
ConditionalWait::ScopedLock lock( mConditionalWait );