static timeout* clock_timeout=0;
-void update_clocks(void* arg)
+void update_clocks_sec(void* arg)
{
gettimeofday(&time_clock, 0);
int i;
panel_refresh = 1;
}
+void update_clocks_min(void* arg)
+{
+ // remember old_sec because after suspend/hibernate the clock should be updated directly, and not
+ // on next minute change
+ time_t old_sec = time_clock.tv_sec;
+ gettimeofday(&time_clock, 0);
+ if (time_clock.tv_sec % 60 == 0 || time_clock.tv_sec - old_sec > 60) {
+ int i;
+ if (time1_format) {
+ for (i=0 ; i < nb_panel ; i++)
+ panel1[i].clock.area.resize = 1;
+ }
+ panel_refresh = 1;
+ }
+}
+
struct tm* clock_gettime_for_tz(const char* timezone) {
if (timezone) {
const char* old_tz = getenv("TZ");
{
if(time1_format && clock_timeout==0) {
if (strchr(time1_format, 'S') || strchr(time1_format, 'T') || strchr(time1_format, 'r'))
- clock_timeout = add_timeout(10, 1000, update_clocks, 0);
+ clock_timeout = add_timeout(10, 1000, update_clocks_sec, 0);
else
- clock_timeout = add_timeout(10, 60000, update_clocks, 0);
+ clock_timeout = add_timeout(10, 1000, update_clocks_min, 0);
}
}
new_width += (2*clock->area.paddingxlr) + (2*clock->area.bg->border.width);
Panel *panel = ((Area*)obj)->panel;
- clock->area.posx = panel->area.width - clock->area.width - panel->area.paddingxlr - panel->area.bg->border.width;
-
if (new_width > clock->area.width || new_width < (clock->area.width-6)) {
// resize clock
// we try to limit the number of resize
systray.area.resize = 1;
panel_refresh = 1;
}
+ clock->area.posx = panel->area.width - clock->area.width - panel->area.paddingxlr - panel->area.bg->border.width;
+
g_object_unref (layout);
cairo_destroy (c);