Preload settings from GConf
[pedometerwidget] / src / usr / lib / hildon-desktop / pedometer_widget_home.py
index 10364fb..e132f4b 100644 (file)
@@ -57,7 +57,9 @@ unit = 0
 
 class Singleton(object):
     _instance = None
+    _references = 0
     def __new__(cls, *args, **kwargs):
+        cls._references+=1
         if not cls._instance:
             cls._instance = super(Singleton, cls).__new__(
                                 cls, *args, **kwargs)
@@ -1140,8 +1142,10 @@ class Config(Singleton):
     observers = []
 
     def __init__(self):
+        if self._references > 1:
+            return
         self.client = gconf.client_get_default()
-        self.client.add_dir('/apps/pedometerhomewidget', gconf.CLIENT_PRELOAD_NONE)
+        self.client.add_dir('/apps/pedometerhomewidget', gconf.CLIENT_PRELOAD_RECURSIVE)
         self.notify_id = self.client.notify_add('/apps/pedometerhomewidget', self.gconf_changed)
 
     def add_observer(self, func):
@@ -1158,8 +1162,11 @@ class Config(Singleton):
         self.notify()
 
     def notify(self):
+        t1 = time.time()
         for func in self.observers:
             func()
+        t2 = time.time()
+        logger.info("Update took: %f seconds" % (t2-t1))
 
     def get_mode(self):
         return self.client.get_int(MODE)