# Append list of test harness files (Won't get parsed for test cases)
LIST(APPEND TC_SOURCES
+ ../dali-toolkit/dali-toolkit-test-utils/toolkit-adaptor.cpp
../dali-toolkit/dali-toolkit-test-utils/toolkit-accessibility-adaptor.cpp
../dali-toolkit/dali-toolkit-test-utils/toolkit-application.cpp
../dali-toolkit/dali-toolkit-test-utils/toolkit-clipboard.cpp
/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 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/public-api/object/base-object.h>
#include <toolkit-adaptor-impl.h>
+#include <dali/integration-api/debug.h>
+#include <test-application.h>
namespace Dali
{
{
}
+
+class LogFactory : public LogFactoryInterface
+{
+public:
+ virtual void InstallLogFunction() const
+ {
+ Dali::Integration::Log::LogFunction logFunction(&TestApplication::LogMessage);
+ Dali::Integration::Log::InstallLogFunction(logFunction);
+ }
+
+ LogFactory()
+ {
+ }
+ virtual ~LogFactory()
+ {
+ }
+};
+
+LogFactory* gLogFactory = NULL;
+const LogFactoryInterface& Adaptor::GetLogFactory()
+{
+ if( gLogFactory == NULL )
+ {
+ gLogFactory = new LogFactory;
+ }
+ return *gLogFactory;
+}
+
Adaptor::Adaptor()
: mImpl( NULL )
{
{
mMuted = false;
mLooping = false;
+ mPlayPosition = 0;
}
void SetMuted( bool muted )
}
}
+ int GetPlayPosition()
+ {
+ return mPlayPosition;
+ }
+
+ void SetPlayPosition( int pos )
+ {
+ mPlayPosition = pos;
+ }
+
public:
std::string mUrl;
bool mMuted;
bool mLooping;
+ int mPlayPosition;
};
inline VideoPlayer& GetImplementation( Dali::VideoPlayer& player )
void VideoPlayer::SetPlayPosition( int millisecond )
{
+ Internal::Adaptor::GetImplementation( *this ).SetPlayPosition( millisecond );
}
int VideoPlayer::GetPlayPosition()
{
- return 0;
+ return Internal::Adaptor::GetImplementation( *this ).GetPlayPosition();
}
void VideoPlayer::SetDisplayArea( DisplayArea area )
{
}
-bool VideoPlayer::IsVideoTextureSupported() const
+bool VideoPlayer::IsVideoTextureSupported()
{
return ToolkitApplication::DECODED_IMAGES_SUPPORTED;
}
+void VideoPlayer::SetCodecType( Dali::VideoPlayerPlugin::CodecType type )
+{
+}
+
+Dali::VideoPlayerPlugin::CodecType VideoPlayer::GetCodecType() const
+{
+ return Dali::VideoPlayerPlugin::CodecType::DEFAULT;
+}
+
} // namespace Dali;
int UtcDaliVideoViewPropertyUnderlay(void)
{
ToolkitTestApplication application;
+ tet_infoline("UtcDaliVideoViewPropertyUnderlay");
ToolkitApplication::DECODED_IMAGES_SUPPORTED = true;
VideoView view = VideoView::New();
END_TEST;
}
+
+int UtcDaliVideoViewPropertyPlayPosition(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline("UtcDaliVideoViewPropertyPlayPosition");
+
+ VideoView view = VideoView::New();
+ DALI_TEST_CHECK( view );
+
+ Stage::GetCurrent().Add( view );
+ view.Play();
+
+ application.SendNotification();
+ application.Render();
+
+ int playPos = view.GetProperty( Toolkit::VideoView::Property::PLAY_POSITION ).Get< int >();
+ DALI_TEST_CHECK( playPos == 0 );
+
+ view.SetProperty( Toolkit::VideoView::Property::PLAY_POSITION, 10 );
+ playPos = view.GetProperty( Toolkit::VideoView::Property::PLAY_POSITION ).Get< int >();
+ // Actually setting play position will be async
+ // Actual platform result may be different.
+ DALI_TEST_CHECK( playPos == 10 );
+
+ END_TEST;
+}
+
+// For coverage.
+int UtcDaliVideoViewNew2(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline("UtcDaliVideoViewNew2");
+
+ VideoView view = VideoView::New( true );
+ DALI_TEST_CHECK( view );
+
+ Stage::GetCurrent().Add( view );
+ view.Play();
+
+ application.SendNotification();
+ application.Render();
+
+ VideoView view2 = VideoView::New( "", false );
+ DALI_TEST_CHECK( view2 );
+
+ Stage::GetCurrent().Add( view2 );
+ view2.Play();
+
+ application.SendNotification();
+ application.Render();
+
+ END_TEST;
+}
# Extra tags for Tizen 4.0
ALIASES += SINCE_1_3_4="@since 1.3.4"
ALIASES += SINCE_1_3_5="@since 1.3.5"
+ALIASES += SINCE_1_3_9="@since 1.3.9"
ALIASES += DEPRECATED_1_0="@deprecated Deprecated since 1.0"
ALIASES += DEPRECATED_1_1="@deprecated Deprecated since 1.1"
ALIASES += PRIVILEGE_KEYGRAB=""
ALIASES += PRIVILEGE_DISPLAY=""
ALIASES += PRIVILEGE_WINDOW_PRIORITY=""
+ALIASES += PRIVILEGE_CAPTURE=""
ALIASES += REMARK_INTERNET=""
ALIASES += REMARK_STORAGE=""
ALIASES += REMARK_RAWVIDEO=""
## Extra tags for Tizen 4.0
#ALIASES += SINCE_1_3_4="\par Since:\n 4.0, DALi version 1.3.4"
#ALIASES += SINCE_1_3_5="\par Since:\n 4.0, DALi version 1.3.5"
+#ALIASES += SINCE_1_3_9="\par Since:\n 4.0, DALi version 1.3.9"
## DALi has no deprecated API in Tizen 2.4 because it's DALi's first release.
## Thus deprecated APIs in DALi 1.0.xx will be deprecated in Tizen 3.0.
#ALIASES += PRIVILEGE_KEYGRAB="\par Privilege:\n http://tizen.org/privilege/keygrab"
#ALIASES += PRIVILEGE_DISPLAY="\par Privilege:\n http://tizen.org/privilege/display"
#ALIASES += PRIVILEGE_WINDOW_PRIORITY="\par Privilege:\n http://tizen.org/privilege/window.priority.set"
+#ALIASES += PRIVILEGE_CAPTURE="\par Privilege:\n http://tizen.org/privilege/screenshot"
#ALIASES += REMARK_INTERNET="@remarks %http://tizen.org/privilege/internet is needed if @a url is a http or https address."
#ALIASES += REMARK_STORAGE="@remarks %http://tizen.org/privilege/mediastorage is needed if @a url is relevant to media storage. @remarks %http://tizen.org/privilege/externalstorage is needed if @a url is relevant to external storage."
#ALIASES += REMARK_RAWVIDEO="@remarks %http://tizen.org/feature/multimedia.raw_video is needed if UNDERLAY is false. If the feature isn't supported, UNDERLAY is always true."
DALI_PROPERTY_REGISTRATION( Toolkit, VideoView, "muted", BOOLEAN, MUTED )
DALI_PROPERTY_REGISTRATION( Toolkit, VideoView, "volume", MAP, VOLUME )
DALI_PROPERTY_REGISTRATION( Toolkit, VideoView, "underlay", BOOLEAN, UNDERLAY )
+DALI_PROPERTY_REGISTRATION( Toolkit, VideoView, "playPosition", INTEGER, PLAY_POSITION )
DALI_SIGNAL_REGISTRATION( Toolkit, VideoView, "finished", FINISHED_SIGNAL )
}
break;
}
+ case Toolkit::VideoView::Property::PLAY_POSITION:
+ {
+ int pos;
+ if( value.Get( pos ) )
+ {
+ impl.SetPlayPosition( pos );
+ }
+ break;
+ }
}
}
}
value = impl.IsUnderlay();
break;
}
+ case Toolkit::VideoView::Property::PLAY_POSITION:
+ {
+ value = impl.GetPlayPosition();
+ break;
+ }
}
}
return mIsUnderlay;
}
+void VideoView::SetSWCodec( bool on )
+{
+ // If setting SW or HW type is failed , video-view shows video by default codec type.
+ // The default codec type is selected by platform.
+ if( on )
+ {
+ mVideoPlayer.SetCodecType( Dali::VideoPlayerPlugin::CodecType::SW );
+ }
+ else
+ {
+ mVideoPlayer.SetCodecType( Dali::VideoPlayerPlugin::CodecType::HW );
+ }
+}
+
+int VideoView::GetPlayPosition()
+{
+ return mVideoPlayer.GetPlayPosition();
+}
+
+void VideoView::SetPlayPosition( int pos )
+{
+ mVideoPlayer.SetPlayPosition( pos );
+}
+
} // namespace Internal
} // namespace toolkit
*/
bool IsUnderlay();
+ /**
+ * @brief Sets sw codec type.
+ */
+ void SetSWCodec( bool on );
+
+ /**
+ * @brief Gets play position.
+ */
+ int GetPlayPosition();
+
+ /**
+ * @brief Sets play position.
+ */
+ void SetPlayPosition( int pos );
+
private: // From Control
/**
/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 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.
// EXTERNAL INCLUDES
#include <dali/devel-api/adaptor-framework/image-loading.h>
+#include <dali/integration-api/adaptors/adaptor.h>
namespace Dali
{
ImageLoadThread::ImageLoadThread( EventThreadCallback* trigger )
-: mTrigger( trigger )
+: mTrigger( trigger ),
+ mLogFactory( Dali::Adaptor::Get().GetLogFactory() )
{
}
void ImageLoadThread::Run()
{
+ mLogFactory.InstallLogFunction();
+
while( LoadingTask* task = NextTaskToProcess() )
{
task->Load();
#define __DALI_TOOLKIT_IMAGE_LOAD_THREAD_H__
/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 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/threading/thread.h>
#include <dali/devel-api/adaptor-framework/event-thread-callback.h>
#include <dali/devel-api/adaptor-framework/pixel-buffer.h>
+#include <dali/integration-api/adaptors/log-factory-interface.h>
#include <dali-toolkit/internal/visuals/visual-url.h>
namespace Dali
Vector< LoadingTask* > mLoadQueue; ///<The task queue with images for loading.
Vector< LoadingTask* > mCompleteQueue; ///<The task queue with images loaded.
+ EventThreadCallback* mTrigger;
+ const Dali::LogFactoryInterface& mLogFactory; ///< The log factory
ConditionalWait mConditionalWait;
Dali::Mutex mMutex;
- EventThreadCallback* mTrigger;
};
} // namespace Internal
return videoView;
}
+VideoView VideoView::New( bool swCodec )
+{
+ VideoView videoView = Internal::VideoView::New();
+ Dali::Toolkit::GetImpl( videoView ).SetSWCodec( swCodec );
+ return videoView;
+}
+
+VideoView VideoView::New( const std::string& url, bool swCodec )
+{
+ VideoView videoView = Internal::VideoView::New();
+ Dali::Toolkit::GetImpl( videoView ).SetUrl( url );
+ Dali::Toolkit::GetImpl( videoView ).SetSWCodec( swCodec );
+ return videoView;
+}
+
VideoView VideoView::DownCast( BaseHandle handle )
{
return Control::DownCast< VideoView, Internal::VideoView >( handle );
/**
* @brief name "video", video file url as string type or Property::Map.
* @SINCE_1_1.38
+ * @REMARK_INTERNET
+ * @REMARK_STORAGE
*/
VIDEO = PROPERTY_START_INDEX,
* @SINCE_1_2.62
* @REMARK_RAWVIDEO
*/
- UNDERLAY
+ UNDERLAY,
+
+ /**
+ * @brief The play position (millisecond) of the video.
+ * @details Name "playPosition", type Property::INTEGER
+ * @SINCE_1_3_9
+ */
+ PLAY_POSITION
};
};
* @SINCE_1_1.38
* @return A handle to a newly allocated Dali ImageView
*
- * @note VideoView will not display anything
*/
static VideoView New();
static VideoView New( const std::string& url );
/**
+ * @brief Creates an initialized VideoView.
+ * @SINCE_1_3_9
+ * @param[in] swCodec Video rendering by H/W codec if false
+ * @return A handle to a newly allocated Dali ImageView
+ *
+ * @note If platform or target does not support sw codec, video-view shows an error message and video by default codec type
+ */
+ static VideoView New( bool swCodec );
+
+ /**
+ * @brief Creates an initialized VideoView.
+ * If the string is empty, VideoView will not display anything.
+ *
+ * @SINCE_1_3_9
+ * @REMARK_INTERNET
+ * @REMARK_STORAGE
+ * @param[in] url The url of the video resource to display
+ * @param[in] swCodec Video rendering by H/W codec if false
+ * @return A handle to a newly allocated Dali VideoView
+ *
+ * @note If platform or target does not support sw codec, video-view shows an error message and video by default codec type
+ */
+ static VideoView New( const std::string& url, bool swCodec );
+
+ /**
* @brief Creates an uninitialized VideoView.
* @SINCE_1_1.38
*/
const unsigned int TOOLKIT_MAJOR_VERSION = 1;
const unsigned int TOOLKIT_MINOR_VERSION = 3;
-const unsigned int TOOLKIT_MICRO_VERSION = 10;
+const unsigned int TOOLKIT_MICRO_VERSION = 11;
const char * const TOOLKIT_BUILD_DATE = __DATE__ " " __TIME__;
#ifdef DEBUG_ENABLED
Name: dali-toolkit
Summary: Dali 3D engine Toolkit
-Version: 1.3.10
+Version: 1.3.11
Release: 1
Group: System/Libraries
License: Apache-2.0 and BSD-3-Clause and MIT