2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://floralicense.org/license/
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
18 #include <dali/internal/event/common/object-registry-impl.h>
24 #include <dali/internal/event/common/thread-local-storage.h>
25 #include <dali/public-api/object/object-registry.h>
33 ObjectRegistryPtr ObjectRegistry::New()
35 return ObjectRegistryPtr(new ObjectRegistry());
38 ObjectRegistry::ObjectRegistry()
42 ObjectRegistry::~ObjectRegistry()
46 void ObjectRegistry::RegisterObject( Dali::BaseObject* object )
48 // Assert than an object is only registered once
49 DALI_ASSERT_DEBUG( mDebugRegistry.end() == mDebugRegistry.find( object ) );
52 // This allows us to assert that an object is only registered once (debug builds only)
53 mDebugRegistry.insert( object );
54 #endif // DEBUG_ENABLED
56 if ( !mObjectCreatedSignalV2.Empty() )
58 Dali::BaseHandle handle( object );
59 mObjectCreatedSignalV2.Emit( handle );
63 void ObjectRegistry::UnregisterObject( Dali::BaseObject* object )
66 // This allows us to assert that an object is only registered once (debug builds only)
67 mDebugRegistry.erase( object );
68 #endif // DEBUG_ENABLED
70 mObjectDestroyedSignalV2.Emit( object );
73 bool ObjectRegistry::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor )
75 bool connected( true );
76 ObjectRegistry* objectRegistry = dynamic_cast<ObjectRegistry*>(object);
78 if(Dali::ObjectRegistry::SIGNAL_OBJECT_CREATED == signalName)
80 objectRegistry->ObjectCreatedSignal().Connect( tracker, functor );
84 // signalName does not match any signal
91 } // namespace Internal