c31836a92a050222811454a28c23e9b9e5c42ca6
[platform/core/uifw/dali-adaptor.git] / dali / internal / sensor / common / tilt-sensor-factory.cpp
1 /*
2  * Copyright (c) 2017 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
18 #include <dali/internal/sensor/common/tilt-sensor-factory.h>
19 #include <dali/internal/sensor/common/tilt-sensor-impl.h>
20 #include <dali/internal/system/common/singleton-service-impl.h>
21
22 namespace Dali
23 {
24 namespace Internal
25 {
26 namespace Adaptor
27 {
28
29 namespace TiltSensorFactory
30 {
31 __attribute__((weak)) Dali::Internal::Adaptor::TiltSensor* Create()
32 {
33   // default implementation returns 'dummy' sensor
34   return new Internal::Adaptor::TiltSensor();
35 }
36
37 Dali::TiltSensor Get()
38 {
39   Dali::TiltSensor sensor;
40
41   Dali::SingletonService service(SingletonService::Get());
42
43   if (service)
44   {
45     // Check whether the keyboard focus manager is already created
46     Dali::BaseHandle handle = service.GetSingleton(typeid(Dali::TiltSensor));
47     if (handle)
48     {
49       // If so, downcast the handle of singleton to keyboard focus manager
50       sensor = Dali::TiltSensor(dynamic_cast< TiltSensor * >( handle.GetObjectPtr()));
51     }
52     else
53     {
54       // Create a singleton instance
55       sensor = Dali::TiltSensor(TiltSensorFactory::Create());
56       service.Register(typeid(sensor), sensor);
57       handle = sensor;
58     }
59   }
60   return sensor;
61 }
62 }
63
64 } // Adaptor
65
66 } // Internal
67
68 } // Dali