+++ /dev/null
-cmake_minimum_required(VERSION 3.11)\r
-\r
-if (WIN32)\r
-\r
-PROJECT (dali-core)\r
-\r
-add_subdirectory(dali/devel-api)\r
-add_subdirectory(dali/integration-api)\r
-#add_subdirectory(dali/internal)\r
-add_subdirectory(dali/public-api)\r
-\r
-SET(INTERNAL_DIR ${dali_SOURCE_DIR}/dali-core/dali/internal)\r
-\r
-SET(SOURCES ${SOURCES}\r
- ${dali_SOURCE_DIR}/dali-core/dali/integration-api/trace.cpp\r
- ${INTERNAL_DIR}/common/blending-options.cpp\r
- ${INTERNAL_DIR}/common/core-impl.cpp\r
- ${INTERNAL_DIR}/common/internal-constants.cpp\r
- ${INTERNAL_DIR}/common/math.cpp\r
- ${INTERNAL_DIR}/common/message-buffer.cpp\r
- ${INTERNAL_DIR}/common/mutex-trace.cpp\r
- ${INTERNAL_DIR}/common/image-sampler.cpp\r
- ${INTERNAL_DIR}/common/image-attributes.cpp\r
- ${INTERNAL_DIR}/common/fixed-size-memory-pool.cpp\r
-\r
- ${INTERNAL_DIR}/event/actors/actor-impl.cpp\r
- ${INTERNAL_DIR}/event/actors/custom-actor-internal.cpp\r
- ${INTERNAL_DIR}/event/actors/layer-impl.cpp\r
- ${INTERNAL_DIR}/event/actors/layer-list.cpp\r
- ${INTERNAL_DIR}/event/actors/camera-actor-impl.cpp\r
- ${INTERNAL_DIR}/event/animation/animation-impl.cpp\r
- ${INTERNAL_DIR}/event/animation/animation-playlist.cpp\r
- ${INTERNAL_DIR}/event/animation/constrainer.cpp\r
- ${INTERNAL_DIR}/event/animation/constraint-base.cpp\r
- ${INTERNAL_DIR}/event/animation/key-frames-impl.cpp\r
- ${INTERNAL_DIR}/event/animation/linear-constrainer-impl.cpp\r
- ${INTERNAL_DIR}/event/animation/path-impl.cpp\r
- ${INTERNAL_DIR}/event/animation/path-constrainer-impl.cpp\r
- ${INTERNAL_DIR}/event/common/event-thread-services.cpp\r
- ${INTERNAL_DIR}/event/common/notification-manager.cpp\r
- ${INTERNAL_DIR}/event/common/object-impl.cpp\r
- ${INTERNAL_DIR}/event/common/object-registry-impl.cpp\r
- ${INTERNAL_DIR}/event/common/projection.cpp\r
- ${INTERNAL_DIR}/event/common/property-buffer-impl.cpp\r
- ${INTERNAL_DIR}/event/common/property-conditions-impl.cpp\r
- ${INTERNAL_DIR}/event/common/property-metadata.cpp\r
- ${INTERNAL_DIR}/event/common/property-notification-impl.cpp\r
- ${INTERNAL_DIR}/event/common/property-notification-manager.cpp\r
- ${INTERNAL_DIR}/event/common/property-helper.cpp\r
- ${INTERNAL_DIR}/event/common/stage-impl.cpp\r
- ${INTERNAL_DIR}/event/common/system-overlay-impl.cpp\r
- ${INTERNAL_DIR}/event/common/thread-local-storage.cpp\r
- ${INTERNAL_DIR}/event/common/type-info-impl.cpp\r
- ${INTERNAL_DIR}/event/common/type-registry-impl.cpp\r
- ${INTERNAL_DIR}/event/effects/shader-factory.cpp\r
- ${INTERNAL_DIR}/event/events/actor-gesture-data.cpp\r
- ${INTERNAL_DIR}/event/events/actor-observer.cpp\r
- ${INTERNAL_DIR}/event/events/event-processor.cpp\r
- ${INTERNAL_DIR}/event/events/key-event-impl.cpp\r
- ${INTERNAL_DIR}/event/events/key-event-processor.cpp\r
- ${INTERNAL_DIR}/event/events/gesture-detector-impl.cpp\r
- ${INTERNAL_DIR}/event/events/gesture-event-processor.cpp\r
- ${INTERNAL_DIR}/event/events/gesture-processor.cpp\r
- ${INTERNAL_DIR}/event/events/hit-test-algorithm-impl.cpp\r
- ${INTERNAL_DIR}/event/events/hover-event-processor.cpp\r
- ${INTERNAL_DIR}/event/events/long-press-gesture-detector-impl.cpp\r
- ${INTERNAL_DIR}/event/events/long-press-gesture-processor.cpp\r
- ${INTERNAL_DIR}/event/events/wheel-event-processor.cpp\r
- ${INTERNAL_DIR}/event/events/multi-point-event-util.cpp\r
- ${INTERNAL_DIR}/event/events/pan-gesture-detector-impl.cpp\r
- ${INTERNAL_DIR}/event/events/pan-gesture-processor.cpp\r
- ${INTERNAL_DIR}/event/events/pinch-gesture-detector-impl.cpp\r
- ${INTERNAL_DIR}/event/events/pinch-gesture-processor.cpp\r
- ${INTERNAL_DIR}/event/events/tap-gesture-detector-impl.cpp\r
- ${INTERNAL_DIR}/event/events/tap-gesture-processor.cpp\r
- ${INTERNAL_DIR}/event/events/touch-data-impl.cpp\r
- ${INTERNAL_DIR}/event/events/touch-event-processor.cpp\r
- ${INTERNAL_DIR}/event/images/bitmap-packed-pixel.cpp\r
- ${INTERNAL_DIR}/event/images/bitmap-compressed.cpp\r
- ${INTERNAL_DIR}/event/images/image-impl.cpp\r
- ${INTERNAL_DIR}/event/images/buffer-image-impl.cpp\r
- ${INTERNAL_DIR}/event/images/frame-buffer-image-impl.cpp\r
- ${INTERNAL_DIR}/event/images/encoded-buffer-image-impl.cpp\r
- ${INTERNAL_DIR}/event/images/nine-patch-image-impl.cpp\r
- ${INTERNAL_DIR}/event/images/resource-image-impl.cpp\r
- ${INTERNAL_DIR}/event/images/native-image-impl.cpp\r
- ${INTERNAL_DIR}/event/images/pixel-data-impl.cpp\r
- ${INTERNAL_DIR}/event/object/custom-object-internal.cpp\r
- ${INTERNAL_DIR}/event/render-tasks/render-task-impl.cpp\r
- ${INTERNAL_DIR}/event/render-tasks/render-task-list-impl.cpp\r
- ${INTERNAL_DIR}/event/rendering/frame-buffer-impl.cpp\r
- ${INTERNAL_DIR}/event/rendering/geometry-impl.cpp\r
- ${INTERNAL_DIR}/event/rendering/texture-impl.cpp\r
- ${INTERNAL_DIR}/event/rendering/texture-set-impl.cpp\r
- ${INTERNAL_DIR}/event/rendering/renderer-impl.cpp\r
- ${INTERNAL_DIR}/event/rendering/sampler-impl.cpp\r
- ${INTERNAL_DIR}/event/rendering/shader-impl.cpp\r
- ${INTERNAL_DIR}/event/size-negotiation/memory-pool-relayout-container.cpp\r
- ${INTERNAL_DIR}/event/size-negotiation/relayout-controller-impl.cpp\r
-\r
- ${INTERNAL_DIR}/render/common/render-algorithms.cpp\r
- ${INTERNAL_DIR}/render/common/render-debug.cpp\r
- ${INTERNAL_DIR}/render/common/render-instruction.cpp\r
- ${INTERNAL_DIR}/render/common/render-instruction-container.cpp\r
- ${INTERNAL_DIR}/render/common/render-item.cpp\r
- ${INTERNAL_DIR}/render/common/render-tracker.cpp\r
- ${INTERNAL_DIR}/render/common/render-manager.cpp\r
- ${INTERNAL_DIR}/render/data-providers/render-data-provider.cpp\r
- ${INTERNAL_DIR}/render/gl-resources/context.cpp\r
- ${INTERNAL_DIR}/render/gl-resources/frame-buffer-state-cache.cpp\r
- ${INTERNAL_DIR}/render/gl-resources/gl-call-debug.cpp\r
- ${INTERNAL_DIR}/render/gl-resources/gpu-buffer.cpp\r
- ${INTERNAL_DIR}/render/queue/render-queue.cpp\r
- ${INTERNAL_DIR}/render/renderers/render-frame-buffer.cpp\r
- ${INTERNAL_DIR}/render/renderers/render-geometry.cpp\r
- ${INTERNAL_DIR}/render/renderers/render-property-buffer.cpp\r
- ${INTERNAL_DIR}/render/renderers/render-renderer.cpp\r
- ${INTERNAL_DIR}/render/renderers/render-texture.cpp\r
- ${INTERNAL_DIR}/render/shaders/program.cpp\r
- ${INTERNAL_DIR}/render/shaders/program-controller.cpp\r
- ${INTERNAL_DIR}/render/shaders/scene-graph-shader.cpp\r
-\r
- ${INTERNAL_DIR}/update/animation/scene-graph-animation.cpp\r
- ${INTERNAL_DIR}/update/animation/scene-graph-constraint-base.cpp\r
- ${INTERNAL_DIR}/update/common/discard-queue.cpp\r
- ${INTERNAL_DIR}/update/common/property-base.cpp\r
- ${INTERNAL_DIR}/update/common/property-owner-messages.cpp\r
- ${INTERNAL_DIR}/update/common/property-condition-functions.cpp\r
- ${INTERNAL_DIR}/update/common/property-condition-step-functions.cpp\r
- ${INTERNAL_DIR}/update/common/property-condition-variable-step-functions.cpp\r
- ${INTERNAL_DIR}/update/common/property-owner.cpp\r
- ${INTERNAL_DIR}/update/common/scene-graph-buffers.cpp\r
- ${INTERNAL_DIR}/update/common/scene-graph-connection-change-propagator.cpp\r
- ${INTERNAL_DIR}/update/common/scene-graph-property-notification.cpp\r
- ${INTERNAL_DIR}/update/common/uniform-map.cpp\r
- ${INTERNAL_DIR}/update/controllers/render-message-dispatcher.cpp\r
- ${INTERNAL_DIR}/update/controllers/scene-controller-impl.cpp\r
- ${INTERNAL_DIR}/update/gestures/pan-gesture-profiling.cpp\r
- ${INTERNAL_DIR}/update/gestures/scene-graph-pan-gesture.cpp\r
- ${INTERNAL_DIR}/update/queue/update-message-queue.cpp\r
- ${INTERNAL_DIR}/update/manager/render-instruction-processor.cpp\r
- ${INTERNAL_DIR}/update/manager/render-task-processor.cpp\r
- ${INTERNAL_DIR}/update/manager/transform-manager.cpp\r
- ${INTERNAL_DIR}/update/manager/update-algorithms.cpp\r
- ${INTERNAL_DIR}/update/manager/update-manager.cpp\r
- ${INTERNAL_DIR}/update/manager/update-manager-debug.cpp\r
- ${INTERNAL_DIR}/update/render-tasks/scene-graph-camera.cpp\r
- ${INTERNAL_DIR}/update/nodes/node.cpp\r
- ${INTERNAL_DIR}/update/nodes/node-messages.cpp\r
- ${INTERNAL_DIR}/update/nodes/scene-graph-layer.cpp\r
- ${INTERNAL_DIR}/update/render-tasks/scene-graph-render-task.cpp\r
- ${INTERNAL_DIR}/update/render-tasks/scene-graph-render-task-list.cpp\r
- ${INTERNAL_DIR}/update/rendering/scene-graph-texture-set.cpp\r
- ${INTERNAL_DIR}/update/rendering/scene-graph-renderer.cpp\r
- )\r
-\r
-link_directories(\r
-${dali_SOURCE_DIR}/dali-adaptor/dali-windows-backend/ExLib\r
-)\r
-\r
-ADD_DEFINITIONS(\r
-/vmg\r
-/NODEFAULTLIB:"libcmt.lib"\r
-/FI"${dali_SOURCE_DIR}/dali-adaptor/dali-windows-backend/ExInclude/PreprocessorDefinitions.h"\r
-/DBUILDING_DALI_CORE\r
-/MP\r
-)\r
-#head file path \r
-INCLUDE_DIRECTORIES( \r
-./\r
-${dali_SOURCE_DIR}/dali-adaptor/dali-windows-backend/ExInclude\r
-)\r
-\r
-set(LIBRARY_OUTPUT_PATH ${dali_SOURCE_DIR}/bin)\r
-\r
-ADD_LIBRARY(dali-core SHARED ${SOURCES})\r
-\r
-target_link_libraries(dali-core WindowsPlatform.lib)\r
-\r
-endif()\r
-\r
-#add link library \r
-#TARGET_LINK_LIBRARIES(${FS_BUILD_BINARY_PREFIX}sqrt ${LIBRARIES})
\ No newline at end of file
*/
void DistanceTransform( float *source, float* dest, unsigned int length )
{
- std::vector<int> parabolas(length); // Locations of parabolas in lower envelope
- std::vector<float> edge(length + 1); // Locations of boundaries between parabolas
-
+ int parabolas[length]; // Locations of parabolas in lower envelope
+ float edge[length + 1]; // Locations of boundaries between parabolas
int rightmost(0); // Index of rightmost parabola in lower envelope
parabolas[0] = 0;
* @brief Allows client code to synchronize updates to its own state with the
* internal state of a ConditionalWait object.
*/
- class DALI_CORE_API ScopedLock
+ class ScopedLock
{
public:
/**
* Note! this class *does not* prevent a deadlock in the case when same thread is
* locking the same mutex twice.
*/
- class DALI_CORE_API ScopedLock
+ class ScopedLock
{
public:
/**
* Provides unfiltered logging for global error level messages
*/
-#define DALI_LOG_ERROR(format, ...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugError, "%s " format, __FUNCTION__, ## __VA_ARGS__)
+#define DALI_LOG_ERROR(format, args...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugError, "%s " format, __PRETTY_FUNCTION__, ## args)
-#define DALI_LOG_ERROR_NOFN(format, ...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugError, format, ## __VA_ARGS__)
+#define DALI_LOG_ERROR_NOFN(format, args...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugError, format, ## args)
-#define DALI_LOG_WARNING_NOFN(format, ...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugWarning, format, ## __VA_ARGS__)
+#define DALI_LOG_WARNING_NOFN(format, args...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugWarning, format, ## args)
/**
* Provides unfiltered logging for fps monitor
*/
-#define DALI_LOG_FPS(format, ...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugInfo, format, ## __VA_ARGS__)
+#define DALI_LOG_FPS(format, args...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugInfo, format, ## args)
/**
* Provides unfiltered logging for update status
*/
-#define DALI_LOG_UPDATE_STATUS(format, ...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugInfo, format, ## __VA_ARGS__)
+#define DALI_LOG_UPDATE_STATUS(format, args...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugInfo, format, ## args)
/**
* Provides unfiltered logging for render information
*/
-#define DALI_LOG_RENDER_INFO(format, ...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugInfo, format, ## __VA_ARGS__)
+#define DALI_LOG_RENDER_INFO(format, args...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugInfo, format, ## args)
/**
* Provides unfiltered logging for release
*/
-#define DALI_LOG_RELEASE_INFO(format, args, ...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugInfo, format, ## __VA_ARGS__)
+#define DALI_LOG_RELEASE_INFO(format, args...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugInfo, format, ## args)
#ifdef DEBUG_ENABLED
/**
* Provides unfiltered logging for global warning level messages
*/
-#define DALI_LOG_WARNING(format, ...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugWarning, "%s " format, __PRETTY_FUNCTION__, ## __VA_ARGS__)
+#define DALI_LOG_WARNING(format, args...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugWarning, "%s " format, __PRETTY_FUNCTION__, ## args)
#else // DEBUG_ENABLED
// Don't warn on release build
-#define DALI_LOG_WARNING(format, ...)
+#define DALI_LOG_WARNING(format, args...)
#endif
#ifdef DEBUG_ENABLED
-#define DALI_LOG_INFO(filter, level, format, ...) \
- if(filter && filter->IsEnabledFor(level)) { filter->Log(level, format, ## __VA_ARGS__); }
+#define DALI_LOG_INFO(filter, level, format, args...) \
+ if(filter && filter->IsEnabledFor(level)) { filter->Log(level, format, ## args); }
#define DALI_LOG_STREAM( filter, level, stream ) \
if(filter && filter->IsEnabledFor(level)) \
#else // DEBUG_ENABLED
-#define DALI_LOG_INFO(filter, level, format, ...)
+#define DALI_LOG_INFO(filter, level, format, args...)
#define DALI_LOG_STREAM( filter, level, stream )
#endif // DEBUG_ENABLED
};
-#define DALI_LOG_TRACE_METHOD_FMT(filter, format, ...) \
- Dali::Integration::Log::TraceObj debugTraceObj(filter, "%s: " format, __PRETTY_FUNCTION__, ## __VA_ARGS__)
+#define DALI_LOG_TRACE_METHOD_FMT(filter, format, args...) \
+ Dali::Integration::Log::TraceObj debugTraceObj(filter, "%s: " format, __PRETTY_FUNCTION__, ## args)
#define DALI_LOG_TRACE_METHOD(filter) \
Dali::Integration::Log::TraceObj debugTraceObj(filter, __PRETTY_FUNCTION__)
#else // DEBUG_ENABLED
-#define DALI_LOG_TRACE_METHOD_FMT(filter, format, ...)
+#define DALI_LOG_TRACE_METHOD_FMT(filter, format, args...)
#define DALI_LOG_TRACE_METHOD(filter)
/**
* Allows one object to set another object's std::string easily
*/
-#define DALI_LOG_FMT_OBJECT_STRING(object, fmt, ...) (object->mDebugString = FormatToString(fmt, ## __VA_ARGS__))
+#define DALI_LOG_FMT_OBJECT_STRING(object, fmt, args...) (object->mDebugString = FormatToString(fmt, ## args))
/**
* Allows one object to get another object's debug string
#define DALI_LOG_OBJECT_STRING_DECLARATION
#define DALI_LOG_ACTOR_TREE(node)
#define DALI_LOG_SET_OBJECT_STRING(object, string)
-#define DALI_LOG_FMT_OBJECT_STRING(object, fmt, ...)
+#define DALI_LOG_FMT_OBJECT_STRING(object, fmt, args...)
#define DALI_LOG_GET_OBJECT_STRING(object)
#define DALI_LOG_GET_OBJECT_C_STR(object) ""
#define DALI_LOG_OBJECT(filter, object)
DALI_ASSERT_ALWAYS( size <= mSize );
// set WRITING bit
- BufferState currentState( std::atomic_fetch_or( &mState, WRITING ) );
-
+ BufferState currentState( __sync_fetch_and_or( &mState, WRITING ) );
DALI_ASSERT_DEBUG( !(currentState & WRITING_MASK) ); // WRITING bit should never be set when we get here
// copy data to current write buffer, negate state to get actual index (recap: R0W1 = 0, R1W0 = 1)
memcpy( mBuffer[index], src, size );
// unset WRITING bit, set UPDATED bit
- BufferState writingState = static_cast<BufferState>(currentState | WRITING);
- BufferState checkState = mState;
- mState.compare_exchange_strong( writingState, static_cast<BufferState>(index | UPDATED) );
+ BufferState checkState = __sync_val_compare_and_swap( &mState,
+ static_cast<BufferState>(currentState | WRITING),
+ static_cast<BufferState>(index | UPDATED) );
DALI_ASSERT_DEBUG( checkState & WRITING );
(void)checkState; // Avoid unused variable warning
{
// Try to swap buffers.
// This will set mState to 1 if readbuffer 0 was updated, 0 if readbuffer 1 was updated and fail if WRITING is set
- BufferState writingState = static_cast<BufferState>(currentWriteBuf | UPDATED);
- if( mState.compare_exchange_strong( writingState, static_cast<BufferState>(!currentWriteBuf) ) )
+ if( __sync_bool_compare_and_swap( &mState,
+ static_cast<BufferState>(currentWriteBuf | UPDATED),
+ static_cast<BufferState>(!currentWriteBuf) ) )
{
// swap successful
return mBuffer[currentWriteBuf];
#include <dali/public-api/common/vector-wrapper.h>
#include <dali/public-api/common/dali-common.h>
-#include <atomic>
-
namespace Dali
{
private:
unsigned char* mBuffer[2]; ///< bitmap buffers
- volatile std::__atomic_base<BufferState> mState; ///< readbuffer number and whether we're currently writing into writebuffer or not
+ BufferState volatile mState; ///< readbuffer number and whether we're currently writing into writebuffer or not
size_t mSize; ///< size of buffers
};
unsigned int width : 16; ///< image width in pixels
unsigned int height : 16; ///< image height in pixels
ScalingMode scaling : 3; ///< scaling option, ShrinkToFit is default
- FilterMode filtering : 4; ///< filtering option. Box is the default
+ FilterMode filtering : 3; ///< filtering option. Box is the default
bool mOrientationCorrection : 1; ///< If true, image pixels are reordered according to orientation metadata on load.
};
bool mPositionUsesAnchorPoint : 1; ///< Cached: Whether the position uses the anchor point or not.
bool mVisible : 1; ///< Cached: Whether the actor is visible or not.
bool mInheritLayoutDirection : 1; ///< Whether the actor inherits the layout direction from parent.
- LayoutDirection::Type mLayoutDirection : 2; ///< Layout direction, Left to Right or Right to Left.
- DrawMode::Type mDrawMode : 3; ///< Cached: How the actor and its children should be drawn
- PositionInheritanceMode mPositionInheritanceMode : 3; ///< Cached: Determines how position is inherited
- ColorMode mColorMode : 3; ///< Cached: Determines whether mWorldColor is inherited
- ClippingMode::Type mClippingMode : 3; ///< Cached: Determines which clipping mode (if any) to use.
+ LayoutDirection::Type mLayoutDirection : 1; ///< Layout direction, Left to Right or Right to Left.
+ DrawMode::Type mDrawMode : 2; ///< Cached: How the actor and its children should be drawn
+ PositionInheritanceMode mPositionInheritanceMode : 2; ///< Cached: Determines how position is inherited
+ ColorMode mColorMode : 2; ///< Cached: Determines whether mWorldColor is inherited
+ ClippingMode::Type mClippingMode : 2; ///< Cached: Determines which clipping mode (if any) to use.
private:
Render::Renderer::StencilParameters mStencilParameters; ///< Struct containing all stencil related options
BlendingOptions mBlendingOptions; ///< Local copy of blending options bitmask
+
float mOpacity; ///< Local copy of the opacity
- DepthFunction::Type mDepthFunction:4; ///< Local copy of the depth function
- FaceCullingMode::Type mFaceCullingMode:3; ///< Local copy of the mode of face culling
- BlendMode::Type mBlendMode:3; ///< Local copy of the mode of blending
- DepthWriteMode::Type mDepthWriteMode:3; ///< Local copy of the depth write mode
- DepthTestMode::Type mDepthTestMode:3; ///< Local copy of the depth test mode
+
+ DepthFunction::Type mDepthFunction:3; ///< Local copy of the depth function
+ FaceCullingMode::Type mFaceCullingMode:2; ///< Local copy of the mode of face culling
+ BlendMode::Type mBlendMode:2; ///< Local copy of the mode of blending
+ DepthWriteMode::Type mDepthWriteMode:2; ///< Local copy of the depth write mode
+ DepthTestMode::Type mDepthTestMode:2; ///< Local copy of the depth test mode
bool mPremultipledAlphaEnabled:1; ///< Flag indicating whether the Pre-multiplied Alpha Blending is required
};
$(internal_src_dir)/event/rendering/shader-impl.cpp \
$(internal_src_dir)/event/size-negotiation/memory-pool-relayout-container.cpp \
$(internal_src_dir)/event/size-negotiation/relayout-controller-impl.cpp \
+ \
$(internal_src_dir)/render/common/render-algorithms.cpp \
$(internal_src_dir)/render/common/render-debug.cpp \
$(internal_src_dir)/render/common/render-instruction.cpp \
#define TRACKER_LOG(level) \
DALI_LOG_INFO(gRenderTrackerLogFilter, level, "RenderTracker::%s: this:%p\n", __FUNCTION__, this)
-#define TRACKER_LOG_FMT(level, format, ...) \
- DALI_LOG_INFO(gRenderTrackerLogFilter, level, "RenderTracker::%s: this:%p " format, __FUNCTION__, this, ## __VA_ARGS__)
+#define TRACKER_LOG_FMT(level, format, args...) \
+ DALI_LOG_INFO(gRenderTrackerLogFilter, level, "RenderTracker::%s: this:%p " format, __FUNCTION__, this, ## args)
#else
#define TRACKER_LOG(level)
-#define TRACKER_LOG_FMT(level, format, ...)
+#define TRACKER_LOG_FMT(level, format, args...)
#endif
} // Render
bool RenderTracker::IsSynced()
{
- int flag = 0xFF;
- bool ret = mSyncTrigger.compare_exchange_strong( flag, 0 );
+ int x = __sync_val_compare_and_swap(&mSyncTrigger, 0xFF, 0x0);
- TRACKER_LOG_FMT( Debug::General, " = %s\n", true == ret ? "T" : "F" );
- return ret;
+ TRACKER_LOG_FMT(Debug::General, " = %s\n", x!=0?"T":"F");
+ return x != 0;
}
void RenderTracker::ResetSyncFlag()
{
TRACKER_LOG(Debug::General);
- int flag = 0xFF;
- mSyncTrigger.compare_exchange_strong( flag, 0 );
+ (void)__sync_lock_test_and_set(&mSyncTrigger, 0x0);
}
void RenderTracker::SetSyncFlag()
{
- int flag = 0;
- mSyncTrigger.compare_exchange_strong( flag, 0xFF );
+ (void)__sync_lock_test_and_set(&mSyncTrigger, 0xFF);
}
} // Render
#include <dali/integration-api/gl-sync-abstraction.h>
#include <dali/internal/common/message.h>
-#include <atomic>
-
namespace Dali
{
namespace Internal
Integration::GlSyncAbstraction* mGlSyncAbstraction; // The sync abstraction
Integration::GlSyncAbstraction::SyncObject* mSyncObject; // Associated sync object
- volatile std::atomic<int> mSyncTrigger; // Trigger that update thread can read
+ volatile int mSyncTrigger; // Trigger that update thread can read
};
{
class PropertyBuffer;
class Shader;
-class Renderer;
/**
* Wraps all the data providers for the renderer. This allows the
#endif // DEBUG_ENABLED
// Don't put guards around here (LOG_INFO has it's own guards)
-#define LOG_GL(format, ...) \
- DALI_LOG_INFO(gGlLogFilter, Debug::General, format, ## __VA_ARGS__)
+#define LOG_GL(format, args...) \
+ DALI_LOG_INFO(gGlLogFilter, Debug::General, format, ## args)
}
int stencilFunctionMask; ///< The stencil function mask
int stencilFunctionReference; ///< The stencil function reference
int stencilMask; ///< The stencil mask
- RenderMode::Type renderMode:4; ///< The render mode
- StencilFunction::Type stencilFunction:4; ///< The stencil function
- StencilOperation::Type stencilOperationOnFail:4; ///< The stencil operation for stencil test fail
- StencilOperation::Type stencilOperationOnZFail:4; ///< The stencil operation for depth test fail
- StencilOperation::Type stencilOperationOnZPass:4; ///< The stencil operation for depth test pass
+ RenderMode::Type renderMode:3; ///< The render mode
+ StencilFunction::Type stencilFunction:3; ///< The stencil function
+ StencilOperation::Type stencilOperationOnFail:3; ///< The stencil operation for stencil test fail
+ StencilOperation::Type stencilOperationOnZFail:3; ///< The stencil operation for depth test fail
+ StencilOperation::Type stencilOperationOnZPass:3; ///< The stencil operation for depth test pass
};
/**
size_t mIndexedDrawFirstElement; ///< Offset of first element to draw
size_t mIndexedDrawElementsCount; ///< Number of elements to draw
- DepthFunction::Type mDepthFunction:4; ///< The depth function
- FaceCullingMode::Type mFaceCullingMode:3; ///< The mode of face culling
- DepthWriteMode::Type mDepthWriteMode:3; ///< The depth write mode
- DepthTestMode::Type mDepthTestMode:3; ///< The depth test mode
+ DepthFunction::Type mDepthFunction:3; ///< The depth function
+ FaceCullingMode::Type mFaceCullingMode:2; ///< The mode of face culling
+ DepthWriteMode::Type mDepthWriteMode:2; ///< The depth write mode
+ DepthTestMode::Type mDepthTestMode:2; ///< The depth test mode
bool mUpdateAttributesLocation:1; ///< Indicates attribute locations have changed
bool mPremultipledAlphaEnabled:1; ///< Flag indicating whether the Pre-multiplied Alpha Blending is required
uint16_t mWidth; ///< Width of the texture
uint16_t mHeight; ///< Height of the texture
uint16_t mMaxMipMapLevel; ///< Maximum mipmap level
- Type mType:3; ///< Type of the texture
+ Type mType:2; ///< Type of the texture
bool mHasAlpha : 1; ///< Whether the format has an alpha channel
bool mIsCompressed : 1; ///< Whether the format is compressed
mGlAbstraction.GetProgramiv( mProgramId, GL_ACTIVE_UNIFORM_MAX_LENGTH, &uniformMaxNameLength );
std::vector<std::string> samplerNames;
- std::vector<char> name(uniformMaxNameLength + 1); // Allow for null terminator
+ char name[uniformMaxNameLength+1]; // Allow for null terminator
std::vector< LocationPosition > samplerUniformLocations;
{
for( int i=0; i<numberOfActiveUniforms; ++i )
{
mGlAbstraction.GetActiveUniform( mProgramId, static_cast< GLuint >( i ), uniformMaxNameLength,
- &nameLength, &number, &type, name.data() );
+ &nameLength, &number, &type, name );
if( type == GL_SAMPLER_2D || type == GL_SAMPLER_CUBE || type == GL_SAMPLER_EXTERNAL_OES )
{
- GLuint location = mGlAbstraction.GetUniformLocation( mProgramId, name.data() );
- samplerNames.push_back( name.data() );
+ GLuint location = mGlAbstraction.GetUniformLocation( mProgramId, name );
+ samplerNames.push_back(name);
samplerUniformLocations.push_back(LocationPosition(location, -1));
}
}
void SceneGraphBuffers::Swap()
{
- mUpdateBufferIndex = std::atomic_fetch_xor<BufferIndex>(&mEventBufferIndex, 1);
+ mUpdateBufferIndex = __sync_fetch_and_xor( &mEventBufferIndex, 1 );
}
} // namespace SceneGraph
// INTERNAL INCLUDES
#include <dali/internal/common/buffer-index.h>
-#include <atomic>
namespace Dali
{
SceneGraphBuffers& operator=(const SceneGraphBuffers& rhs);
private:
- std::atomic<BufferIndex> mEventBufferIndex; ///< 0 or 1 (opposite of mUpdateBufferIndex)
+
+ BufferIndex mEventBufferIndex; ///< 0 or 1 (opposite of mUpdateBufferIndex)
BufferIndex mUpdateBufferIndex; ///< 0 or 1 (opposite of mEventBufferIndex)
};
} // namespace SceneGraph
+template <>
+void OwnerPointer<Dali::Internal::SceneGraph::Node>::Reset()
+{
+ if( mObject != NULL )
+ {
+ Dali::Internal::SceneGraph::Node::Delete( mObject );
+ mObject = NULL;
+ }
+}
+
} // namespace Internal
+template <>
+void OwnerContainer<Dali::Internal::SceneGraph::Node*>::Delete(Dali::Internal::SceneGraph::Node* pointer)
+{
+ Dali::Internal::SceneGraph::Node::Delete( pointer );
+}
+
} // namespace Dali
// flags, compressed to bitfield
unsigned int mRegenerateUniformMap:2; ///< Indicate if the uniform map has to be regenerated this frame
int mDirtyFlags:8; ///< A composite set of flags for each of the Node properties
- DrawMode::Type mDrawMode:3; ///< How the Node and its children should be drawn
- ColorMode mColorMode:3; ///< Determines whether mWorldColor is inherited, 2 bits is enough
- ClippingMode::Type mClippingMode:3; ///< The clipping mode of this node
+ DrawMode::Type mDrawMode:2; ///< How the Node and its children should be drawn
+ ColorMode mColorMode:2; ///< Determines whether mWorldColor is inherited, 2 bits is enough
+ ClippingMode::Type mClippingMode:2; ///< The clipping mode of this node
bool mIsRoot:1; ///< True if the node cannot have a parent
bool mIsLayer:1; ///< True if the node is a layer
bool mPositionUsesAnchorPoint:1; ///< True if the node should use the anchor-point when calculating the position
// Template specialisation for OwnerPointer<Node>, because delete is protected
template <>
-inline void OwnerPointer<Dali::Internal::SceneGraph::Node>::Reset()
-{
- if (mObject != NULL)
- {
- Dali::Internal::SceneGraph::Node::Delete(mObject);
- mObject = NULL;
- }
-}
+void OwnerPointer<Dali::Internal::SceneGraph::Node>::Reset();
+
} // namespace Internal
// Template specialisations for OwnerContainer<Node*>, because delete is protected
template <>
-inline void OwnerContainer<Dali::Internal::SceneGraph::Node*>::Delete( Dali::Internal::SceneGraph::Node* pointer )
-{
- Dali::Internal::SceneGraph::Node::Delete(pointer);
-}
+void OwnerContainer<Dali::Internal::SceneGraph::Node*>::Delete( Dali::Internal::SceneGraph::Node* pointer );
+
} // namespace Dali
#endif // DALI_INTERNAL_SCENE_GRAPH_NODE_H
} // namespace SceneGraph
+template <>
+void OwnerPointer<Dali::Internal::SceneGraph::Layer>::Reset()
+{
+ if( mObject != NULL )
+ {
+ Dali::Internal::SceneGraph::Node::Delete( mObject );
+ mObject = NULL;
+ }
+}
} // namespace Internal
} // namespace Dali
// Template specialisation for OwnerPointer<Layer>, because delete is protected
template <>
-inline void OwnerPointer<Dali::Internal::SceneGraph::Layer>::Reset()
-{
- if (mObject != NULL)
- {
- Dali::Internal::SceneGraph::Node::Delete(mObject);
- mObject = NULL;
- }
-}
+void OwnerPointer<Dali::Internal::SceneGraph::Layer>::Reset();
+
} // namespace Internal
} // namespace Dali
#define TASK_LOG(level) \
DALI_LOG_INFO(gRenderTaskLogFilter, level, "SceneGraph::RenderTask::%s: this:%p\n", __FUNCTION__, this)
-#define TASK_LOG_FMT(level, format, ...) \
- DALI_LOG_INFO(gRenderTaskLogFilter, level, "SceneGraph::RenderTask::%s: this:%p " format, __FUNCTION__, this, ## __VA_ARGS__)
+#define TASK_LOG_FMT(level, format, args...) \
+ DALI_LOG_INFO(gRenderTaskLogFilter, level, "SceneGraph::RenderTask::%s: this:%p " format, __FUNCTION__, this, ## args)
+
#else
#define TASK_LOG(level)
-#define TASK_LOG_FMT(level, format, ...)
+#define TASK_LOG_FMT(level, format, args...)
+
#endif
#endif // __DALI_INTERNAL_SCENE_GRAPH_RENDER_TASK_DEBUG_H__
unsigned int mRegenerateUniformMap; ///< 2 if the map should be regenerated, 1 if it should be copied.
unsigned int mResendFlag; ///< Indicate whether data should be resent to the renderer
- DepthFunction::Type mDepthFunction:4; ///< Local copy of the depth function
- FaceCullingMode::Type mFaceCullingMode:3; ///< Local copy of the mode of face culling
- BlendMode::Type mBlendMode:3; ///< Local copy of the mode of blending
- DepthWriteMode::Type mDepthWriteMode:3; ///< Local copy of the depth write mode
- DepthTestMode::Type mDepthTestMode:3; ///< Local copy of the depth test mode
+ DepthFunction::Type mDepthFunction:3; ///< Local copy of the depth function
+ FaceCullingMode::Type mFaceCullingMode:2; ///< Local copy of the mode of face culling
+ BlendMode::Type mBlendMode:2; ///< Local copy of the mode of blending
+ DepthWriteMode::Type mDepthWriteMode:2; ///< Local copy of the depth write mode
+ DepthTestMode::Type mDepthTestMode:2; ///< Local copy of the depth test mode
bool mUniformMapChanged[2]; ///< Records if the uniform map has been altered this frame
bool mPremultipledAlphaEnabled:1; ///< Flag indicating whether the Pre-multiplied Alpha Blending is required
Vector4 mBezierControlPoints; //< Control points for the bezier alpha function
AlphaFunctionPrototype mCustom; //< Pointer to an alpha function
- BuiltinFunction mBuiltin : Log<COUNT>::value+2; //< Enum indicating the built-in alpha function
- Mode mMode : 3; //< Enum indicating the functioning mode of the AlphaFunction
+ BuiltinFunction mBuiltin : Log<COUNT>::value+1; //< Enum indicating the built-in alpha function
+ Mode mMode : 2; //< Enum indicating the functioning mode of the AlphaFunction
};
/**
# define DALI_INTERNAL __attribute__ ((visibility ("hidden")))
# endif
#else
-#ifdef WIN32
- /** Visibility attribute to show declarations */
-# define DALI_EXPORT_API __declspec(dllexport) //Deprecated
-
-#ifdef BUILDING_DALI_CORE
- /** Visibility attribute to hide declarations */
-# define DALI_CORE_API __declspec(dllexport)
-#else
-/** Visibility attribute to hide declarations */
-# define DALI_CORE_API __declspec(dllimport)
-#endif
-
-#else
- /** Visibility attribute to show declarations */
-# define DALI_EXPORT_API //Deprecated
+/** Visibility attribute to show method definitions */
+# define DALI_EXPORT_API
/** Visibility attribute to show declarations */
# define DALI_IMPORT_API
/** Visibility attribute to show declarations */
# define DALI_CORE_API
-#endif
/** Visibility attribute to hide declarations */
# define DALI_INTERNAL
#endif
* DALI_UNLIKELY should be used when a branch is almost never taken.
* @SINCE_1_0.0
*/
-#ifdef __GNUC
#define DALI_LIKELY(expression) __builtin_expect( !!(expression), 1 )
#define DALI_UNLIKELY(expression) __builtin_expect( !!(expression), 0 )
-#else
-#define DALI_LIKELY(expression) !!(expression)
-#define DALI_UNLIKELY(expression) !!(expression)
-#endif
/**
* @brief The DALi namespace.
{
public:
- friend DALI_CORE_API std::ostream& operator<< (std::ostream& o, const Matrix& matrix);
+ friend std::ostream& operator<< (std::ostream& o, const Matrix& matrix);
/**
* @brief Constructor.
{
public:
- friend DALI_CORE_API std::ostream& operator<< (std::ostream& o, const Matrix3& matrix);
+ friend std::ostream& operator<< (std::ostream& o, const Matrix3& matrix);
/**
* @brief The identity matrix.
* limitations under the License.
*
*/
-// EXTERNAL INCLUDES
-#include <ctime>
// INTERNAL INCLUDES
#include <dali/public-api/math/vector4.h>
* @brief Output to stream.
* @SINCE_1_1.28
*/
- friend DALI_CORE_API std::ostream& operator<<( std::ostream& stream, const Property::Array& array );
+ friend std::ostream& operator<<( std::ostream& stream, const Property::Array& array );
private:
struct DALI_INTERNAL Impl; ///< Private data
* @brief Output to stream.
* @SINCE_1_1.28
*/
- friend DALI_CORE_API std::ostream& operator<<( std::ostream& stream, const Property::Map& map );
+ friend std::ostream& operator<<( std::ostream& stream, const Property::Map& map );
private:
struct DALI_INTERNAL Impl; ///< Private data
* @brief Output to stream.
* @SINCE_1_0.0
*/
- friend DALI_CORE_API std::ostream& operator<<( std::ostream& ouputStream, const Property::Value& value );
+ friend std::ostream& operator<<( std::ostream& ouputStream, const Property::Value& value );
private:
#else
- std::atomic_fetch_add<int>(&mCount, 1);
+ // gcc > 4.1 builtin atomic add and fetch:
+ __sync_add_and_fetch( &mCount, 1 );
#endif
}
#else
- newValue = ( mCount -= 1 );
+ // gcc > 4.1 builtin atomic subtract and fetch (--mCount; return mCount)
+ newValue = __sync_sub_and_fetch( &mCount, 1 );
#endif
#include <dali/public-api/common/dali-common.h>
#include <dali/public-api/common/intrusive-ptr.h>
-#include <atomic>
-
namespace Dali
{
/**
RefObject& operator=(const RefObject& rhs);
private:
- volatile std::atomic<int> mCount; ///< Reference count
+
+ volatile int mCount; ///< Reference count
};
/**
* @brief Used to guard against nested Emit() calls.
* @SINCE_1_0.0
*/
- struct DALI_CORE_API EmitGuard
+ struct EmitGuard
{
/**
* @brief Creates the guard.
#include <dali/public-api/common/dali-common.h>
#include <dali/public-api/signals/functor-delegate.h>
-#ifdef WIN32
-#define STDCALL __stdcall
-#else
-#define STDCALL
-#endif
-
namespace Dali
{
/**
}
else if( !callback.mImpl && callback.mFunction )
{
- typedef R(STDCALL *Function1)();
+ typedef R(*Function1)();
returnVal = (*(reinterpret_cast< Function1 >( callback.mFunction )))();
}
else if( !callback.mImpl && callback.mFunction )
{
// convert function type
- typedef void(STDCALL *Function1)(P1);
+ typedef void(*Function1)(P1);
(*(reinterpret_cast< Function1 >( callback.mFunction )))( param1 );
}
}
else if( !callback.mImpl && callback.mFunction )
{
// convert function type
- typedef R(STDCALL *Function1)(P1);
+ typedef R(*Function1)(P1);
returnVal = (*(reinterpret_cast< Function1 >( callback.mFunction )))( param1 );
}
else if( !callback.mImpl && callback.mFunction )
{
// convert function type
- typedef void(STDCALL *Function2)(P1,P2);
+ typedef void(*Function2)(P1,P2);
(*(reinterpret_cast< Function2 >( callback.mFunction )))( param1, param2 );
}
}
else if( !callback.mImpl && callback.mFunction )
{
// convert function type
- typedef R(STDCALL *Function2)(P1,P2);
+ typedef R(*Function2)(P1,P2);
returnVal = (*(reinterpret_cast< Function2 >( callback.mFunction )))( param1, param2 );
}
else if( !callback.mImpl && callback.mFunction )
{
// convert function type
- typedef void(STDCALL *Function2)(P1,P2,P3);
+ typedef void(*Function2)(P1,P2,P3);
(*(reinterpret_cast< Function2 >( callback.mFunction )))( param1, param2, param3 );
}
}
else if( !callback.mImpl && callback.mFunction )
{
// convert function type
- typedef R(STDCALL *Function2)(P1,P2,P3);
+ typedef R(*Function2)(P1,P2,P3);
returnVal = (*(reinterpret_cast< Function2 >( callback.mFunction )))( param1, param2, param3 );
}
* @brief Function with static linkage.
* @SINCE_1_0.0
*/
- typedef void(STDCALL *Function)(void);
+ typedef void(*Function)(void);
/**
* @brief Member function.
* @SINCE_1_0.0
*/
- typedef void (STDCALL CallbackBase::*MemberFunction)( void );
+ typedef void (CallbackBase::*MemberFunction)( void );
/**
* @brief Used to call the correct member function.