X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Frender%2Fcommon%2Frender-tracker.cpp;h=022f12067d615378cbe86da8c1fff32144cce032;hb=47f272c65d3010359ad79a2bb9a9e44ac77c14a8;hp=ef9723bf57c99667569c6cb40d0ecc1abbacc73d;hpb=7dcb0a38005dd8c6d71e466c1ea0ec4d7d57239f;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/render/common/render-tracker.cpp b/dali/internal/render/common/render-tracker.cpp index ef9723b..022f120 100644 --- a/dali/internal/render/common/render-tracker.cpp +++ b/dali/internal/render/common/render-tracker.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2015 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. @@ -26,16 +26,17 @@ namespace Dali { + namespace Internal { -namespace SceneGraph -{ +namespace Render +{ -RenderTracker::RenderTracker(Integration::GlSyncAbstraction& glSyncAbstraction) -: mGlSyncAbstraction(glSyncAbstraction), - mSyncTrigger(0), - mSyncObject(NULL) +RenderTracker::RenderTracker() +: mGlSyncAbstraction( NULL ), + mSyncObject( NULL ), + mSyncTrigger( 0 ) { TRACKER_LOG(Debug::Verbose); } @@ -45,23 +46,24 @@ RenderTracker::~RenderTracker() TRACKER_LOG(Debug::Verbose); if( mSyncObject ) { - mGlSyncAbstraction.DestroySyncObject( mSyncObject ); + mGlSyncAbstraction->DestroySyncObject( mSyncObject ); mSyncObject = NULL; } } -void RenderTracker::CreateSyncObject() +void RenderTracker::CreateSyncObject( Integration::GlSyncAbstraction& glSyncAbstraction ) { + mGlSyncAbstraction = &glSyncAbstraction; TRACKER_LOG(Debug::General); // Destroy any previous sync object if( mSyncObject ) { - mGlSyncAbstraction.DestroySyncObject( mSyncObject ); + mGlSyncAbstraction->DestroySyncObject( mSyncObject ); mSyncObject = NULL; } ResetSyncFlag(); - mSyncObject = mGlSyncAbstraction.CreateSyncObject( ); + mSyncObject = mGlSyncAbstraction->CreateSyncObject(); } void RenderTracker::PollSyncObject() @@ -69,7 +71,7 @@ void RenderTracker::PollSyncObject() if( mSyncObject && mSyncObject->IsSynced() ) { SetSyncFlag(); - mGlSyncAbstraction.DestroySyncObject( mSyncObject ); + mGlSyncAbstraction->DestroySyncObject( mSyncObject ); mSyncObject = NULL; TRACKER_LOG_FMT(Debug::General, " Synced\n"); @@ -80,23 +82,28 @@ void RenderTracker::PollSyncObject() bool RenderTracker::IsSynced() { - int x = __sync_val_compare_and_swap(&mSyncTrigger, 0xFF, 0x0); + int flag = 0xFF; + bool ret = mSyncTrigger.compare_exchange_strong( flag, 0 ); - TRACKER_LOG_FMT(Debug::General, " = %s\n", x!=0?"T":"F"); - return x != 0; + TRACKER_LOG_FMT( Debug::General, " = %s\n", true == ret ? "T" : "F" ); + return ret; } void RenderTracker::ResetSyncFlag() { TRACKER_LOG(Debug::General); - (void)__sync_lock_test_and_set(&mSyncTrigger, 0x0); + int flag = 0xFF; + mSyncTrigger.compare_exchange_strong( flag, 0 ); } void RenderTracker::SetSyncFlag() { - (void)__sync_lock_test_and_set(&mSyncTrigger, 0xFF); + int flag = 0; + mSyncTrigger.compare_exchange_strong( flag, 0xFF ); } -} // SceneGraph +} // Render + } // Internal + } // Dali