X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=evince.git;a=blobdiff_plain;f=shell%2Fev-presentation-timer.c;fp=shell%2Fev-presentation-timer.c;h=d1b3474d46ada8002edb65a1f874725239cec39a;hp=12c7d1be380e14a4629c7d4a8ef89f67398d8318;hb=054abf70e4d37877fa12d442af5abc4e8170b046;hpb=5115e6d8b79f845c27c52e02c2a0d84a67a35797 diff --git a/shell/ev-presentation-timer.c b/shell/ev-presentation-timer.c index 12c7d1be..d1b3474d 100644 --- a/shell/ev-presentation-timer.c +++ b/shell/ev-presentation-timer.c @@ -37,6 +37,7 @@ struct _EvPresentationTimerPrivate gint remaining; guint page; guint pages; + guint timeout; gboolean running; }; @@ -117,6 +118,7 @@ ev_presentation_timer_init (EvPresentationTimer *ev_timer) 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; } @@ -127,7 +129,7 @@ ev_presentation_timer_start (EvPresentationTimer *ev_timer) { 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); } } @@ -147,6 +149,16 @@ ev_presentation_timer_set_time (EvPresentationTimer *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) { @@ -154,7 +166,7 @@ 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 *