Merge "Clean up the code to build successfully on macOS" into devel/master
[platform/core/uifw/dali-core.git] / dali / internal / update / common / scene-graph-connection-change-propagator.cpp
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 #include "scene-graph-connection-change-propagator.h"
18
19 namespace Dali
20 {
21 namespace Internal
22 {
23 namespace SceneGraph
24 {
25 ConnectionChangePropagator::ConnectionChangePropagator() = default;
26
27 ConnectionChangePropagator::~ConnectionChangePropagator() = default;
28
29 void ConnectionChangePropagator::Add(Observer& observer)
30 {
31   bool foundObserver = false;
32   for( ObserversIterator iter = mObservers.Begin(); iter != mObservers.End(); ++iter )
33   {
34     if( *iter == &observer )
35     {
36       foundObserver = true;
37       break;
38     }
39   }
40   if( !foundObserver )
41   {
42     mObservers.PushBack( &observer );
43   }
44 }
45
46 void ConnectionChangePropagator::Remove(Observer& observer)
47 {
48   for( ObserversIterator iter = mObservers.Begin(); iter != mObservers.End(); ++iter )
49   {
50     if( *iter == &observer )
51     {
52       mObservers.Erase(iter);
53       return;
54     }
55   }
56 }
57
58 void ConnectionChangePropagator::ConnectionsChanged(PropertyOwner& object)
59 {
60   // Inform observers that the object's children have changed
61   for( ObserversIterator iter = mObservers.Begin(); iter != mObservers.End(); ++iter )
62   {
63     Observer* observer = (*iter);
64     observer->ConnectionsChanged( object );
65   }
66 }
67
68 void ConnectionChangePropagator::ConnectedUniformMapChanged()
69 {
70   // Inform observers that the object's uniform map has changed
71   for( ObserversIterator iter = mObservers.Begin(); iter != mObservers.End(); ++iter )
72   {
73     Observer* observer = (*iter);
74     observer->ConnectedUniformMapChanged();
75   }
76 }
77
78 void ConnectionChangePropagator::Destroy( PropertyOwner& object )
79 {
80   // Inform observers that the object's children have changed
81   for( ObserversIterator iter = mObservers.Begin(); iter != mObservers.End(); ++iter )
82   {
83     Observer* observer = (*iter);
84     observer->ObservedObjectDestroyed( object );
85   }
86 }
87
88 } // SceneGraph
89 } // Internal
90 } // Dali