#include <dali/internal/render/common/render-tracker.h>
// INTERNAL INCLUDES
-#include <dali/integration-api/gl-sync-abstraction.h>
+#include <dali/graphics-api/graphics-sync-object-create-info.h>
#include <dali/internal/render/common/render-tracker-debug.h>
// EXTERNAL INCLUDES
namespace Dali
{
-
namespace Internal
{
-
namespace Render
{
-
RenderTracker::RenderTracker()
-: mGlSyncAbstraction( NULL ),
- mSyncObject( NULL ),
- mSyncTrigger( 0 )
+: mGraphicsController(nullptr),
+ mSyncObject(nullptr),
+ mSyncTrigger(0)
{
TRACKER_LOG(Debug::Verbose);
}
RenderTracker::~RenderTracker()
{
TRACKER_LOG(Debug::Verbose);
- if( mSyncObject )
- {
- mGlSyncAbstraction->DestroySyncObject( mSyncObject );
- mSyncObject = NULL;
- }
+ mSyncObject.reset(nullptr); // Will destroy sync object immediately
}
-void RenderTracker::CreateSyncObject( Integration::GlSyncAbstraction& glSyncAbstraction )
+Graphics::SyncObject* RenderTracker::CreateSyncObject(Graphics::Controller& graphicsController)
{
- mGlSyncAbstraction = &glSyncAbstraction;
+ mGraphicsController = &graphicsController;
+
TRACKER_LOG(Debug::General);
- // Destroy any previous sync object
- if( mSyncObject )
- {
- mGlSyncAbstraction->DestroySyncObject( mSyncObject );
- mSyncObject = NULL;
- }
ResetSyncFlag();
- mSyncObject = mGlSyncAbstraction->CreateSyncObject();
+ mSyncObject = mGraphicsController->CreateSyncObject(Graphics::SyncObjectCreateInfo{}, std::move(mSyncObject));
+ return mSyncObject.get();
}
void RenderTracker::PollSyncObject()
{
- if( mSyncObject && mSyncObject->IsSynced() )
+ if(mSyncObject && mSyncObject->IsSynced())
{
SetSyncFlag();
- mGlSyncAbstraction->DestroySyncObject( mSyncObject );
- mSyncObject = NULL;
+ mSyncObject.reset();
TRACKER_LOG_FMT(Debug::General, " Synced\n");
return;
{
int x = __sync_val_compare_and_swap(&mSyncTrigger, 0xFF, 0x0);
- TRACKER_LOG_FMT(Debug::General, " = %s\n", x!=0?"T":"F");
+ TRACKER_LOG_FMT(Debug::General, " = %s\n", x != 0 ? "T" : "F");
return x != 0;
}
(void)__sync_lock_test_and_set(&mSyncTrigger, 0xFF);
}
-} // Render
+} // namespace Render
-} // Internal
+} // namespace Internal
-} // Dali
+} // namespace Dali