Enlightenment CVS committal

Author  : devilhorns
Project : e_modules
Module  : tclock

Dir     : e_modules/tclock


Modified Files:
        e_mod_config.c e_mod_main.c 


Log Message:
Fix tclock to only use one timer for all instances, always polling at one
second intervals.

===================================================================
RCS file: /cvs/e/e_modules/tclock/e_mod_config.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- e_mod_config.c      17 Sep 2006 16:46:53 -0000      1.27
+++ e_mod_config.c      10 Oct 2006 17:33:48 -0000      1.28
@@ -3,7 +3,6 @@
 
 struct _E_Config_Dialog_Data
 {
-  int resolution;
   int show_date;
   int show_time;
   char *time_format;
@@ -45,7 +44,6 @@
 static void
 _fill_data (Config_Item * ci, E_Config_Dialog_Data * cfdata)
 {
-  cfdata->resolution = ci->resolution;
   cfdata->show_time = ci->show_time;
   cfdata->show_date = ci->show_date;
   cfdata->time_format = strdup (ci->time_format);
@@ -85,14 +83,6 @@
 
   o = e_widget_list_add (evas, 0, 0);
 
-  of = e_widget_framelist_add (evas, D_ ("Resolution"), 0);
-  rg = e_widget_radio_group_new (&(cfdata->resolution));
-  ob = e_widget_radio_add (evas, D_ ("1 Minute"), RESOLUTION_MINUTE, rg);
-  e_widget_framelist_object_append (of, ob);
-  ob = e_widget_radio_add (evas, D_ ("1 Second"), RESOLUTION_SECOND, rg);
-  e_widget_framelist_object_append (of, ob);
-  e_widget_list_object_append (o, of, 1, 1, 0.5);
-
   of = e_widget_frametable_add (evas, D_ ("Date"), 1);
   date_check =
     e_widget_check_add (evas, D_ ("Show Date"), &(cfdata->show_date));
@@ -142,15 +132,6 @@
   if (ci->date_format)
     evas_stringshare_del (ci->date_format);
   ci->date_format = evas_stringshare_add (cfdata->date_format);
-  ci->resolution = cfdata->resolution;
-  if (cfdata->resolution == RESOLUTION_MINUTE)
-    ci->poll_time = 60.0;
-  else
-    ci->poll_time = 1.0;
-
-  /* If we're not showing time, no reason to update every second */
-  if (!cfdata->show_time)
-    ci->poll_time = 60.0;
 
   e_config_save_queue ();
 
===================================================================
RCS file: /cvs/e/e_modules/tclock/e_mod_main.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -3 -r1.42 -r1.43
--- e_mod_main.c        17 Sep 2006 16:46:53 -0000      1.42
+++ e_mod_main.c        10 Oct 2006 17:33:48 -0000      1.43
@@ -12,24 +12,22 @@
 #endif
 
 /* Func Proto Requirements for Gadcon */
-static E_Gadcon_Client *_gc_init (E_Gadcon * gc, const char *name,
-                                 const char *id, const char *style);
-static void _gc_shutdown (E_Gadcon_Client * gcc);
-static void _gc_orient (E_Gadcon_Client * gcc);
-static char *_gc_label (void);
-static Evas_Object *_gc_icon (Evas * evas);
+static E_Gadcon_Client *_gc_init     (E_Gadcon *gc, const char *name, const 
char *id, const char *style);
+static void             _gc_shutdown (E_Gadcon_Client *gcc);
+static void             _gc_orient   (E_Gadcon_Client *gcc);
+static char            *_gc_label    (void);
+static Evas_Object     *_gc_icon     (Evas *evas);
 
 /* Module Protos */
-static void _tclock_cb_mouse_down (void *data, Evas * e, Evas_Object * obj,
-                                  void *event_info);
-static void _tclock_menu_cb_configure (void *data, E_Menu * m,
-                                      E_Menu_Item * mi);
-static void _tclock_menu_cb_post (void *data, E_Menu * m);
-static int _tclock_cb_check (void *data);
-static Config_Item *_tclock_config_item_get (const char *id);
+static void         _tclock_cb_mouse_down     (void *data, Evas *e, 
Evas_Object *obj, void *event_info);
+static void         _tclock_menu_cb_configure (void *data, E_Menu *m, 
E_Menu_Item *mi);
+static void         _tclock_menu_cb_post      (void *data, E_Menu *m);
+static int          _tclock_cb_check          (void *data);
+static Config_Item *_tclock_config_item_get   (const char *id);
 
 static E_Config_DD *conf_edd = NULL;
 static E_Config_DD *conf_item_edd = NULL;
+static Ecore_Timer *check_timer;
 
 Config *tclock_config = NULL;
 
@@ -45,7 +43,6 @@
 {
   E_Gadcon_Client *gcc;
   Evas_Object *tclock;
-  Ecore_Timer *check_timer;
 };
 
 static E_Gadcon_Client *
@@ -83,7 +80,8 @@
     evas_list_append (tclock_config->instances, inst);
 
   _tclock_cb_check (inst);
-  inst->check_timer = ecore_timer_add (ci->poll_time, _tclock_cb_check, inst);
+   if (!check_timer)
+     check_timer = ecore_timer_add (1.0, _tclock_cb_check, NULL);
   return gcc;
 }
 
@@ -93,15 +91,21 @@
   Instance *inst;
 
   inst = gcc->data;
-  if (inst->check_timer)
-    ecore_timer_del (inst->check_timer);
-  tclock_config->instances =
-    evas_list_remove (tclock_config->instances, inst);
-
+     
   evas_object_event_callback_del (inst->tclock, EVAS_CALLBACK_MOUSE_DOWN,
                                  _tclock_cb_mouse_down);
 
   evas_object_del (inst->tclock);
+
+   tclock_config->instances =
+    evas_list_remove (tclock_config->instances, inst);
+
+   if (evas_list_count(tclock_config->instances) <= 0) 
+     { 
+       ecore_timer_del (check_timer);
+       check_timer = NULL;
+     }
+   
   free (inst);
   inst = NULL;
 }
