/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 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.
return idleAdded;
}
+void Adaptor::RemoveIdle( CallbackBase* callback )
+{
+ mCallbackManager->RemoveIdleCallback( callback );
+}
Dali::Adaptor& Adaptor::Get()
{
#define __DALI_INTERNAL_ADAPTOR_IMPL_H__
/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 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.
*/
virtual bool AddIdle( CallbackBase* callback );
+ /**
+ * @copydoc Dali::Adaptor::RemoveIdle()
+ */
+ virtual void RemoveIdle( CallbackBase* callback );
+
public:
/**
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 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.
return mImpl->AddIdle( callback );
}
+void Adaptor::RemoveIdle( CallbackBase* callback )
+{
+ mImpl->RemoveIdle( callback );
+}
+
void Adaptor::ReplaceSurface( Any nativeWindow, Dali::RenderSurface& surface )
{
mImpl->ReplaceSurface(nativeWindow, surface);
#include <style-monitor.h>
#include <command-line-options.h>
#include <common/adaptor-impl.h>
+#include <common/framework.h>
#include <singleton-service-impl.h>
#include <lifecycle-controller-impl.h>
mWindow = newWindow;
}
+std::string Application::GetResourcePath()
+{
+ return Internal::Adaptor::Framework::GetResourcePath();
+}
+
} // namespace Adaptor
} // namespace Internal
*/
void ReplaceWindow(PositionSize windowPosition, const std::string& name);
+ /**
+ * @copydoc Dali::Application::GetResourcePath();
+ */
+ static std::string GetResourcePath();
+
public: // Stereoscopy
/**
#define __DALI_INTERNAL_CALLBACK_MANAGER_H__
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 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.
virtual ~CallbackManager() {}
/**
- * Adds a call back to be run on idle.
- * Must be call from main thread only.
- * @param callback custom call back function
- * @param priority call back priority
+ * @brief Adds a @p callback to be run on idle.
+ * @note Must be called from the main thread only.
+ *
+ * @param[in] callback custom callback function.
+ *
* @return true on success
*/
virtual bool AddIdleCallback( CallbackBase* callback ) = 0;
/**
+ * @brief Removes a previously added @p callback.
+ * @note Must be called from main thread only.
+ *
+ * Does nothing if the @p callback doesn't exist.
+ *
+ * @param[in] callback The callback to be removed.
+ */
+ virtual void RemoveIdleCallback( CallbackBase* callback ) = 0;
+
+ /**
* Starts the callback manager.
*/
virtual void Start() = 0;
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 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.
return false;
}
- CallbackData *callbackData = new CallbackData( callback );
+ CallbackData* callbackData = new CallbackData( callback );
callbackData->mRemoveFromContainerFunction = MakeCallback( this, &EcoreCallbackManager::RemoveCallbackFromContainer );
return true;
}
+void EcoreCallbackManager::RemoveIdleCallback( CallbackBase* callback )
+{
+ for( CallbackList::iterator it = mCallbackContainer.begin(),
+ endIt = mCallbackContainer.end();
+ it != endIt;
+ ++it )
+ {
+ CallbackData* data = *it;
+
+ if( data->mCallback == callback )
+ {
+ // remove callback data from the container.
+ CallbackBase::Execute( *data->mRemoveFromContainerFunction, data );
+
+ ecore_idler_del( data->mIdler );
+ }
+ }
+}
+
void EcoreCallbackManager::RemoveCallbackFromContainer(CallbackData *callbackData)
{
mCallbackContainer.remove(callbackData);
#define __DALI_ECORE_CALLBACK_MANAGER_H__
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 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.
}
/**
- * @copydoc CallbackManager::AddCallback()
+ * @copydoc CallbackManager::AddIdleCallback()
*/
virtual bool AddIdleCallback( CallbackBase* callback );
/**
+ * @copydoc CallbackManager::RemoveIdleCallback()
+ */
+ virtual void RemoveIdleCallback( CallbackBase* callback );
+
+ /**
* @copydoc CallbackManager::Start()
*/
virtual void Start();
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 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.
return false;
}
- CallbackData *callbackData = new CallbackData(callback );
+ CallbackData *callbackData = new CallbackData( callback );
// To inform the manager a callback has finished, we get it to call RemoveCallbackFromContainer
callbackData->mRemoveFromContainerFunction = MakeCallback( this, &UvCallbackManager::RemoveCallbackFromContainer );
return true;
}
+void UvCallbackManager::RemoveIdleCallback( CallbackBase* callback )
+{
+ for( CallbackList::iterator it = mCallbackContainer.begin(),
+ endIt = mCallbackContainer.end();
+ it != endIt;
+ ++it )
+ {
+ CallbackData* data = *it;
+
+ if( data->mCallback == callback )
+ {
+ // remove callback data from the container.
+ CallbackBase::Execute( *data->mRemoveFromContainerFunction, data );
+
+ delete data;
+ }
+ }
+}
+
void UvCallbackManager::RemoveCallbackFromContainer(CallbackData *callbackData)
{
mCallbackContainer.remove(callbackData);
#define __DALI_UV_CALLBACK_MANAGER_H__
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 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.
~UvCallbackManager(){}
/**
- * @copydoc CallbackManager::AddCallback()
+ * @copydoc CallbackManager::AddIdleCallback()
*/
virtual bool AddIdleCallback( CallbackBase* callback );
/**
+ * @copydoc CallbackManager::RemoveIdleCallback()
+ */
+ virtual void RemoveIdleCallback( CallbackBase* callback );
+
+ /**
* @copydoc CallbackManager::Start()
*/
virtual void Start();
{
/**
- * The Framework class is used to register callbacks with the TIZEN platform so that
+ * The Framework class is ideally placed to provide key API required by Applications.
+ *
+ * The class is also used to register callbacks with the TIZEN platform so that
* we know when any of the application lifecycle events occur. This includes events
* like when our application is to be initialised, terminated, paused, resumed etc.
+ *
*/
class Framework
{
*/
std::string GetBundleId() const;
+ /**
+ * Gets the path at which application resources are stored.
+ */
+ static std::string GetResourcePath();
+
private:
// Undefined
return Internal::Adaptor::ImfManager::GetImplementation(*this).GetSurroundingText();
}
+void ImfManager::NotifyTextInputMultiLine( bool multiLine )
+{
+ Internal::Adaptor::ImfManager::GetImplementation(*this).NotifyTextInputMultiLine( multiLine );
+}
+
ImfManager::ImfManagerSignalType& ImfManager::ActivatedSignal()
{
return Internal::Adaptor::ImfManager::GetImplementation(*this).ActivatedSignal();
*/
const std::string& GetSurroundingText() const;
+ /**
+ * @brief Notifies IMF context that text input is set to multi line or not
+ *
+ * @param[in] multiLine True if multiline text input is used
+ */
+ void NotifyTextInputMultiLine( bool multiLine );
+
public:
// Signals
mEcoreEventHandler.push_back( ecore_event_handler_add( ECORE_EVENT_KEY_DOWN, EcoreEventKeyDown, handler ) );
mEcoreEventHandler.push_back( ecore_event_handler_add( ECORE_EVENT_KEY_UP, EcoreEventKeyUp, handler ) );
+ // Register Detent event
+ mEcoreEventHandler.push_back( ecore_event_handler_add( ECORE_EVENT_DETENT_ROTATE, EcoreEventDetent, handler) );
#ifndef DALI_PROFILE_UBUNTU
// Register Vconf notify - font name and size
vconf_notify_key_changed( DALI_VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, VconfNotifyFontNameChanged, handler );
return ECORE_CALLBACK_PASS_ON;
}
+ /**
+ * Called when detent event is recevied
+ */
+ static Eina_Bool EcoreEventDetent( void* data, int type, void* event )
+ {
+ DALI_LOG_INFO(gSelectionEventLogFilter, Debug::Concise, "EcoreEventDetent\n" );
+ EventHandler* handler( (EventHandler*)data );
+ Ecore_Event_Detent_Rotate *e((Ecore_Event_Detent_Rotate *)event);
+ int direction = (e->direction == ECORE_DETENT_DIRECTION_CLOCKWISE) ? 1 : -1;
+ int timeStamp = e->timestamp;
+
+ WheelEvent wheelEvent( WheelEvent::CUSTOM_WHEEL, 0, 0, Vector2(0.0f, 0.0f), direction, timeStamp );
+ handler->SendWheelEvent( wheelEvent );
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
/////////////////////////////////////////////////////////////////////////////////////////////////
// Font Callbacks
/////////////////////////////////////////////////////////////////////////////////////////////////
return mSurroundingText;
}
+void ImfManager::NotifyTextInputMultiLine( bool multiLine )
+{
+ Ecore_IMF_Input_Hints currentHint = ecore_imf_context_input_hint_get(mIMFContext);
+ ecore_imf_context_input_hint_set(mIMFContext, (Ecore_IMF_Input_Hints)(multiLine ?
+ (currentHint | ECORE_IMF_INPUT_HINT_MULTILINE) :
+ (currentHint & ~ECORE_IMF_INPUT_HINT_MULTILINE)));
+}
+
} // Adaptor
} // Internal
*/
const std::string& GetSurroundingText() const;
+ /**
+ * @copydoc Dali::ImfManager::NotifyTextInputMultiLine()
+ */
+ void NotifyTextInputMultiLine( bool multiLine );
+
public: // Signals
/**
#define __DALI_INTEGRATION_ADAPTOR_H__
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 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.
bool AddIdle( CallbackBase* callback );
/**
+ * @brief Removes a previously added @p callback.
+ * @note Function must be called from the main event thread only.
+ *
+ * Does nothing if the @p callback doesn't exist.
+ *
+ * @param[in] callback The callback to be removed.
+ */
+ void RemoveIdle( CallbackBase* callback );
+
+ /**
* @brief Replaces the rendering surface
*
* @param[in] nativeWindow native window handle
*/
const std::string& GetSurroundingText() const;
+ /**
+ * @copydoc Dali::ImfManager::NotifyTextInputMultiLine()
+ */
+ void NotifyTextInputMultiLine( bool multiLine );
+
public: // Signals
/**
return "";
}
+std::string Framework::GetResourcePath()
+{
+ // TIZEN_PLATFORM_CONFIG_SUPPORTED not defined for libuv so path not available.
+ return "";
+}
+
void Framework::SetBundleId(const std::string& id)
{
}
Internal::Adaptor::GetImplementation(*this).ReplaceWindow(windowPosition, name);
}
+std::string Application::GetResourcePath()
+{
+ return Internal::Adaptor::Application::GetResourcePath();
+}
+
void Application::SetViewMode( ViewMode viewMode )
{
Internal::Adaptor::GetImplementation(*this).SetViewMode( viewMode );
* @param[in,out] argc A pointer to the number of arguments
* @param[in,out] argv A pointer the the argument list
* @param[in] stylesheet The path to user defined theme file
+ * @note If the stylesheet is not specified, then the library's default stylesheet will not be overridden.
*/
static Application New( int* argc, char **argv[], const std::string& stylesheet );
* @param[in,out] argv A pointer the the argument list
* @param[in] stylesheet The path to user defined theme file
* @param[in] windowMode A member of WINDOW_MODE
+ * @note If the stylesheet is not specified, then the library's default stylesheet will not be overridden.
*/
static Application New( int* argc, char **argv[], const std::string& stylesheet, WINDOW_MODE windowMode );
*/
void ReplaceWindow(PositionSize windowPosition, const std::string& name);
+ /**
+ * @brief Get path application resources are stored at
+ *
+ * @SINCE_1_2.2
+ * @return the full path of the resources
+ */
+ static std::string GetResourcePath();
+
+
public: // Stereoscopy
/**
/**
* @brief Set the stereo base (eye separation) for Stereoscopic 3D
*
+ * The stereo base is the distance in millimetres between the eyes. Typical values are
+ * between 50mm and 70mm. The default value is 65mm.
* @SINCE_1_0.0
* @param[in] stereoBase The stereo base (eye separation) for Stereoscopic 3D
*/
*
* NativeImageSource can be created internally or
* externally by native image source.
+ * NativeImage is a platform specific way of providing pixel data to the GPU for rendering,
+ * for example via an EGL image.
*
* @SINCE_1_1.4
+ * @see NativeImage
*/
class DALI_IMPORT_API NativeImageSource : public NativeImageInterface
{
* @SINCE_1_0.0
* @param[in] nativeImageSource must be a any handle with native image source
* @return A smart-pointer to a newly allocated image.
+ * @see NativeImageInterface
*/
static NativeImageSourcePtr New( Any nativeImageSource );
enum Mode
{
DEFAULT = 0, ///< Default mode for normal application @SINCE_1_0.0
- NOTIFICATION, ///< Notification mode @SINCE_1_0.0
- SCREEN_READER, ///< Screen reader mode @SINCE_1_0.0
+ NOTIFICATION, ///< Notification mode, such as playing utterance is started or completed @SINCE_1_0.0
+ SCREEN_READER, ///< Screen reader mode. To help visually impaired users interact with their devices, screen reader reads text or graphic elements on the screen using the TTS engine. @SINCE_1_0.0
MODE_NUM
};
// Enumerations
/**
- * @brief Orientation of the window.
+ * @brief Orientation of the window is the way in which a rectangular page is oriented for normal viewing.
* @SINCE_1_0.0
*/
enum WindowOrientation
{
- PORTRAIT = 0, ///< Portrait orientation @SINCE_1_0.0
- LANDSCAPE = 90, ///< Landscape orientation @SINCE_1_0.0
+ PORTRAIT = 0, ///< Portrait orientation. The height of the display area is greater than the width. @SINCE_1_0.0
+ LANDSCAPE = 90, ///< Landscape orientation. A wide view area is needed. @SINCE_1_0.0
PORTRAIT_INVERSE = 180, ///< Portrait inverse orientation @SINCE_1_0.0
LANDSCAPE_INVERSE = 270 ///< Landscape inverse orientation @SINCE_1_0.0
};
/**
* @brief Returns the Drag & drop detector which can be used to receive drag & drop events.
+ * @note Not intended for application developers.
* @SINCE_1_0.0
* @return A handle to the DragAndDropDetector.
*/
/**
* @brief Get the native handle of the window.
+ *
+ * When users call this function, it wraps the actual type used by the underlying window system.
* @SINCE_1_0.0
* @return The native handle of the window or an empty handle.
*/
const unsigned int ADAPTOR_MAJOR_VERSION = 1;
const unsigned int ADAPTOR_MINOR_VERSION = 2;
-const unsigned int ADAPTOR_MICRO_VERSION = 1;
+const unsigned int ADAPTOR_MICRO_VERSION = 2;
const char * const ADAPTOR_BUILD_DATE = __DATE__ " " __TIME__;
#ifdef DEBUG_ENABLED
#include <appcore-watch/watch_app.h>
#endif
+#if defined( TIZEN_PLATFORM_CONFIG_SUPPORTED ) && TIZEN_PLATFORM_CONFIG_SUPPORTED
+#include <tzplatform_config.h>
+#endif // TIZEN_PLATFORM_CONFIG_SUPPORTED
+
#include <dali/integration-api/debug.h>
// INTERNAL INCLUDES
return mBundleId;
}
+std::string Framework::GetResourcePath()
+{
+ std::string resourcePath = "";
+#if defined( TIZEN_PLATFORM_CONFIG_SUPPORTED ) && TIZEN_PLATFORM_CONFIG_SUPPORTED
+ resourcePath = app_get_resource_path();
+#endif //TIZEN_PLATFORM_CONFIG_SUPPORTED
+
+ return resourcePath;
+}
+
void Framework::SetBundleId(const std::string& id)
{
mBundleId = id;
return mBundleId;
}
+std::string Framework::GetResourcePath()
+{
+ // "DALI_APPLICATION_PACKAGE" is used by Ubuntu specifically to get the already configured Application package path.
+ const char* ubuntuEnvironmentVariable = "DALI_APPLICATION_PACKAGE";
+ char* value = getenv( ubuntuEnvironmentVariable );
+ std::string resourcePath;
+ if ( value != NULL )
+ {
+ resourcePath = value;
+ }
+
+ return resourcePath;
+}
+
void Framework::SetBundleId(const std::string& id)
{
mBundleId = id;
return mSurroundingText;
}
+void ImfManager::NotifyTextInputMultiLine( bool multiLine )
+{
+}
+
} // Adaptor
} // Internal
*/
const std::string& GetSurroundingText() const;
+ /**
+ * @copydoc Dali::ImfManager::NotifyTextInputMultiLine()
+ */
+ void NotifyTextInputMultiLine( bool multiLine );
+
public: // Signals
/**
return mSurroundingText;
}
+void ImfManager::NotifyTextInputMultiLine( bool multiLine )
+{
+}
+
} // Adaptor
} // Internal
-DFONT_DOWNLOADED_PATH="\"${fontDownloadedPath}\"" \
-DFONT_APPLICATION_PATH="\"${fontApplicationPath}\"" \
-DFONT_CONFIGURATION_FILE="\"${fontConfigurationFile}\"" \
+ -DTIZEN_PLATFORM_CONFIG_SUPPORTED=${tizenPlatformConfigSupported} \
-DNON_POWER_OF_TWO_TEXTURES \
-DDALI_COMPILATION -DDALI_ADAPTOR_COMPILATION \
-Werror -Wall -lgcc \
fontConfigurationFile=$FONT_CONFIGURATION_FILE
fi
+if test x$TIZEN_PLATFORM_CONFIG_SUPPORTED != x; then
+ tizenPlatformConfigSupported=$TIZEN_PLATFORM_CONFIG_SUPPORTED
+else
+ tizenPlatformConfigSupported=0
+fi
+
AC_SUBST(dataReadWriteDir)
AC_SUBST(dataReadOnlyDir)
AC_SUBST(DALI_ADAPTOR_CFLAGS)
AC_SUBST(DALI_PROFILE_CFLAGS)
AC_SUBST(fontConfigurationFile)
+AC_SUBST(tizenPlatformConfigSupported)
# Specify the include directory for development headers
#devincludepath=${includedir}/dali/internal
Font config file: $fontConfigurationFile
Building with EFL Libraries: $enable_efl
Using Tizen APP FW libraries: $enable_appfw
- OpenGL ES version: $enable_gles"
+ OpenGL ES version: $enable_gles
+ Tizen Platform Config supported: $tizenPlatformConfigSupported
+"
# optional output of node.js source path if we're building with libuv
if test "x$build_for_libuv" != "xno"; then
echo " LibUV header path $with_libuv"
-DFONT_DOWNLOADED_PATH="\"${fontDownloadedPath}\"" \
-DFONT_APPLICATION_PATH="\"${fontApplicationPath}\"" \
-DFONT_CONFIGURATION_FILE="\"${fontConfigurationFile}\"" \
+ -DTIZEN_PLATFORM_CONFIG_SUPPORTED=${tizenPlatformConfigSupported} \
-DNON_POWER_OF_TWO_TEXTURES \
-DDALI_COMPILATION -DDALI_ADAPTOR_COMPILATION \
-Werror -Wall -lgcc \
dataReadOnlyDir=${prefix}/share/dali/
fi
+if test x$TIZEN_PLATFORM_CONFIG_SUPPORTED != x; then
+ tizenPlatformConfigSupported=$TIZEN_PLATFORM_CONFIG_SUPPORTED
+else
+ tizenPlatformConfigSupported=0
+fi
+
if test x$FONT_CONFIGURATION_FILE != x; then
fontConfigurationFile=$FONT_CONFIGURATION_FILE
fi
AC_SUBST(DALI_ADAPTOR_CFLAGS)
AC_SUBST(DALI_PROFILE_CFLAGS)
AC_SUBST(fontConfigurationFile)
+AC_SUBST(tizenPlatformConfigSupported)
# Specify the include directory for development headers
#devincludepath=${includedir}/dali/internal
Building with EFL Libraries: $enable_efl
Using Tizen APP FW libraries: $enable_appfw
OpenGL ES version: $enable_gles
+ Tizen Platform Config supported $tizenPlatformConfigSupported
"
# optional output of node.js source path if we're building with libuv
if test "x$build_for_libuv" != "xno"; then
Name: dali-adaptor
Summary: The DALi Tizen Adaptor
-Version: 1.2.1
+Version: 1.2.2
Release: 1
Group: System/Libraries
License: Apache-2.0 and BSD-2-Clause and MIT
#need libtzplatform-config for directory if tizen version is 3.x
-%if "%{tizen_version_major}" == "3"
+%if "%{tizen_version_major}" >= "3"
+%define tizen_platform_config_supported 1
BuildRequires: pkgconfig(libtzplatform-config)
%endif
%prep
%setup -q
-#Use TZ_PATH when tizen version is 3.x
+#Use TZ_PATH when tizen version is 3.x or greater
-%if "%{tizen_version_major}" == "2"
-%define dali_data_rw_dir /usr/share/dali/
-%define dali_data_ro_dir /usr/share/dali/
-%define font_preloaded_path /usr/share/fonts/
-%define font_downloaded_path /opt/share/fonts/
-%define font_application_path /usr/share/app_fonts/
-%define font_configuration_file /opt/etc/fonts/conf.avail/99-slp.conf
-%else
+%if "%{tizen_version_major}" >= "3"
%define dali_data_rw_dir %TZ_SYS_RO_SHARE/dali/
%define dali_data_ro_dir %TZ_SYS_RO_SHARE/dali/
%define font_preloaded_path %TZ_SYS_RO_SHARE/fonts/
%define font_downloaded_path %TZ_SYS_SHARE/fonts/
%define font_application_path %TZ_SYS_RO_SHARE/app_fonts/
%define font_configuration_file %TZ_SYS_ETC/fonts/conf.avail/99-slp.conf
+%else
+%define dali_data_rw_dir /usr/share/dali/
+%define dali_data_ro_dir /usr/share/dali/
+%define font_preloaded_path /usr/share/fonts/
+%define font_downloaded_path /opt/share/fonts/
+%define font_application_path /usr/share/app_fonts/
+%define font_configuration_file /opt/etc/fonts/conf.avail/99-slp.conf
%endif
%define user_shader_cache_dir %{dali_data_ro_dir}/core/shaderbin/
FONT_DOWNLOADED_PATH="%{font_downloaded_path}" ; export FONT_DOWNLOADED_PATH
FONT_APPLICATION_PATH="%{font_application_path}" ; export FONT_APPLICATION_PATH
FONT_CONFIGURATION_FILE="%{font_configuration_file}" ; export FONT_CONFIGURATION_FILE
+%if 0%{?tizen_platform_config_supported}
+TIZEN_PLATFORM_CONFIG_SUPPORTED="%{tizen_platform_config_supported}" ; export TIZEN_PLATFORM_CONFIG_SUPPORTED
+%endif
# Default to GLES 2.0 if not specified.
%{!?target_gles_version: %define target_gles_version 20}
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 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.
bool HandleExtensionRecordType( GifFileType* gifInfo )
{
SavedImage image;
- image.ExtensionBlocks = NULL;
- image.ExtensionBlockCount = 0;
GifByteType *extensionByte( NULL );
#ifdef LIBGIF_VERSION_5_1_OR_ABOVE
+ ExtensionBlock extensionBlocks;
+ image.ExtensionBlocks = &extensionBlocks;
+ image.ExtensionBlockCount = 1;
int *extensionBlockTypePointer = &image.ExtensionBlocks->Function;
#else
+ image.ExtensionBlocks = NULL;
+ image.ExtensionBlockCount = 0;
int *extensionBlockTypePointer = &image.Function;
#endif