[Swfdec-commits] 2 commits - swfdec/swfdec_player.c test/trace
Benjamin Otte
company at kemper.freedesktop.org
Mon Jan 28 09:54:54 PST 2008
swfdec/swfdec_player.c | 53 ++++++++++++++++++------------
test/trace/Makefile.am | 3 +
test/trace/crash-0.5.5-cvs-truncated2.swf |binary
test/trace/crash-0.5.5-cvs-truncated2.xml | 10 +++++
4 files changed, 46 insertions(+), 20 deletions(-)
New commits:
commit ed5bda4b98533b4af3fe5176a6955b0cc5eee8ff
Author: Benjamin Otte <otte at gnome.org>
Date: Mon Jan 28 18:54:32 2008 +0100
add another test for truncated files
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index b052f14..3d4ccb2 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -644,6 +644,9 @@ EXTRA_DIST = \
crash-0.5.5-cvs-truncated.swf \
crash-0.5.5-cvs-truncated.swf.trace \
crash-0.5.5-cvs-truncated.xml \
+ crash-0.5.5-cvs-truncated2.swf \
+ crash-0.5.5-cvs-truncated2.swf.trace \
+ crash-0.5.5-cvs-truncated2.xml \
currentframe.swf \
currentframe.swf.trace \
dangling-compare.as \
diff --git a/test/trace/crash-0.5.5-cvs-truncated2.swf b/test/trace/crash-0.5.5-cvs-truncated2.swf
new file mode 100644
index 0000000..802eea7
Binary files /dev/null and b/test/trace/crash-0.5.5-cvs-truncated2.swf differ
diff --git a/test/trace/crash-0.5.5-cvs-truncated2.swf.trace b/test/trace/crash-0.5.5-cvs-truncated2.swf.trace
new file mode 100644
index 0000000..e69de29
diff --git a/test/trace/crash-0.5.5-cvs-truncated2.xml b/test/trace/crash-0.5.5-cvs-truncated2.xml
new file mode 100644
index 0000000..88ad4ee
--- /dev/null
+++ b/test/trace/crash-0.5.5-cvs-truncated2.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<swf version="6" compressed="0">
+ <Header framerate="12" frames="1119">
+ <size>
+ <Rectangle left="0" right="4000" top="0" bottom="3000"/>
+ </size>
+ <tags>
+ </tags>
+ </Header>
+</swf>
commit bed9a34c6d6570eb1e5bfa57a33bc6c4a178957a
Author: Benjamin Otte <otte at gnome.org>
Date: Mon Jan 28 18:53:44 2008 +0100
don't mess up trying to get rid of the timeout
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index 21560a4..33a4ea8 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -892,6 +892,20 @@ swfdec_player_set_property (GObject *object, guint param_id, const GValue *value
}
static void
+swfdec_player_stop_ticking (SwfdecPlayer *player)
+{
+ SwfdecPlayerPrivate *priv;
+
+ g_return_if_fail (SWFDEC_IS_PLAYER (player));
+
+ priv = player->priv;
+ if (priv->iterate_timeout.callback == NULL)
+ return;
+ swfdec_player_remove_timeout (player, &priv->iterate_timeout);
+ priv->iterate_timeout.callback = NULL;
+}
+
+static void
swfdec_player_dispose (GObject *object)
{
SwfdecPlayer *player = SWFDEC_PLAYER (object);
@@ -943,9 +957,7 @@ swfdec_player_dispose (GObject *object)
g_slist_free (priv->sandboxes);
if (priv->external_timeout.callback)
swfdec_player_remove_timeout (player, &priv->external_timeout);
- if (priv->rate) {
- swfdec_player_remove_timeout (player, &priv->iterate_timeout);
- }
+ swfdec_player_stop_ticking (player);
g_assert (priv->timeouts == NULL);
g_list_free (priv->intervals);
priv->intervals = NULL;
@@ -1844,7 +1856,6 @@ swfdec_player_init (SwfdecPlayer *player)
priv->invalidations = g_array_new (FALSE, FALSE, sizeof (SwfdecRectangle));
priv->mouse_visible = TRUE;
priv->mouse_cursor = SWFDEC_MOUSE_CURSOR_NORMAL;
- priv->iterate_timeout.callback = swfdec_player_iterate;
priv->stage_width = -1;
priv->stage_height = -1;
}
@@ -2025,6 +2036,23 @@ swfdec_player_launch (SwfdecPlayer *player, SwfdecLoaderRequest request, const c
g_signal_emit (player, signals[LAUNCH], 0, (int) request, url, target, data);
}
+void
+swfdec_player_start_ticking (SwfdecPlayer *player)
+{
+ SwfdecPlayerPrivate *priv;
+
+ g_return_if_fail (SWFDEC_IS_PLAYER (player));
+ g_return_if_fail (player->priv->initialized);
+ g_return_if_fail (player->priv->iterate_timeout.callback == NULL);
+
+ priv = player->priv;
+ priv->iterate_timeout.callback = swfdec_player_iterate;
+ priv->iterate_timeout.timestamp = priv->time + SWFDEC_TICKS_PER_SECOND * 256 / priv->rate / 10;
+ swfdec_player_add_timeout (player, &priv->iterate_timeout);
+ SWFDEC_LOG ("initialized iterate timeout %p to %"G_GUINT64_FORMAT" (now %"G_GUINT64_FORMAT")",
+ &priv->iterate_timeout, priv->iterate_timeout.timestamp, priv->time);
+}
+
/**
* swfdec_player_initialize:
* @player: a #SwfdecPlayer
@@ -2050,7 +2078,7 @@ swfdec_player_initialize (SwfdecPlayer *player, guint rate, guint width, guint h
g_object_notify (G_OBJECT (player), "initialized");
} else {
/* FIXME: need to kick all other movies out here */
- swfdec_player_remove_timeout (player, &priv->iterate_timeout);
+ swfdec_player_stop_ticking (player);
}
SWFDEC_INFO ("initializing player to size %ux%u and rate %u/256", width, height, rate);
@@ -2071,21 +2099,6 @@ swfdec_player_initialize (SwfdecPlayer *player, guint rate, guint width, guint h
swfdec_player_update_scale (player);
}
-void
-swfdec_player_start_ticking (SwfdecPlayer *player)
-{
- SwfdecPlayerPrivate *priv;
-
- g_return_if_fail (SWFDEC_IS_PLAYER (player));
- g_return_if_fail (player->priv->initialized);
-
- priv = player->priv;
- priv->iterate_timeout.timestamp = priv->time + SWFDEC_TICKS_PER_SECOND * 256 / priv->rate / 10;
- swfdec_player_add_timeout (player, &priv->iterate_timeout);
- SWFDEC_LOG ("initialized iterate timeout %p to %"G_GUINT64_FORMAT" (now %"G_GUINT64_FORMAT")",
- &priv->iterate_timeout, priv->iterate_timeout.timestamp, priv->time);
-}
-
/**
* swfdec_player_get_export_class:
* @player: a #SwfdecPlayer
More information about the Swfdec-commits
mailing list