[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