@@ -227,14 +231,6 @@
 
          _tclock_cb_check (inst);
 
-         if (inst->check_timer)
-           ecore_timer_interval_set (inst->check_timer,
-                                     (double) ci->poll_time);
-         else
-           inst->check_timer =
-             ecore_timer_add ((double) ci->poll_time, _tclock_cb_check,
-                              inst);
-
          break;
        }
     }
@@ -243,36 +239,40 @@
 static int
 _tclock_cb_check (void *data)
 {
-  Instance *inst;
-  Config_Item *ci;
-  time_t current_time;
-  struct tm *local_time;
-  char buf[1024];
-
-  inst = data;
-  ci = _tclock_config_item_get (inst->gcc->id);
-
-  if (!ci->show_time)
-    edje_object_signal_emit (inst->tclock, "time_hidden", "");
-  else
-    edje_object_signal_emit (inst->tclock, "time_visible", "");
-  edje_object_message_signal_process (inst->tclock);
-
-  if (!ci->show_date)
-    edje_object_signal_emit (inst->tclock, "date_hidden", "");
-  else
-    edje_object_signal_emit (inst->tclock, "date_visible", "");
-  edje_object_message_signal_process (inst->tclock);
-
-  memset (buf, 0, sizeof (buf));
-  current_time = time (NULL);
-  local_time = localtime (&current_time);
-
-  strftime (buf, 1024, ci->time_format, local_time);
-  edje_object_part_text_set (inst->tclock, "tclock_time", buf);
-  strftime (buf, 1024, ci->date_format, local_time);
-  edje_object_part_text_set (inst->tclock, "tclock_date", buf);
-
+   Instance *inst;
+   Config_Item *ci;
+   Evas_List *l;
+   time_t current_time;
+   struct tm *local_time;
+   char buf[1024];
+
+   for (l = tclock_config->instances; l; l = l->next) 
+     {
+       inst = l->data;
+       ci = _tclock_config_item_get (inst->gcc->id);
+
+       if (!ci->show_time)
+         edje_object_signal_emit (inst->tclock, "time_hidden", "");
+       else
+         edje_object_signal_emit (inst->tclock, "time_visible", "");
+       edje_object_message_signal_process (inst->tclock);
+       
+       if (!ci->show_date)
+         edje_object_signal_emit (inst->tclock, "date_hidden", "");
+       else
+         edje_object_signal_emit (inst->tclock, "date_visible", "");
+       edje_object_message_signal_process (inst->tclock);
+       
+       memset (buf, 0, sizeof (buf));
+       current_time = time (NULL);
+       local_time = localtime (&current_time);
+       
+       strftime (buf, 1024, ci->time_format, local_time);
+       edje_object_part_text_set (inst->tclock, "tclock_time", buf);
+       strftime (buf, 1024, ci->date_format, local_time);
+       edje_object_part_text_set (inst->tclock, "tclock_date", buf);
+     }
+   
   return 1;
 }
 
@@ -293,8 +293,6 @@
 
   ci = E_NEW (Config_Item, 1);
   ci->id = evas_stringshare_add (id);
-  ci->poll_time = 1.0;
-  ci->resolution = RESOLUTION_SECOND;
   ci->show_date = 1;
   ci->show_time = 1;
   ci->time_format = evas_stringshare_add ("%T");
@@ -321,8 +319,6 @@
 #define T Config_Item
 #define D conf_item_edd
   E_CONFIG_VAL (D, T, id, STR);
-  E_CONFIG_VAL (D, T, poll_time, DOUBLE);
-  E_CONFIG_VAL (D, T, resolution, INT);
   E_CONFIG_VAL (D, T, show_date, INT);
   E_CONFIG_VAL (D, T, show_time, INT);
   E_CONFIG_VAL (D, T, date_format, STR);
@@ -344,8 +340,6 @@
 
       ci = E_NEW (Config_Item, 1);
       ci->id = evas_stringshare_add ("0");
-      ci->poll_time = 1.0;
-      ci->resolution = RESOLUTION_SECOND;
       ci->show_date = 1;
       ci->show_time = 1;
       ci->time_format = evas_stringshare_add ("%T");



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to