summaryrefslogtreecommitdiff
path: root/gdk/gdkframeclockidle.c
diff options
context:
space:
mode:
authorOwen W. Taylor <otaylor@fishsoup.net>2013-02-15 22:21:21 -0500
committerOwen W. Taylor <otaylor@fishsoup.net>2013-02-15 22:28:52 -0500
commitd203f636417f2ef3c84bf022bea8d2eb5d6804e1 (patch)
treefb1ad0dd379327e0ab5af937d79e543254808903 /gdk/gdkframeclockidle.c
parentecddf94f4324b9e9ef961771e7cbb5ff56661997 (diff)
downloadgtk+-d203f636417f2ef3c84bf022bea8d2eb5d6804e1.tar.gz
GdkFrameClockIdle: remove timeouts in dispose
When a frame clock is disposed, remove active timeouts; also get rid of the last traces of an unused GTimer.
Diffstat (limited to 'gdk/gdkframeclockidle.c')
-rw-r--r--gdk/gdkframeclockidle.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/gdk/gdkframeclockidle.c b/gdk/gdkframeclockidle.c
index 752e72c13f..d07c1d80bb 100644
--- a/gdk/gdkframeclockidle.c
+++ b/gdk/gdkframeclockidle.c
@@ -55,8 +55,6 @@ struct _GdkFrameClockIdlePrivate
static gboolean gdk_frame_clock_flush_idle (void *data);
static gboolean gdk_frame_clock_paint_idle (void *data);
-static void gdk_frame_clock_idle_finalize (GObject *object);
-
G_DEFINE_TYPE (GdkFrameClockIdle, gdk_frame_clock_idle, GDK_TYPE_FRAME_CLOCK)
static gint64 sleep_serial;
@@ -121,18 +119,27 @@ gdk_frame_clock_idle_init (GdkFrameClockIdle *frame_clock_idle)
GdkFrameClockIdlePrivate);
priv = frame_clock_idle->priv;
- priv->timer = g_timer_new ();
priv->freeze_count = 0;
}
static void
-gdk_frame_clock_idle_finalize (GObject *object)
+gdk_frame_clock_idle_dispose (GObject *object)
{
GdkFrameClockIdlePrivate *priv = GDK_FRAME_CLOCK_IDLE (object)->priv;
- g_timer_destroy (priv->timer);
+ if (priv->flush_idle_id != 0)
+ {
+ g_source_remove (priv->flush_idle_id);
+ priv->flush_idle_id = 0;
+ }
+
+ if (priv->paint_idle_id != 0)
+ {
+ g_source_remove (priv->paint_idle_id);
+ priv->paint_idle_id = 0;
+ }
- G_OBJECT_CLASS (gdk_frame_clock_idle_parent_class)->finalize (object);
+ G_OBJECT_CLASS (gdk_frame_clock_idle_parent_class)->dispose (object);
}
static gint64
@@ -478,7 +485,7 @@ gdk_frame_clock_idle_class_init (GdkFrameClockIdleClass *klass)
GObjectClass *gobject_class = (GObjectClass*) klass;
GdkFrameClockClass *frame_clock_class = (GdkFrameClockClass *)klass;
- gobject_class->finalize = gdk_frame_clock_idle_finalize;
+ gobject_class->dispose = gdk_frame_clock_idle_dispose;
frame_clock_class->get_frame_time = gdk_frame_clock_idle_get_frame_time;
frame_clock_class->request_phase = gdk_frame_clock_idle_request_phase;