gint remaining;
guint page;
guint pages;
- guint running;
+ guint timeout;
+ gboolean running;
};
#define EV_PRESENTATION_TIMER_GET_PRIVATE(object) \
cairo_stroke (cr);
if(ev_timer->priv->running && ev_timer->priv->time > 0 && ev_timer->priv->remaining > 0)
{
- gdouble progress = ev_presentation_timer_progress (ev_timer->priv->time, ev_timer->priv->remaining)*(allocation.width);
- cairo_rectangle (cr, allocation.width-progress, 10, (allocation.width-(allocation.width-progress))-10, allocation.height-5);
+ gdouble progress = ev_presentation_timer_progress (ev_timer->priv->time,
+ ev_timer->priv->remaining)*(allocation.width);
+ cairo_rectangle (cr, allocation.width-progress,
+ 10,
+ (allocation.width-(allocation.width-progress))-10,
+ allocation.height-5);
cairo_stroke_preserve (cr);
cairo_fill(cr);
}
ev_timer->priv->pages = 0;
ev_timer->priv->remaining = 0;
ev_timer->priv->time = 0;
+ ev_timer->priv->timeout = 0;
ev_timer->priv->running = FALSE;
}
{
ev_timer->priv->remaining = (ev_timer->priv->time)*60;
ev_timer->priv->running = TRUE;
- g_timeout_add_seconds (1, timeout_cb, ev_timer);
+ ev_timer->priv->timeout = g_timeout_add_seconds (1, timeout_cb, ev_timer);
}
}
ev_timer->priv->time = (time < -1)? -1:time;
}
+static void
+ev_presentation_timer_dispose (GObject *gobject)
+{
+ EvPresentationTimer *ev_timer = EV_PRESENTATION_TIMER (gobject);
+ EvPresentationTimerPrivate *priv = EV_PRESENTATION_TIMER (ev_timer)->priv;
+ if (priv->timeout > 0)
+ g_source_remove (priv->timeout);
+ G_OBJECT_CLASS (ev_presentation_timer_parent_class)->dispose (gobject);
+}
+
static void
ev_presentation_timer_class_init (EvPresentationTimerClass *klass)
{
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
g_type_class_add_private (object_class, sizeof (EvPresentationTimerPrivate));
widget_class->draw = ev_presentation_timer_draw;
- /*object_class->finalize = ev_presentation_timer_finalize;*/
+ object_class->dispose = ev_presentation_timer_dispose;
}
GtkWidget *