[Swfdec] 23 commits - doc/.gitignore doc/Makefile.am doc/swfdec-docs.sgml doc/swfdec-sections.txt libswfdec-gtk/swfdec-gtk.h libswfdec-gtk/swfdec_gtk_keys.c libswfdec-gtk/swfdec_gtk_keys.h libswfdec-gtk/swfdec_gtk_widget.c libswfdec/Makefile.am libswfdec/swfdec_as_debugger.c libswfdec/swfdec_as_debugger.h libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_string.c libswfdec/swfdec_as_strings.c libswfdec/swfdec_audio_flv.c libswfdec/swfdec_codec_ffmpeg.c libswfdec/swfdec_initialize.as libswfdec/swfdec_initialize.h libswfdec/swfdec_load_object_as.h libswfdec/swfdec_movie_asprops.c libswfdec/swfdec_player.c libswfdec/swfdec_script.c libswfdec/swfdec_xml_as.c libswfdec/swfdec_xml_as.h libswfdec/swfdec_xml.c libswfdec/swfdec_xml.h test/trace vivified/core

Benjamin Otte company at kemper.freedesktop.org
Thu Aug 23 14:44:27 PDT 2007


 doc/.gitignore                            |    1 
 doc/Makefile.am                           |    3 
 doc/swfdec-docs.sgml                      |    1 
 doc/swfdec-sections.txt                   |   22 +
 libswfdec-gtk/swfdec-gtk.h                |    1 
 libswfdec-gtk/swfdec_gtk_keys.c           |   12 -
 libswfdec-gtk/swfdec_gtk_keys.h           |    2 
 libswfdec-gtk/swfdec_gtk_widget.c         |    2 
 libswfdec/Makefile.am                     |    5 
 libswfdec/swfdec_as_debugger.c            |   26 +-
 libswfdec/swfdec_as_debugger.h            |    6 
 libswfdec/swfdec_as_frame.c               |    8 
 libswfdec/swfdec_as_object.c              |    4 
 libswfdec/swfdec_as_string.c              |   29 ++
 libswfdec/swfdec_as_strings.c             |    1 
 libswfdec/swfdec_audio_flv.c              |    2 
 libswfdec/swfdec_codec_ffmpeg.c           |    4 
 libswfdec/swfdec_initialize.as            |    4 
 libswfdec/swfdec_initialize.h             |  192 ++++++++--------
 libswfdec/swfdec_load_object_as.h         |   31 --
 libswfdec/swfdec_movie_asprops.c          |   11 
 libswfdec/swfdec_player.c                 |    6 
 libswfdec/swfdec_script.c                 |    8 
 libswfdec/swfdec_xml.c                    |    5 
 test/trace/Makefile.am                    |    9 
 test/trace/string-lastIndexOf-5.swf       |binary
 test/trace/string-lastIndexOf-5.swf.trace |  342 ++++++++++++++++++++++++++++++
 test/trace/string-lastIndexOf-6.swf       |binary
 test/trace/string-lastIndexOf-6.swf.trace |  342 ++++++++++++++++++++++++++++++
 test/trace/string-lastIndexOf-7.swf       |binary
 test/trace/string-lastIndexOf-7.swf.trace |  342 ++++++++++++++++++++++++++++++
 test/trace/string-lastIndexOf-8.swf       |binary
 test/trace/string-lastIndexOf-8.swf.trace |  342 ++++++++++++++++++++++++++++++
 test/trace/string-lastIndexOf.as          |   13 +
 test/trace/trace.c                        |    7 
 vivified/core/vivi_breakpoint.c           |   12 -
 vivified/core/vivi_debugger.c             |   20 -
 vivified/core/vivi_initialize.as          |    2 
 38 files changed, 1643 insertions(+), 174 deletions(-)

New commits:
diff-tree c1ba428ced0fd3f2965ee00d69b2ad5c6f95201c (from eb8ef9c1569fe84f111a524d032d97446a30b96c)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 23:44:14 2007 +0200

    handle the case where a decoder couldn't be created due to errors

diff --git a/libswfdec/swfdec_audio_flv.c b/libswfdec/swfdec_audio_flv.c
index bdca2c2..3be7d81 100644
--- a/libswfdec/swfdec_audio_flv.c
+++ b/libswfdec/swfdec_audio_flv.c
@@ -102,6 +102,8 @@ swfdec_audio_flv_decode_one (SwfdecAudio
 	in != flv->in) {
       SWFDEC_ERROR ("FIXME: format change not implemented");
       return NULL;
+    } else if (flv->decoder == NULL) {
+      return NULL;
     }
     swfdec_audio_decoder_push (flv->decoder, buffer);
     if (flv->next_timestamp == 0)
diff-tree eb8ef9c1569fe84f111a524d032d97446a30b96c (from d4d5dde0824487576861912640d9bdd0d0565af7)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 23:35:11 2007 +0200

    abort if we don't get a new image

diff --git a/libswfdec/swfdec_codec_ffmpeg.c b/libswfdec/swfdec_codec_ffmpeg.c
index 3f9e387..9fae7cf 100644
--- a/libswfdec/swfdec_codec_ffmpeg.c
+++ b/libswfdec/swfdec_codec_ffmpeg.c
@@ -224,6 +224,10 @@ swfdec_video_decoder_ffmpeg_decode (Swfd
     SWFDEC_WARNING ("error decoding frame");
     return NULL;
   }
+  if (got_image == 0) {
+    SWFDEC_WARNING ("error: did not get an image from decoding");
+    return NULL;
+  }
   if (codec->sws == NULL) {
     codec->sws = sws_getContext (codec->ctx->width, codec->ctx->height, codec->ctx->pix_fmt,
 	codec->ctx->width, codec->ctx->height, PIX_FMT_RGB32, 0, NULL, NULL, NULL);
diff-tree d4d5dde0824487576861912640d9bdd0d0565af7 (from 72794f6dd88161fe9e36b11b5e6d3cd9cf86099f)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 21:56:29 2007 +0200

    end when there's no time left

diff --git a/test/trace/trace.c b/test/trace/trace.c
index 5f2bc8d..03d57cc 100644
--- a/test/trace/trace.c
+++ b/test/trace/trace.c
@@ -140,9 +140,12 @@ run_test (gpointer testp, gpointer unuse
     if (advance > time_left)
       break;
     swfdec_player_advance (player, advance);
-    if (inter)
-      swfdec_interaction_advance (inter, player, advance);
     time_left -= advance;
+    if (inter) {
+      swfdec_interaction_advance (inter, player, advance);
+      if (time_left == 0)
+	break;
+    }
   }
   g_signal_handlers_disconnect_by_func (player, trace_cb, string);
   g_object_unref (player);
diff-tree 72794f6dd88161fe9e36b11b5e6d3cd9cf86099f (from 54739135d48fe769f52512d64f211de3cdd2c138)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 20:19:30 2007 +0200

    implement _url

diff --git a/libswfdec/swfdec_movie_asprops.c b/libswfdec/swfdec_movie_asprops.c
index e1887ec..3a44559 100644
--- a/libswfdec/swfdec_movie_asprops.c
+++ b/libswfdec/swfdec_movie_asprops.c
@@ -32,6 +32,7 @@
 #include "swfdec_player_internal.h"
 #include "swfdec_sprite.h"
 #include "swfdec_sprite_movie.h"
+#include "swfdec_swf_instance.h"
 
 static void
 mc_x_get (SwfdecMovie *movie, SwfdecAsValue *rval)
@@ -355,6 +356,14 @@ mc_root (SwfdecMovie *movie, SwfdecAsVal
   SWFDEC_AS_VALUE_SET_OBJECT (rval, SWFDEC_AS_OBJECT (movie));
 }
 
+static void
+mc_url_get (SwfdecMovie *movie, SwfdecAsValue *rval)
+{
+  SWFDEC_AS_VALUE_SET_STRING (rval, swfdec_as_context_get_string (
+	SWFDEC_AS_OBJECT (movie)->context,
+	swfdec_url_get_url (swfdec_loader_get_url (movie->swf->loader))));
+}
+
 struct {
   gboolean needs_movie;
   const char *name;
@@ -376,7 +385,7 @@ struct {
   { 1, SWFDEC_AS_STR__framesloaded,mc_framesloaded,    NULL},
   { 0, SWFDEC_AS_STR__name,	mc_name_get,	    mc_name_set },
   { 1, SWFDEC_AS_STR__droptarget,	NULL,  NULL }, //"_droptarget"
-  { 0, SWFDEC_AS_STR__url,		NULL,  NULL }, //"_url"
+  { 0, SWFDEC_AS_STR__url,	mc_url_get,  NULL },
   { 0, SWFDEC_AS_STR__highquality,	NULL,  NULL }, //"_highquality"
   { 0, SWFDEC_AS_STR__focusrect,	NULL,  NULL }, //"_focusrect"
   { 0, SWFDEC_AS_STR__soundbuftime,NULL,  NULL }, //"_soundbuftime"
diff-tree 54739135d48fe769f52512d64f211de3cdd2c138 (from ef88186bc8874a97c155d0b2cbabe772021f8d6e)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 19:25:00 2007 +0200

    add test for lastIndexOf

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 4f5f501..8bc9273 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -1065,6 +1065,15 @@ EXTRA_DIST = \
 	string-indexof-6.swf.trace \
 	string-indexof-7.swf \
 	string-indexof-7.swf.trace \
+	string-lastIndexOf.as \
+	string-lastIndexOf-5.swf \
+	string-lastIndexOf-5.swf.trace \
+	string-lastIndexOf-6.swf \
+	string-lastIndexOf-6.swf.trace \
+	string-lastIndexOf-7.swf \
+	string-lastIndexOf-7.swf.trace \
+	string-lastIndexOf-8.swf \
+	string-lastIndexOf-8.swf.trace \
 	string-split.as \
 	string-split-5.swf \
 	string-split-5.swf.trace \
diff --git a/test/trace/string-lastIndexOf-5.swf b/test/trace/string-lastIndexOf-5.swf
new file mode 100644
index 0000000..a73460c
Binary files /dev/null and b/test/trace/string-lastIndexOf-5.swf differ
diff --git a/test/trace/string-lastIndexOf-5.swf.trace b/test/trace/string-lastIndexOf-5.swf.trace
new file mode 100644
index 0000000..e374473
--- /dev/null
+++ b/test/trace/string-lastIndexOf-5.swf.trace
@@ -0,0 +1,342 @@
+test String.lastIndexOf
+s.lastIndexOf ("H") = 0
+s.lastIndexOf ("H", -15) = -1
+s.lastIndexOf ("H", -14) = -1
+s.lastIndexOf ("H", -13) = -1
+s.lastIndexOf ("H", -12) = -1
+s.lastIndexOf ("H", -11) = -1
+s.lastIndexOf ("H", -10) = -1
+s.lastIndexOf ("H", -9) = -1
+s.lastIndexOf ("H", -8) = -1
+s.lastIndexOf ("H", -7) = -1
+s.lastIndexOf ("H", -6) = -1
+s.lastIndexOf ("H", -5) = -1
+s.lastIndexOf ("H", -4) = -1
+s.lastIndexOf ("H", -3) = -1
+s.lastIndexOf ("H", -2) = -1
+s.lastIndexOf ("H", -1) = -1
+s.lastIndexOf ("H", 0) = 0
+s.lastIndexOf ("H", 1) = 0
+s.lastIndexOf ("H", 2) = 0
+s.lastIndexOf ("H", 3) = 0
+s.lastIndexOf ("H", 4) = 0
+s.lastIndexOf ("H", 5) = 0
+s.lastIndexOf ("H", 6) = 0
+s.lastIndexOf ("H", 7) = 0
+s.lastIndexOf ("H", 8) = 0
+s.lastIndexOf ("H", 9) = 0
+s.lastIndexOf ("H", 10) = 0
+s.lastIndexOf ("H", 11) = 0
+s.lastIndexOf ("H", 12) = 0
+s.lastIndexOf ("H", 13) = 0
+s.lastIndexOf ("H", 14) = 0
+s.lastIndexOf ("e") = 1
+s.lastIndexOf ("e", -15) = -1
+s.lastIndexOf ("e", -14) = -1
+s.lastIndexOf ("e", -13) = -1
+s.lastIndexOf ("e", -12) = -1
+s.lastIndexOf ("e", -11) = -1
+s.lastIndexOf ("e", -10) = -1
+s.lastIndexOf ("e", -9) = -1
+s.lastIndexOf ("e", -8) = -1
+s.lastIndexOf ("e", -7) = -1
+s.lastIndexOf ("e", -6) = -1
+s.lastIndexOf ("e", -5) = -1
+s.lastIndexOf ("e", -4) = -1
+s.lastIndexOf ("e", -3) = -1
+s.lastIndexOf ("e", -2) = -1
+s.lastIndexOf ("e", -1) = -1
+s.lastIndexOf ("e", 0) = -1
+s.lastIndexOf ("e", 1) = 1
+s.lastIndexOf ("e", 2) = 1
+s.lastIndexOf ("e", 3) = 1
+s.lastIndexOf ("e", 4) = 1
+s.lastIndexOf ("e", 5) = 1
+s.lastIndexOf ("e", 6) = 1
+s.lastIndexOf ("e", 7) = 1
+s.lastIndexOf ("e", 8) = 1
+s.lastIndexOf ("e", 9) = 1
+s.lastIndexOf ("e", 10) = 1
+s.lastIndexOf ("e", 11) = 1
+s.lastIndexOf ("e", 12) = 1
+s.lastIndexOf ("e", 13) = 1
+s.lastIndexOf ("e", 14) = 1
+s.lastIndexOf ("l") = 9
+s.lastIndexOf ("l", -15) = -1
+s.lastIndexOf ("l", -14) = -1
+s.lastIndexOf ("l", -13) = -1
+s.lastIndexOf ("l", -12) = -1
+s.lastIndexOf ("l", -11) = -1
+s.lastIndexOf ("l", -10) = -1
+s.lastIndexOf ("l", -9) = -1
+s.lastIndexOf ("l", -8) = -1
+s.lastIndexOf ("l", -7) = -1
+s.lastIndexOf ("l", -6) = -1
+s.lastIndexOf ("l", -5) = -1
+s.lastIndexOf ("l", -4) = -1
+s.lastIndexOf ("l", -3) = -1
+s.lastIndexOf ("l", -2) = -1
+s.lastIndexOf ("l", -1) = -1
+s.lastIndexOf ("l", 0) = -1
+s.lastIndexOf ("l", 1) = -1
+s.lastIndexOf ("l", 2) = 2
+s.lastIndexOf ("l", 3) = 3
+s.lastIndexOf ("l", 4) = 3
+s.lastIndexOf ("l", 5) = 3
+s.lastIndexOf ("l", 6) = 3
+s.lastIndexOf ("l", 7) = 3
+s.lastIndexOf ("l", 8) = 3
+s.lastIndexOf ("l", 9) = 9
+s.lastIndexOf ("l", 10) = 9
+s.lastIndexOf ("l", 11) = 9
+s.lastIndexOf ("l", 12) = 9
+s.lastIndexOf ("l", 13) = 9
+s.lastIndexOf ("l", 14) = 9
+s.lastIndexOf ("l") = 9
+s.lastIndexOf ("l", -15) = -1
+s.lastIndexOf ("l", -14) = -1
+s.lastIndexOf ("l", -13) = -1
+s.lastIndexOf ("l", -12) = -1
+s.lastIndexOf ("l", -11) = -1
+s.lastIndexOf ("l", -10) = -1
+s.lastIndexOf ("l", -9) = -1
+s.lastIndexOf ("l", -8) = -1
+s.lastIndexOf ("l", -7) = -1
+s.lastIndexOf ("l", -6) = -1
+s.lastIndexOf ("l", -5) = -1
+s.lastIndexOf ("l", -4) = -1
+s.lastIndexOf ("l", -3) = -1
+s.lastIndexOf ("l", -2) = -1
+s.lastIndexOf ("l", -1) = -1
+s.lastIndexOf ("l", 0) = -1
+s.lastIndexOf ("l", 1) = -1
+s.lastIndexOf ("l", 2) = 2
+s.lastIndexOf ("l", 3) = 3
+s.lastIndexOf ("l", 4) = 3
+s.lastIndexOf ("l", 5) = 3
+s.lastIndexOf ("l", 6) = 3
+s.lastIndexOf ("l", 7) = 3
+s.lastIndexOf ("l", 8) = 3
+s.lastIndexOf ("l", 9) = 9
+s.lastIndexOf ("l", 10) = 9
+s.lastIndexOf ("l", 11) = 9
+s.lastIndexOf ("l", 12) = 9
+s.lastIndexOf ("l", 13) = 9
+s.lastIndexOf ("l", 14) = 9
+s.lastIndexOf ("o") = 7
+s.lastIndexOf ("o", -15) = -1
+s.lastIndexOf ("o", -14) = -1
+s.lastIndexOf ("o", -13) = -1
+s.lastIndexOf ("o", -12) = -1
+s.lastIndexOf ("o", -11) = -1
+s.lastIndexOf ("o", -10) = -1
+s.lastIndexOf ("o", -9) = -1
+s.lastIndexOf ("o", -8) = -1
+s.lastIndexOf ("o", -7) = -1
+s.lastIndexOf ("o", -6) = -1
+s.lastIndexOf ("o", -5) = -1
+s.lastIndexOf ("o", -4) = -1
+s.lastIndexOf ("o", -3) = -1
+s.lastIndexOf ("o", -2) = -1
+s.lastIndexOf ("o", -1) = -1
+s.lastIndexOf ("o", 0) = -1
+s.lastIndexOf ("o", 1) = -1
+s.lastIndexOf ("o", 2) = -1
+s.lastIndexOf ("o", 3) = -1
+s.lastIndexOf ("o", 4) = 4
+s.lastIndexOf ("o", 5) = 4
+s.lastIndexOf ("o", 6) = 4
+s.lastIndexOf ("o", 7) = 7
+s.lastIndexOf ("o", 8) = 7
+s.lastIndexOf ("o", 9) = 7
+s.lastIndexOf ("o", 10) = 7
+s.lastIndexOf ("o", 11) = 7
+s.lastIndexOf ("o", 12) = 7
+s.lastIndexOf ("o", 13) = 7
+s.lastIndexOf ("o", 14) = 7
+s.lastIndexOf (" ") = 5
+s.lastIndexOf (" ", -15) = -1
+s.lastIndexOf (" ", -14) = -1
+s.lastIndexOf (" ", -13) = -1
+s.lastIndexOf (" ", -12) = -1
+s.lastIndexOf (" ", -11) = -1
+s.lastIndexOf (" ", -10) = -1
+s.lastIndexOf (" ", -9) = -1
+s.lastIndexOf (" ", -8) = -1
+s.lastIndexOf (" ", -7) = -1
+s.lastIndexOf (" ", -6) = -1
+s.lastIndexOf (" ", -5) = -1
+s.lastIndexOf (" ", -4) = -1
+s.lastIndexOf (" ", -3) = -1
+s.lastIndexOf (" ", -2) = -1
+s.lastIndexOf (" ", -1) = -1
+s.lastIndexOf (" ", 0) = -1
+s.lastIndexOf (" ", 1) = -1
+s.lastIndexOf (" ", 2) = -1
+s.lastIndexOf (" ", 3) = -1
+s.lastIndexOf (" ", 4) = -1
+s.lastIndexOf (" ", 5) = 5
+s.lastIndexOf (" ", 6) = 5
+s.lastIndexOf (" ", 7) = 5
+s.lastIndexOf (" ", 8) = 5
+s.lastIndexOf (" ", 9) = 5
+s.lastIndexOf (" ", 10) = 5
+s.lastIndexOf (" ", 11) = 5
+s.lastIndexOf (" ", 12) = 5
+s.lastIndexOf (" ", 13) = 5
+s.lastIndexOf (" ", 14) = 5
+s.lastIndexOf ("W") = 6
+s.lastIndexOf ("W", -15) = -1
+s.lastIndexOf ("W", -14) = -1
+s.lastIndexOf ("W", -13) = -1
+s.lastIndexOf ("W", -12) = -1
+s.lastIndexOf ("W", -11) = -1
+s.lastIndexOf ("W", -10) = -1
+s.lastIndexOf ("W", -9) = -1
+s.lastIndexOf ("W", -8) = -1
+s.lastIndexOf ("W", -7) = -1
+s.lastIndexOf ("W", -6) = -1
+s.lastIndexOf ("W", -5) = -1
+s.lastIndexOf ("W", -4) = -1
+s.lastIndexOf ("W", -3) = -1
+s.lastIndexOf ("W", -2) = -1
+s.lastIndexOf ("W", -1) = -1
+s.lastIndexOf ("W", 0) = -1
+s.lastIndexOf ("W", 1) = -1
+s.lastIndexOf ("W", 2) = -1
+s.lastIndexOf ("W", 3) = -1
+s.lastIndexOf ("W", 4) = -1
+s.lastIndexOf ("W", 5) = -1
+s.lastIndexOf ("W", 6) = 6
+s.lastIndexOf ("W", 7) = 6
+s.lastIndexOf ("W", 8) = 6
+s.lastIndexOf ("W", 9) = 6
+s.lastIndexOf ("W", 10) = 6
+s.lastIndexOf ("W", 11) = 6
+s.lastIndexOf ("W", 12) = 6
+s.lastIndexOf ("W", 13) = 6
+s.lastIndexOf ("W", 14) = 6
+s.lastIndexOf ("o") = 7
+s.lastIndexOf ("o", -15) = -1
+s.lastIndexOf ("o", -14) = -1
+s.lastIndexOf ("o", -13) = -1
+s.lastIndexOf ("o", -12) = -1
+s.lastIndexOf ("o", -11) = -1
+s.lastIndexOf ("o", -10) = -1
+s.lastIndexOf ("o", -9) = -1
+s.lastIndexOf ("o", -8) = -1
+s.lastIndexOf ("o", -7) = -1
+s.lastIndexOf ("o", -6) = -1
+s.lastIndexOf ("o", -5) = -1
+s.lastIndexOf ("o", -4) = -1
+s.lastIndexOf ("o", -3) = -1
+s.lastIndexOf ("o", -2) = -1
+s.lastIndexOf ("o", -1) = -1
+s.lastIndexOf ("o", 0) = -1
+s.lastIndexOf ("o", 1) = -1
+s.lastIndexOf ("o", 2) = -1
+s.lastIndexOf ("o", 3) = -1
+s.lastIndexOf ("o", 4) = 4
+s.lastIndexOf ("o", 5) = 4
+s.lastIndexOf ("o", 6) = 4
+s.lastIndexOf ("o", 7) = 7
+s.lastIndexOf ("o", 8) = 7
+s.lastIndexOf ("o", 9) = 7
+s.lastIndexOf ("o", 10) = 7
+s.lastIndexOf ("o", 11) = 7
+s.lastIndexOf ("o", 12) = 7
+s.lastIndexOf ("o", 13) = 7
+s.lastIndexOf ("o", 14) = 7
+s.lastIndexOf ("r") = 8
+s.lastIndexOf ("r", -15) = -1
+s.lastIndexOf ("r", -14) = -1
+s.lastIndexOf ("r", -13) = -1
+s.lastIndexOf ("r", -12) = -1
+s.lastIndexOf ("r", -11) = -1
+s.lastIndexOf ("r", -10) = -1
+s.lastIndexOf ("r", -9) = -1
+s.lastIndexOf ("r", -8) = -1
+s.lastIndexOf ("r", -7) = -1
+s.lastIndexOf ("r", -6) = -1
+s.lastIndexOf ("r", -5) = -1
+s.lastIndexOf ("r", -4) = -1
+s.lastIndexOf ("r", -3) = -1
+s.lastIndexOf ("r", -2) = -1
+s.lastIndexOf ("r", -1) = -1
+s.lastIndexOf ("r", 0) = -1
+s.lastIndexOf ("r", 1) = -1
+s.lastIndexOf ("r", 2) = -1
+s.lastIndexOf ("r", 3) = -1
+s.lastIndexOf ("r", 4) = -1
+s.lastIndexOf ("r", 5) = -1
+s.lastIndexOf ("r", 6) = -1
+s.lastIndexOf ("r", 7) = -1
+s.lastIndexOf ("r", 8) = 8
+s.lastIndexOf ("r", 9) = 8
+s.lastIndexOf ("r", 10) = 8
+s.lastIndexOf ("r", 11) = 8
+s.lastIndexOf ("r", 12) = 8
+s.lastIndexOf ("r", 13) = 8
+s.lastIndexOf ("r", 14) = 8
+s.lastIndexOf ("l") = 9
+s.lastIndexOf ("l", -15) = -1
+s.lastIndexOf ("l", -14) = -1
+s.lastIndexOf ("l", -13) = -1
+s.lastIndexOf ("l", -12) = -1
+s.lastIndexOf ("l", -11) = -1
+s.lastIndexOf ("l", -10) = -1
+s.lastIndexOf ("l", -9) = -1
+s.lastIndexOf ("l", -8) = -1
+s.lastIndexOf ("l", -7) = -1
+s.lastIndexOf ("l", -6) = -1
+s.lastIndexOf ("l", -5) = -1
+s.lastIndexOf ("l", -4) = -1
+s.lastIndexOf ("l", -3) = -1
+s.lastIndexOf ("l", -2) = -1
+s.lastIndexOf ("l", -1) = -1
+s.lastIndexOf ("l", 0) = -1
+s.lastIndexOf ("l", 1) = -1
+s.lastIndexOf ("l", 2) = 2
+s.lastIndexOf ("l", 3) = 3
+s.lastIndexOf ("l", 4) = 3
+s.lastIndexOf ("l", 5) = 3
+s.lastIndexOf ("l", 6) = 3
+s.lastIndexOf ("l", 7) = 3
+s.lastIndexOf ("l", 8) = 3
+s.lastIndexOf ("l", 9) = 9
+s.lastIndexOf ("l", 10) = 9
+s.lastIndexOf ("l", 11) = 9
+s.lastIndexOf ("l", 12) = 9
+s.lastIndexOf ("l", 13) = 9
+s.lastIndexOf ("l", 14) = 9
+s.lastIndexOf ("d") = 10
+s.lastIndexOf ("d", -15) = -1
+s.lastIndexOf ("d", -14) = -1
+s.lastIndexOf ("d", -13) = -1
+s.lastIndexOf ("d", -12) = -1
+s.lastIndexOf ("d", -11) = -1
+s.lastIndexOf ("d", -10) = -1
+s.lastIndexOf ("d", -9) = -1
+s.lastIndexOf ("d", -8) = -1
+s.lastIndexOf ("d", -7) = -1
+s.lastIndexOf ("d", -6) = -1
+s.lastIndexOf ("d", -5) = -1
+s.lastIndexOf ("d", -4) = -1
+s.lastIndexOf ("d", -3) = -1
+s.lastIndexOf ("d", -2) = -1
+s.lastIndexOf ("d", -1) = -1
+s.lastIndexOf ("d", 0) = -1
+s.lastIndexOf ("d", 1) = -1
+s.lastIndexOf ("d", 2) = -1
+s.lastIndexOf ("d", 3) = -1
+s.lastIndexOf ("d", 4) = -1
+s.lastIndexOf ("d", 5) = -1
+s.lastIndexOf ("d", 6) = -1
+s.lastIndexOf ("d", 7) = -1
+s.lastIndexOf ("d", 8) = -1
+s.lastIndexOf ("d", 9) = -1
+s.lastIndexOf ("d", 10) = 10
+s.lastIndexOf ("d", 11) = 10
+s.lastIndexOf ("d", 12) = 10
+s.lastIndexOf ("d", 13) = 10
+s.lastIndexOf ("d", 14) = 10
diff --git a/test/trace/string-lastIndexOf-6.swf b/test/trace/string-lastIndexOf-6.swf
new file mode 100644
index 0000000..c62c388
Binary files /dev/null and b/test/trace/string-lastIndexOf-6.swf differ
diff --git a/test/trace/string-lastIndexOf-6.swf.trace b/test/trace/string-lastIndexOf-6.swf.trace
new file mode 100644
index 0000000..e374473
--- /dev/null
+++ b/test/trace/string-lastIndexOf-6.swf.trace
@@ -0,0 +1,342 @@
+test String.lastIndexOf
+s.lastIndexOf ("H") = 0
+s.lastIndexOf ("H", -15) = -1
+s.lastIndexOf ("H", -14) = -1
+s.lastIndexOf ("H", -13) = -1
+s.lastIndexOf ("H", -12) = -1
+s.lastIndexOf ("H", -11) = -1
+s.lastIndexOf ("H", -10) = -1
+s.lastIndexOf ("H", -9) = -1
+s.lastIndexOf ("H", -8) = -1
+s.lastIndexOf ("H", -7) = -1
+s.lastIndexOf ("H", -6) = -1
+s.lastIndexOf ("H", -5) = -1
+s.lastIndexOf ("H", -4) = -1
+s.lastIndexOf ("H", -3) = -1
+s.lastIndexOf ("H", -2) = -1
+s.lastIndexOf ("H", -1) = -1
+s.lastIndexOf ("H", 0) = 0
+s.lastIndexOf ("H", 1) = 0
+s.lastIndexOf ("H", 2) = 0
+s.lastIndexOf ("H", 3) = 0
+s.lastIndexOf ("H", 4) = 0
+s.lastIndexOf ("H", 5) = 0
+s.lastIndexOf ("H", 6) = 0
+s.lastIndexOf ("H", 7) = 0
+s.lastIndexOf ("H", 8) = 0
+s.lastIndexOf ("H", 9) = 0
+s.lastIndexOf ("H", 10) = 0
+s.lastIndexOf ("H", 11) = 0
+s.lastIndexOf ("H", 12) = 0
+s.lastIndexOf ("H", 13) = 0
+s.lastIndexOf ("H", 14) = 0
+s.lastIndexOf ("e") = 1
+s.lastIndexOf ("e", -15) = -1
+s.lastIndexOf ("e", -14) = -1
+s.lastIndexOf ("e", -13) = -1
+s.lastIndexOf ("e", -12) = -1
+s.lastIndexOf ("e", -11) = -1
+s.lastIndexOf ("e", -10) = -1
+s.lastIndexOf ("e", -9) = -1
+s.lastIndexOf ("e", -8) = -1
+s.lastIndexOf ("e", -7) = -1
+s.lastIndexOf ("e", -6) = -1
+s.lastIndexOf ("e", -5) = -1
+s.lastIndexOf ("e", -4) = -1
+s.lastIndexOf ("e", -3) = -1
+s.lastIndexOf ("e", -2) = -1
+s.lastIndexOf ("e", -1) = -1
+s.lastIndexOf ("e", 0) = -1
+s.lastIndexOf ("e", 1) = 1
+s.lastIndexOf ("e", 2) = 1
+s.lastIndexOf ("e", 3) = 1
+s.lastIndexOf ("e", 4) = 1
+s.lastIndexOf ("e", 5) = 1
+s.lastIndexOf ("e", 6) = 1
+s.lastIndexOf ("e", 7) = 1
+s.lastIndexOf ("e", 8) = 1
+s.lastIndexOf ("e", 9) = 1
+s.lastIndexOf ("e", 10) = 1
+s.lastIndexOf ("e", 11) = 1
+s.lastIndexOf ("e", 12) = 1
+s.lastIndexOf ("e", 13) = 1
+s.lastIndexOf ("e", 14) = 1
+s.lastIndexOf ("l") = 9
+s.lastIndexOf ("l", -15) = -1
+s.lastIndexOf ("l", -14) = -1
+s.lastIndexOf ("l", -13) = -1
+s.lastIndexOf ("l", -12) = -1
+s.lastIndexOf ("l", -11) = -1
+s.lastIndexOf ("l", -10) = -1
+s.lastIndexOf ("l", -9) = -1
+s.lastIndexOf ("l", -8) = -1
+s.lastIndexOf ("l", -7) = -1
+s.lastIndexOf ("l", -6) = -1
+s.lastIndexOf ("l", -5) = -1
+s.lastIndexOf ("l", -4) = -1
+s.lastIndexOf ("l", -3) = -1
+s.lastIndexOf ("l", -2) = -1
+s.lastIndexOf ("l", -1) = -1
+s.lastIndexOf ("l", 0) = -1
+s.lastIndexOf ("l", 1) = -1
+s.lastIndexOf ("l", 2) = 2
+s.lastIndexOf ("l", 3) = 3
+s.lastIndexOf ("l", 4) = 3
+s.lastIndexOf ("l", 5) = 3
+s.lastIndexOf ("l", 6) = 3
+s.lastIndexOf ("l", 7) = 3
+s.lastIndexOf ("l", 8) = 3
+s.lastIndexOf ("l", 9) = 9
+s.lastIndexOf ("l", 10) = 9
+s.lastIndexOf ("l", 11) = 9
+s.lastIndexOf ("l", 12) = 9
+s.lastIndexOf ("l", 13) = 9
+s.lastIndexOf ("l", 14) = 9
+s.lastIndexOf ("l") = 9
+s.lastIndexOf ("l", -15) = -1
+s.lastIndexOf ("l", -14) = -1
+s.lastIndexOf ("l", -13) = -1
+s.lastIndexOf ("l", -12) = -1
+s.lastIndexOf ("l", -11) = -1
+s.lastIndexOf ("l", -10) = -1
+s.lastIndexOf ("l", -9) = -1
+s.lastIndexOf ("l", -8) = -1
+s.lastIndexOf ("l", -7) = -1
+s.lastIndexOf ("l", -6) = -1
+s.lastIndexOf ("l", -5) = -1
+s.lastIndexOf ("l", -4) = -1
+s.lastIndexOf ("l", -3) = -1
+s.lastIndexOf ("l", -2) = -1
+s.lastIndexOf ("l", -1) = -1
+s.lastIndexOf ("l", 0) = -1
+s.lastIndexOf ("l", 1) = -1
+s.lastIndexOf ("l", 2) = 2
+s.lastIndexOf ("l", 3) = 3
+s.lastIndexOf ("l", 4) = 3
+s.lastIndexOf ("l", 5) = 3
+s.lastIndexOf ("l", 6) = 3
+s.lastIndexOf ("l", 7) = 3
+s.lastIndexOf ("l", 8) = 3
+s.lastIndexOf ("l", 9) = 9
+s.lastIndexOf ("l", 10) = 9
+s.lastIndexOf ("l", 11) = 9
+s.lastIndexOf ("l", 12) = 9
+s.lastIndexOf ("l", 13) = 9
+s.lastIndexOf ("l", 14) = 9
+s.lastIndexOf ("o") = 7
+s.lastIndexOf ("o", -15) = -1
+s.lastIndexOf ("o", -14) = -1
+s.lastIndexOf ("o", -13) = -1
+s.lastIndexOf ("o", -12) = -1
+s.lastIndexOf ("o", -11) = -1
+s.lastIndexOf ("o", -10) = -1
+s.lastIndexOf ("o", -9) = -1
+s.lastIndexOf ("o", -8) = -1
+s.lastIndexOf ("o", -7) = -1
+s.lastIndexOf ("o", -6) = -1
+s.lastIndexOf ("o", -5) = -1
+s.lastIndexOf ("o", -4) = -1
+s.lastIndexOf ("o", -3) = -1
+s.lastIndexOf ("o", -2) = -1
+s.lastIndexOf ("o", -1) = -1
+s.lastIndexOf ("o", 0) = -1
+s.lastIndexOf ("o", 1) = -1
+s.lastIndexOf ("o", 2) = -1
+s.lastIndexOf ("o", 3) = -1
+s.lastIndexOf ("o", 4) = 4
+s.lastIndexOf ("o", 5) = 4
+s.lastIndexOf ("o", 6) = 4
+s.lastIndexOf ("o", 7) = 7
+s.lastIndexOf ("o", 8) = 7
+s.lastIndexOf ("o", 9) = 7
+s.lastIndexOf ("o", 10) = 7
+s.lastIndexOf ("o", 11) = 7
+s.lastIndexOf ("o", 12) = 7
+s.lastIndexOf ("o", 13) = 7
+s.lastIndexOf ("o", 14) = 7
+s.lastIndexOf (" ") = 5
+s.lastIndexOf (" ", -15) = -1
+s.lastIndexOf (" ", -14) = -1
+s.lastIndexOf (" ", -13) = -1
+s.lastIndexOf (" ", -12) = -1
+s.lastIndexOf (" ", -11) = -1
+s.lastIndexOf (" ", -10) = -1
+s.lastIndexOf (" ", -9) = -1
+s.lastIndexOf (" ", -8) = -1
+s.lastIndexOf (" ", -7) = -1
+s.lastIndexOf (" ", -6) = -1
+s.lastIndexOf (" ", -5) = -1
+s.lastIndexOf (" ", -4) = -1
+s.lastIndexOf (" ", -3) = -1
+s.lastIndexOf (" ", -2) = -1
+s.lastIndexOf (" ", -1) = -1
+s.lastIndexOf (" ", 0) = -1
+s.lastIndexOf (" ", 1) = -1
+s.lastIndexOf (" ", 2) = -1
+s.lastIndexOf (" ", 3) = -1
+s.lastIndexOf (" ", 4) = -1
+s.lastIndexOf (" ", 5) = 5
+s.lastIndexOf (" ", 6) = 5
+s.lastIndexOf (" ", 7) = 5
+s.lastIndexOf (" ", 8) = 5
+s.lastIndexOf (" ", 9) = 5
+s.lastIndexOf (" ", 10) = 5
+s.lastIndexOf (" ", 11) = 5
+s.lastIndexOf (" ", 12) = 5
+s.lastIndexOf (" ", 13) = 5
+s.lastIndexOf (" ", 14) = 5
+s.lastIndexOf ("W") = 6
+s.lastIndexOf ("W", -15) = -1
+s.lastIndexOf ("W", -14) = -1
+s.lastIndexOf ("W", -13) = -1
+s.lastIndexOf ("W", -12) = -1
+s.lastIndexOf ("W", -11) = -1
+s.lastIndexOf ("W", -10) = -1
+s.lastIndexOf ("W", -9) = -1
+s.lastIndexOf ("W", -8) = -1
+s.lastIndexOf ("W", -7) = -1
+s.lastIndexOf ("W", -6) = -1
+s.lastIndexOf ("W", -5) = -1
+s.lastIndexOf ("W", -4) = -1
+s.lastIndexOf ("W", -3) = -1
+s.lastIndexOf ("W", -2) = -1
+s.lastIndexOf ("W", -1) = -1
+s.lastIndexOf ("W", 0) = -1
+s.lastIndexOf ("W", 1) = -1
+s.lastIndexOf ("W", 2) = -1
+s.lastIndexOf ("W", 3) = -1
+s.lastIndexOf ("W", 4) = -1
+s.lastIndexOf ("W", 5) = -1
+s.lastIndexOf ("W", 6) = 6
+s.lastIndexOf ("W", 7) = 6
+s.lastIndexOf ("W", 8) = 6
+s.lastIndexOf ("W", 9) = 6
+s.lastIndexOf ("W", 10) = 6
+s.lastIndexOf ("W", 11) = 6
+s.lastIndexOf ("W", 12) = 6
+s.lastIndexOf ("W", 13) = 6
+s.lastIndexOf ("W", 14) = 6
+s.lastIndexOf ("o") = 7
+s.lastIndexOf ("o", -15) = -1
+s.lastIndexOf ("o", -14) = -1
+s.lastIndexOf ("o", -13) = -1
+s.lastIndexOf ("o", -12) = -1
+s.lastIndexOf ("o", -11) = -1
+s.lastIndexOf ("o", -10) = -1
+s.lastIndexOf ("o", -9) = -1
+s.lastIndexOf ("o", -8) = -1
+s.lastIndexOf ("o", -7) = -1
+s.lastIndexOf ("o", -6) = -1
+s.lastIndexOf ("o", -5) = -1
+s.lastIndexOf ("o", -4) = -1
+s.lastIndexOf ("o", -3) = -1
+s.lastIndexOf ("o", -2) = -1
+s.lastIndexOf ("o", -1) = -1
+s.lastIndexOf ("o", 0) = -1
+s.lastIndexOf ("o", 1) = -1
+s.lastIndexOf ("o", 2) = -1
+s.lastIndexOf ("o", 3) = -1
+s.lastIndexOf ("o", 4) = 4
+s.lastIndexOf ("o", 5) = 4
+s.lastIndexOf ("o", 6) = 4
+s.lastIndexOf ("o", 7) = 7
+s.lastIndexOf ("o", 8) = 7
+s.lastIndexOf ("o", 9) = 7
+s.lastIndexOf ("o", 10) = 7
+s.lastIndexOf ("o", 11) = 7
+s.lastIndexOf ("o", 12) = 7
+s.lastIndexOf ("o", 13) = 7
+s.lastIndexOf ("o", 14) = 7
+s.lastIndexOf ("r") = 8
+s.lastIndexOf ("r", -15) = -1
+s.lastIndexOf ("r", -14) = -1
+s.lastIndexOf ("r", -13) = -1
+s.lastIndexOf ("r", -12) = -1
+s.lastIndexOf ("r", -11) = -1
+s.lastIndexOf ("r", -10) = -1
+s.lastIndexOf ("r", -9) = -1
+s.lastIndexOf ("r", -8) = -1
+s.lastIndexOf ("r", -7) = -1
+s.lastIndexOf ("r", -6) = -1
+s.lastIndexOf ("r", -5) = -1
+s.lastIndexOf ("r", -4) = -1
+s.lastIndexOf ("r", -3) = -1
+s.lastIndexOf ("r", -2) = -1
+s.lastIndexOf ("r", -1) = -1
+s.lastIndexOf ("r", 0) = -1
+s.lastIndexOf ("r", 1) = -1
+s.lastIndexOf ("r", 2) = -1
+s.lastIndexOf ("r", 3) = -1
+s.lastIndexOf ("r", 4) = -1
+s.lastIndexOf ("r", 5) = -1
+s.lastIndexOf ("r", 6) = -1
+s.lastIndexOf ("r", 7) = -1
+s.lastIndexOf ("r", 8) = 8
+s.lastIndexOf ("r", 9) = 8
+s.lastIndexOf ("r", 10) = 8
+s.lastIndexOf ("r", 11) = 8
+s.lastIndexOf ("r", 12) = 8
+s.lastIndexOf ("r", 13) = 8
+s.lastIndexOf ("r", 14) = 8
+s.lastIndexOf ("l") = 9
+s.lastIndexOf ("l", -15) = -1
+s.lastIndexOf ("l", -14) = -1
+s.lastIndexOf ("l", -13) = -1
+s.lastIndexOf ("l", -12) = -1
+s.lastIndexOf ("l", -11) = -1
+s.lastIndexOf ("l", -10) = -1
+s.lastIndexOf ("l", -9) = -1
+s.lastIndexOf ("l", -8) = -1
+s.lastIndexOf ("l", -7) = -1
+s.lastIndexOf ("l", -6) = -1
+s.lastIndexOf ("l", -5) = -1
+s.lastIndexOf ("l", -4) = -1
+s.lastIndexOf ("l", -3) = -1
+s.lastIndexOf ("l", -2) = -1
+s.lastIndexOf ("l", -1) = -1
+s.lastIndexOf ("l", 0) = -1
+s.lastIndexOf ("l", 1) = -1
+s.lastIndexOf ("l", 2) = 2
+s.lastIndexOf ("l", 3) = 3
+s.lastIndexOf ("l", 4) = 3
+s.lastIndexOf ("l", 5) = 3
+s.lastIndexOf ("l", 6) = 3
+s.lastIndexOf ("l", 7) = 3
+s.lastIndexOf ("l", 8) = 3
+s.lastIndexOf ("l", 9) = 9
+s.lastIndexOf ("l", 10) = 9
+s.lastIndexOf ("l", 11) = 9
+s.lastIndexOf ("l", 12) = 9
+s.lastIndexOf ("l", 13) = 9
+s.lastIndexOf ("l", 14) = 9
+s.lastIndexOf ("d") = 10
+s.lastIndexOf ("d", -15) = -1
+s.lastIndexOf ("d", -14) = -1
+s.lastIndexOf ("d", -13) = -1
+s.lastIndexOf ("d", -12) = -1
+s.lastIndexOf ("d", -11) = -1
+s.lastIndexOf ("d", -10) = -1
+s.lastIndexOf ("d", -9) = -1
+s.lastIndexOf ("d", -8) = -1
+s.lastIndexOf ("d", -7) = -1
+s.lastIndexOf ("d", -6) = -1
+s.lastIndexOf ("d", -5) = -1
+s.lastIndexOf ("d", -4) = -1
+s.lastIndexOf ("d", -3) = -1
+s.lastIndexOf ("d", -2) = -1
+s.lastIndexOf ("d", -1) = -1
+s.lastIndexOf ("d", 0) = -1
+s.lastIndexOf ("d", 1) = -1
+s.lastIndexOf ("d", 2) = -1
+s.lastIndexOf ("d", 3) = -1
+s.lastIndexOf ("d", 4) = -1
+s.lastIndexOf ("d", 5) = -1
+s.lastIndexOf ("d", 6) = -1
+s.lastIndexOf ("d", 7) = -1
+s.lastIndexOf ("d", 8) = -1
+s.lastIndexOf ("d", 9) = -1
+s.lastIndexOf ("d", 10) = 10
+s.lastIndexOf ("d", 11) = 10
+s.lastIndexOf ("d", 12) = 10
+s.lastIndexOf ("d", 13) = 10
+s.lastIndexOf ("d", 14) = 10
diff --git a/test/trace/string-lastIndexOf-7.swf b/test/trace/string-lastIndexOf-7.swf
new file mode 100644
index 0000000..0046803
Binary files /dev/null and b/test/trace/string-lastIndexOf-7.swf differ
diff --git a/test/trace/string-lastIndexOf-7.swf.trace b/test/trace/string-lastIndexOf-7.swf.trace
new file mode 100644
index 0000000..e374473
--- /dev/null
+++ b/test/trace/string-lastIndexOf-7.swf.trace
@@ -0,0 +1,342 @@
+test String.lastIndexOf
+s.lastIndexOf ("H") = 0
+s.lastIndexOf ("H", -15) = -1
+s.lastIndexOf ("H", -14) = -1
+s.lastIndexOf ("H", -13) = -1
+s.lastIndexOf ("H", -12) = -1
+s.lastIndexOf ("H", -11) = -1
+s.lastIndexOf ("H", -10) = -1
+s.lastIndexOf ("H", -9) = -1
+s.lastIndexOf ("H", -8) = -1
+s.lastIndexOf ("H", -7) = -1
+s.lastIndexOf ("H", -6) = -1
+s.lastIndexOf ("H", -5) = -1
+s.lastIndexOf ("H", -4) = -1
+s.lastIndexOf ("H", -3) = -1
+s.lastIndexOf ("H", -2) = -1
+s.lastIndexOf ("H", -1) = -1
+s.lastIndexOf ("H", 0) = 0
+s.lastIndexOf ("H", 1) = 0
+s.lastIndexOf ("H", 2) = 0
+s.lastIndexOf ("H", 3) = 0
+s.lastIndexOf ("H", 4) = 0
+s.lastIndexOf ("H", 5) = 0
+s.lastIndexOf ("H", 6) = 0
+s.lastIndexOf ("H", 7) = 0
+s.lastIndexOf ("H", 8) = 0
+s.lastIndexOf ("H", 9) = 0
+s.lastIndexOf ("H", 10) = 0
+s.lastIndexOf ("H", 11) = 0
+s.lastIndexOf ("H", 12) = 0
+s.lastIndexOf ("H", 13) = 0
+s.lastIndexOf ("H", 14) = 0
+s.lastIndexOf ("e") = 1
+s.lastIndexOf ("e", -15) = -1
+s.lastIndexOf ("e", -14) = -1
+s.lastIndexOf ("e", -13) = -1
+s.lastIndexOf ("e", -12) = -1
+s.lastIndexOf ("e", -11) = -1
+s.lastIndexOf ("e", -10) = -1
+s.lastIndexOf ("e", -9) = -1
+s.lastIndexOf ("e", -8) = -1
+s.lastIndexOf ("e", -7) = -1
+s.lastIndexOf ("e", -6) = -1
+s.lastIndexOf ("e", -5) = -1
+s.lastIndexOf ("e", -4) = -1
+s.lastIndexOf ("e", -3) = -1
+s.lastIndexOf ("e", -2) = -1
+s.lastIndexOf ("e", -1) = -1
+s.lastIndexOf ("e", 0) = -1
+s.lastIndexOf ("e", 1) = 1
+s.lastIndexOf ("e", 2) = 1
+s.lastIndexOf ("e", 3) = 1
+s.lastIndexOf ("e", 4) = 1
+s.lastIndexOf ("e", 5) = 1
+s.lastIndexOf ("e", 6) = 1
+s.lastIndexOf ("e", 7) = 1
+s.lastIndexOf ("e", 8) = 1
+s.lastIndexOf ("e", 9) = 1
+s.lastIndexOf ("e", 10) = 1
+s.lastIndexOf ("e", 11) = 1
+s.lastIndexOf ("e", 12) = 1
+s.lastIndexOf ("e", 13) = 1
+s.lastIndexOf ("e", 14) = 1
+s.lastIndexOf ("l") = 9
+s.lastIndexOf ("l", -15) = -1
+s.lastIndexOf ("l", -14) = -1
+s.lastIndexOf ("l", -13) = -1
+s.lastIndexOf ("l", -12) = -1
+s.lastIndexOf ("l", -11) = -1
+s.lastIndexOf ("l", -10) = -1
+s.lastIndexOf ("l", -9) = -1
+s.lastIndexOf ("l", -8) = -1
+s.lastIndexOf ("l", -7) = -1
+s.lastIndexOf ("l", -6) = -1
+s.lastIndexOf ("l", -5) = -1
+s.lastIndexOf ("l", -4) = -1
+s.lastIndexOf ("l", -3) = -1
+s.lastIndexOf ("l", -2) = -1
+s.lastIndexOf ("l", -1) = -1
+s.lastIndexOf ("l", 0) = -1
+s.lastIndexOf ("l", 1) = -1
+s.lastIndexOf ("l", 2) = 2
+s.lastIndexOf ("l", 3) = 3
+s.lastIndexOf ("l", 4) = 3
+s.lastIndexOf ("l", 5) = 3
+s.lastIndexOf ("l", 6) = 3
+s.lastIndexOf ("l", 7) = 3
+s.lastIndexOf ("l", 8) = 3
+s.lastIndexOf ("l", 9) = 9
+s.lastIndexOf ("l", 10) = 9
+s.lastIndexOf ("l", 11) = 9
+s.lastIndexOf ("l", 12) = 9
+s.lastIndexOf ("l", 13) = 9
+s.lastIndexOf ("l", 14) = 9
+s.lastIndexOf ("l") = 9
+s.lastIndexOf ("l", -15) = -1
+s.lastIndexOf ("l", -14) = -1
+s.lastIndexOf ("l", -13) = -1
+s.lastIndexOf ("l", -12) = -1
+s.lastIndexOf ("l", -11) = -1
+s.lastIndexOf ("l", -10) = -1
+s.lastIndexOf ("l", -9) = -1
+s.lastIndexOf ("l", -8) = -1
+s.lastIndexOf ("l", -7) = -1
+s.lastIndexOf ("l", -6) = -1
+s.lastIndexOf ("l", -5) = -1
+s.lastIndexOf ("l", -4) = -1
+s.lastIndexOf ("l", -3) = -1
+s.lastIndexOf ("l", -2) = -1
+s.lastIndexOf ("l", -1) = -1
+s.lastIndexOf ("l", 0) = -1
+s.lastIndexOf ("l", 1) = -1
+s.lastIndexOf ("l", 2) = 2
+s.lastIndexOf ("l", 3) = 3
+s.lastIndexOf ("l", 4) = 3
+s.lastIndexOf ("l", 5) = 3
+s.lastIndexOf ("l", 6) = 3
+s.lastIndexOf ("l", 7) = 3
+s.lastIndexOf ("l", 8) = 3
+s.lastIndexOf ("l", 9) = 9
+s.lastIndexOf ("l", 10) = 9
+s.lastIndexOf ("l", 11) = 9
+s.lastIndexOf ("l", 12) = 9
+s.lastIndexOf ("l", 13) = 9
+s.lastIndexOf ("l", 14) = 9
+s.lastIndexOf ("o") = 7
+s.lastIndexOf ("o", -15) = -1
+s.lastIndexOf ("o", -14) = -1
+s.lastIndexOf ("o", -13) = -1
+s.lastIndexOf ("o", -12) = -1
+s.lastIndexOf ("o", -11) = -1
+s.lastIndexOf ("o", -10) = -1
+s.lastIndexOf ("o", -9) = -1
+s.lastIndexOf ("o", -8) = -1
+s.lastIndexOf ("o", -7) = -1
+s.lastIndexOf ("o", -6) = -1
+s.lastIndexOf ("o", -5) = -1
+s.lastIndexOf ("o", -4) = -1
+s.lastIndexOf ("o", -3) = -1
+s.lastIndexOf ("o", -2) = -1
+s.lastIndexOf ("o", -1) = -1
+s.lastIndexOf ("o", 0) = -1
+s.lastIndexOf ("o", 1) = -1
+s.lastIndexOf ("o", 2) = -1
+s.lastIndexOf ("o", 3) = -1
+s.lastIndexOf ("o", 4) = 4
+s.lastIndexOf ("o", 5) = 4
+s.lastIndexOf ("o", 6) = 4
+s.lastIndexOf ("o", 7) = 7
+s.lastIndexOf ("o", 8) = 7
+s.lastIndexOf ("o", 9) = 7
+s.lastIndexOf ("o", 10) = 7
+s.lastIndexOf ("o", 11) = 7
+s.lastIndexOf ("o", 12) = 7
+s.lastIndexOf ("o", 13) = 7
+s.lastIndexOf ("o", 14) = 7
+s.lastIndexOf (" ") = 5
+s.lastIndexOf (" ", -15) = -1
+s.lastIndexOf (" ", -14) = -1
+s.lastIndexOf (" ", -13) = -1
+s.lastIndexOf (" ", -12) = -1
+s.lastIndexOf (" ", -11) = -1
+s.lastIndexOf (" ", -10) = -1
+s.lastIndexOf (" ", -9) = -1
+s.lastIndexOf (" ", -8) = -1
+s.lastIndexOf (" ", -7) = -1
+s.lastIndexOf (" ", -6) = -1
+s.lastIndexOf (" ", -5) = -1
+s.lastIndexOf (" ", -4) = -1
+s.lastIndexOf (" ", -3) = -1
+s.lastIndexOf (" ", -2) = -1
+s.lastIndexOf (" ", -1) = -1
+s.lastIndexOf (" ", 0) = -1
+s.lastIndexOf (" ", 1) = -1
+s.lastIndexOf (" ", 2) = -1
+s.lastIndexOf (" ", 3) = -1
+s.lastIndexOf (" ", 4) = -1
+s.lastIndexOf (" ", 5) = 5
+s.lastIndexOf (" ", 6) = 5
+s.lastIndexOf (" ", 7) = 5
+s.lastIndexOf (" ", 8) = 5
+s.lastIndexOf (" ", 9) = 5
+s.lastIndexOf (" ", 10) = 5
+s.lastIndexOf (" ", 11) = 5
+s.lastIndexOf (" ", 12) = 5
+s.lastIndexOf (" ", 13) = 5
+s.lastIndexOf (" ", 14) = 5
+s.lastIndexOf ("W") = 6
+s.lastIndexOf ("W", -15) = -1
+s.lastIndexOf ("W", -14) = -1
+s.lastIndexOf ("W", -13) = -1
+s.lastIndexOf ("W", -12) = -1
+s.lastIndexOf ("W", -11) = -1
+s.lastIndexOf ("W", -10) = -1
+s.lastIndexOf ("W", -9) = -1
+s.lastIndexOf ("W", -8) = -1
+s.lastIndexOf ("W", -7) = -1
+s.lastIndexOf ("W", -6) = -1
+s.lastIndexOf ("W", -5) = -1
+s.lastIndexOf ("W", -4) = -1
+s.lastIndexOf ("W", -3) = -1
+s.lastIndexOf ("W", -2) = -1
+s.lastIndexOf ("W", -1) = -1
+s.lastIndexOf ("W", 0) = -1
+s.lastIndexOf ("W", 1) = -1
+s.lastIndexOf ("W", 2) = -1
+s.lastIndexOf ("W", 3) = -1
+s.lastIndexOf ("W", 4) = -1
+s.lastIndexOf ("W", 5) = -1
+s.lastIndexOf ("W", 6) = 6
+s.lastIndexOf ("W", 7) = 6
+s.lastIndexOf ("W", 8) = 6
+s.lastIndexOf ("W", 9) = 6
+s.lastIndexOf ("W", 10) = 6
+s.lastIndexOf ("W", 11) = 6
+s.lastIndexOf ("W", 12) = 6
+s.lastIndexOf ("W", 13) = 6
+s.lastIndexOf ("W", 14) = 6
+s.lastIndexOf ("o") = 7
+s.lastIndexOf ("o", -15) = -1
+s.lastIndexOf ("o", -14) = -1
+s.lastIndexOf ("o", -13) = -1
+s.lastIndexOf ("o", -12) = -1
+s.lastIndexOf ("o", -11) = -1
+s.lastIndexOf ("o", -10) = -1
+s.lastIndexOf ("o", -9) = -1
+s.lastIndexOf ("o", -8) = -1
+s.lastIndexOf ("o", -7) = -1
+s.lastIndexOf ("o", -6) = -1
+s.lastIndexOf ("o", -5) = -1
+s.lastIndexOf ("o", -4) = -1
+s.lastIndexOf ("o", -3) = -1
+s.lastIndexOf ("o", -2) = -1
+s.lastIndexOf ("o", -1) = -1
+s.lastIndexOf ("o", 0) = -1
+s.lastIndexOf ("o", 1) = -1
+s.lastIndexOf ("o", 2) = -1
+s.lastIndexOf ("o", 3) = -1
+s.lastIndexOf ("o", 4) = 4
+s.lastIndexOf ("o", 5) = 4
+s.lastIndexOf ("o", 6) = 4
+s.lastIndexOf ("o", 7) = 7
+s.lastIndexOf ("o", 8) = 7
+s.lastIndexOf ("o", 9) = 7
+s.lastIndexOf ("o", 10) = 7
+s.lastIndexOf ("o", 11) = 7
+s.lastIndexOf ("o", 12) = 7
+s.lastIndexOf ("o", 13) = 7
+s.lastIndexOf ("o", 14) = 7
+s.lastIndexOf ("r") = 8
+s.lastIndexOf ("r", -15) = -1
+s.lastIndexOf ("r", -14) = -1
+s.lastIndexOf ("r", -13) = -1
+s.lastIndexOf ("r", -12) = -1
+s.lastIndexOf ("r", -11) = -1
+s.lastIndexOf ("r", -10) = -1
+s.lastIndexOf ("r", -9) = -1
+s.lastIndexOf ("r", -8) = -1
+s.lastIndexOf ("r", -7) = -1
+s.lastIndexOf ("r", -6) = -1
+s.lastIndexOf ("r", -5) = -1
+s.lastIndexOf ("r", -4) = -1
+s.lastIndexOf ("r", -3) = -1
+s.lastIndexOf ("r", -2) = -1
+s.lastIndexOf ("r", -1) = -1
+s.lastIndexOf ("r", 0) = -1
+s.lastIndexOf ("r", 1) = -1
+s.lastIndexOf ("r", 2) = -1
+s.lastIndexOf ("r", 3) = -1
+s.lastIndexOf ("r", 4) = -1
+s.lastIndexOf ("r", 5) = -1
+s.lastIndexOf ("r", 6) = -1
+s.lastIndexOf ("r", 7) = -1
+s.lastIndexOf ("r", 8) = 8
+s.lastIndexOf ("r", 9) = 8
+s.lastIndexOf ("r", 10) = 8
+s.lastIndexOf ("r", 11) = 8
+s.lastIndexOf ("r", 12) = 8
+s.lastIndexOf ("r", 13) = 8
+s.lastIndexOf ("r", 14) = 8
+s.lastIndexOf ("l") = 9
+s.lastIndexOf ("l", -15) = -1
+s.lastIndexOf ("l", -14) = -1
+s.lastIndexOf ("l", -13) = -1
+s.lastIndexOf ("l", -12) = -1
+s.lastIndexOf ("l", -11) = -1
+s.lastIndexOf ("l", -10) = -1
+s.lastIndexOf ("l", -9) = -1
+s.lastIndexOf ("l", -8) = -1
+s.lastIndexOf ("l", -7) = -1
+s.lastIndexOf ("l", -6) = -1
+s.lastIndexOf ("l", -5) = -1
+s.lastIndexOf ("l", -4) = -1
+s.lastIndexOf ("l", -3) = -1
+s.lastIndexOf ("l", -2) = -1
+s.lastIndexOf ("l", -1) = -1
+s.lastIndexOf ("l", 0) = -1
+s.lastIndexOf ("l", 1) = -1
+s.lastIndexOf ("l", 2) = 2
+s.lastIndexOf ("l", 3) = 3
+s.lastIndexOf ("l", 4) = 3
+s.lastIndexOf ("l", 5) = 3
+s.lastIndexOf ("l", 6) = 3
+s.lastIndexOf ("l", 7) = 3
+s.lastIndexOf ("l", 8) = 3
+s.lastIndexOf ("l", 9) = 9
+s.lastIndexOf ("l", 10) = 9
+s.lastIndexOf ("l", 11) = 9
+s.lastIndexOf ("l", 12) = 9
+s.lastIndexOf ("l", 13) = 9
+s.lastIndexOf ("l", 14) = 9
+s.lastIndexOf ("d") = 10
+s.lastIndexOf ("d", -15) = -1
+s.lastIndexOf ("d", -14) = -1
+s.lastIndexOf ("d", -13) = -1
+s.lastIndexOf ("d", -12) = -1
+s.lastIndexOf ("d", -11) = -1
+s.lastIndexOf ("d", -10) = -1
+s.lastIndexOf ("d", -9) = -1
+s.lastIndexOf ("d", -8) = -1
+s.lastIndexOf ("d", -7) = -1
+s.lastIndexOf ("d", -6) = -1
+s.lastIndexOf ("d", -5) = -1
+s.lastIndexOf ("d", -4) = -1
+s.lastIndexOf ("d", -3) = -1
+s.lastIndexOf ("d", -2) = -1
+s.lastIndexOf ("d", -1) = -1
+s.lastIndexOf ("d", 0) = -1
+s.lastIndexOf ("d", 1) = -1
+s.lastIndexOf ("d", 2) = -1
+s.lastIndexOf ("d", 3) = -1
+s.lastIndexOf ("d", 4) = -1
+s.lastIndexOf ("d", 5) = -1
+s.lastIndexOf ("d", 6) = -1
+s.lastIndexOf ("d", 7) = -1
+s.lastIndexOf ("d", 8) = -1
+s.lastIndexOf ("d", 9) = -1
+s.lastIndexOf ("d", 10) = 10
+s.lastIndexOf ("d", 11) = 10
+s.lastIndexOf ("d", 12) = 10
+s.lastIndexOf ("d", 13) = 10
+s.lastIndexOf ("d", 14) = 10
diff --git a/test/trace/string-lastIndexOf-8.swf b/test/trace/string-lastIndexOf-8.swf
new file mode 100644
index 0000000..2497f10
Binary files /dev/null and b/test/trace/string-lastIndexOf-8.swf differ
diff --git a/test/trace/string-lastIndexOf-8.swf.trace b/test/trace/string-lastIndexOf-8.swf.trace
new file mode 100644
index 0000000..e374473
--- /dev/null
+++ b/test/trace/string-lastIndexOf-8.swf.trace
@@ -0,0 +1,342 @@
+test String.lastIndexOf
+s.lastIndexOf ("H") = 0
+s.lastIndexOf ("H", -15) = -1
+s.lastIndexOf ("H", -14) = -1
+s.lastIndexOf ("H", -13) = -1
+s.lastIndexOf ("H", -12) = -1
+s.lastIndexOf ("H", -11) = -1
+s.lastIndexOf ("H", -10) = -1
+s.lastIndexOf ("H", -9) = -1
+s.lastIndexOf ("H", -8) = -1
+s.lastIndexOf ("H", -7) = -1
+s.lastIndexOf ("H", -6) = -1
+s.lastIndexOf ("H", -5) = -1
+s.lastIndexOf ("H", -4) = -1
+s.lastIndexOf ("H", -3) = -1
+s.lastIndexOf ("H", -2) = -1
+s.lastIndexOf ("H", -1) = -1
+s.lastIndexOf ("H", 0) = 0
+s.lastIndexOf ("H", 1) = 0
+s.lastIndexOf ("H", 2) = 0
+s.lastIndexOf ("H", 3) = 0
+s.lastIndexOf ("H", 4) = 0
+s.lastIndexOf ("H", 5) = 0
+s.lastIndexOf ("H", 6) = 0
+s.lastIndexOf ("H", 7) = 0
+s.lastIndexOf ("H", 8) = 0
+s.lastIndexOf ("H", 9) = 0
+s.lastIndexOf ("H", 10) = 0
+s.lastIndexOf ("H", 11) = 0
+s.lastIndexOf ("H", 12) = 0
+s.lastIndexOf ("H", 13) = 0
+s.lastIndexOf ("H", 14) = 0
+s.lastIndexOf ("e") = 1
+s.lastIndexOf ("e", -15) = -1
+s.lastIndexOf ("e", -14) = -1
+s.lastIndexOf ("e", -13) = -1
+s.lastIndexOf ("e", -12) = -1
+s.lastIndexOf ("e", -11) = -1
+s.lastIndexOf ("e", -10) = -1
+s.lastIndexOf ("e", -9) = -1
+s.lastIndexOf ("e", -8) = -1
+s.lastIndexOf ("e", -7) = -1
+s.lastIndexOf ("e", -6) = -1
+s.lastIndexOf ("e", -5) = -1
+s.lastIndexOf ("e", -4) = -1
+s.lastIndexOf ("e", -3) = -1
+s.lastIndexOf ("e", -2) = -1
+s.lastIndexOf ("e", -1) = -1
+s.lastIndexOf ("e", 0) = -1
+s.lastIndexOf ("e", 1) = 1
+s.lastIndexOf ("e", 2) = 1
+s.lastIndexOf ("e", 3) = 1
+s.lastIndexOf ("e", 4) = 1
+s.lastIndexOf ("e", 5) = 1
+s.lastIndexOf ("e", 6) = 1
+s.lastIndexOf ("e", 7) = 1
+s.lastIndexOf ("e", 8) = 1
+s.lastIndexOf ("e", 9) = 1
+s.lastIndexOf ("e", 10) = 1
+s.lastIndexOf ("e", 11) = 1
+s.lastIndexOf ("e", 12) = 1
+s.lastIndexOf ("e", 13) = 1
+s.lastIndexOf ("e", 14) = 1
+s.lastIndexOf ("l") = 9
+s.lastIndexOf ("l", -15) = -1
+s.lastIndexOf ("l", -14) = -1
+s.lastIndexOf ("l", -13) = -1
+s.lastIndexOf ("l", -12) = -1
+s.lastIndexOf ("l", -11) = -1
+s.lastIndexOf ("l", -10) = -1
+s.lastIndexOf ("l", -9) = -1
+s.lastIndexOf ("l", -8) = -1
+s.lastIndexOf ("l", -7) = -1
+s.lastIndexOf ("l", -6) = -1
+s.lastIndexOf ("l", -5) = -1
+s.lastIndexOf ("l", -4) = -1
+s.lastIndexOf ("l", -3) = -1
+s.lastIndexOf ("l", -2) = -1
+s.lastIndexOf ("l", -1) = -1
+s.lastIndexOf ("l", 0) = -1
+s.lastIndexOf ("l", 1) = -1
+s.lastIndexOf ("l", 2) = 2
+s.lastIndexOf ("l", 3) = 3
+s.lastIndexOf ("l", 4) = 3
+s.lastIndexOf ("l", 5) = 3
+s.lastIndexOf ("l", 6) = 3
+s.lastIndexOf ("l", 7) = 3
+s.lastIndexOf ("l", 8) = 3
+s.lastIndexOf ("l", 9) = 9
+s.lastIndexOf ("l", 10) = 9
+s.lastIndexOf ("l", 11) = 9
+s.lastIndexOf ("l", 12) = 9
+s.lastIndexOf ("l", 13) = 9
+s.lastIndexOf ("l", 14) = 9
+s.lastIndexOf ("l") = 9
+s.lastIndexOf ("l", -15) = -1
+s.lastIndexOf ("l", -14) = -1
+s.lastIndexOf ("l", -13) = -1
+s.lastIndexOf ("l", -12) = -1
+s.lastIndexOf ("l", -11) = -1
+s.lastIndexOf ("l", -10) = -1
+s.lastIndexOf ("l", -9) = -1
+s.lastIndexOf ("l", -8) = -1
+s.lastIndexOf ("l", -7) = -1
+s.lastIndexOf ("l", -6) = -1
+s.lastIndexOf ("l", -5) = -1
+s.lastIndexOf ("l", -4) = -1
+s.lastIndexOf ("l", -3) = -1
+s.lastIndexOf ("l", -2) = -1
+s.lastIndexOf ("l", -1) = -1
+s.lastIndexOf ("l", 0) = -1
+s.lastIndexOf ("l", 1) = -1
+s.lastIndexOf ("l", 2) = 2
+s.lastIndexOf ("l", 3) = 3
+s.lastIndexOf ("l", 4) = 3
+s.lastIndexOf ("l", 5) = 3
+s.lastIndexOf ("l", 6) = 3
+s.lastIndexOf ("l", 7) = 3
+s.lastIndexOf ("l", 8) = 3
+s.lastIndexOf ("l", 9) = 9
+s.lastIndexOf ("l", 10) = 9
+s.lastIndexOf ("l", 11) = 9
+s.lastIndexOf ("l", 12) = 9
+s.lastIndexOf ("l", 13) = 9
+s.lastIndexOf ("l", 14) = 9
+s.lastIndexOf ("o") = 7
+s.lastIndexOf ("o", -15) = -1
+s.lastIndexOf ("o", -14) = -1
+s.lastIndexOf ("o", -13) = -1
+s.lastIndexOf ("o", -12) = -1
+s.lastIndexOf ("o", -11) = -1
+s.lastIndexOf ("o", -10) = -1
+s.lastIndexOf ("o", -9) = -1
+s.lastIndexOf ("o", -8) = -1
+s.lastIndexOf ("o", -7) = -1
+s.lastIndexOf ("o", -6) = -1
+s.lastIndexOf ("o", -5) = -1
+s.lastIndexOf ("o", -4) = -1
+s.lastIndexOf ("o", -3) = -1
+s.lastIndexOf ("o", -2) = -1
+s.lastIndexOf ("o", -1) = -1
+s.lastIndexOf ("o", 0) = -1
+s.lastIndexOf ("o", 1) = -1
+s.lastIndexOf ("o", 2) = -1
+s.lastIndexOf ("o", 3) = -1
+s.lastIndexOf ("o", 4) = 4
+s.lastIndexOf ("o", 5) = 4
+s.lastIndexOf ("o", 6) = 4
+s.lastIndexOf ("o", 7) = 7
+s.lastIndexOf ("o", 8) = 7
+s.lastIndexOf ("o", 9) = 7
+s.lastIndexOf ("o", 10) = 7
+s.lastIndexOf ("o", 11) = 7
+s.lastIndexOf ("o", 12) = 7
+s.lastIndexOf ("o", 13) = 7
+s.lastIndexOf ("o", 14) = 7
+s.lastIndexOf (" ") = 5
+s.lastIndexOf (" ", -15) = -1
+s.lastIndexOf (" ", -14) = -1
+s.lastIndexOf (" ", -13) = -1
+s.lastIndexOf (" ", -12) = -1
+s.lastIndexOf (" ", -11) = -1
+s.lastIndexOf (" ", -10) = -1
+s.lastIndexOf (" ", -9) = -1
+s.lastIndexOf (" ", -8) = -1
+s.lastIndexOf (" ", -7) = -1
+s.lastIndexOf (" ", -6) = -1
+s.lastIndexOf (" ", -5) = -1
+s.lastIndexOf (" ", -4) = -1
+s.lastIndexOf (" ", -3) = -1
+s.lastIndexOf (" ", -2) = -1
+s.lastIndexOf (" ", -1) = -1
+s.lastIndexOf (" ", 0) = -1
+s.lastIndexOf (" ", 1) = -1
+s.lastIndexOf (" ", 2) = -1
+s.lastIndexOf (" ", 3) = -1
+s.lastIndexOf (" ", 4) = -1
+s.lastIndexOf (" ", 5) = 5
+s.lastIndexOf (" ", 6) = 5
+s.lastIndexOf (" ", 7) = 5
+s.lastIndexOf (" ", 8) = 5
+s.lastIndexOf (" ", 9) = 5
+s.lastIndexOf (" ", 10) = 5
+s.lastIndexOf (" ", 11) = 5
+s.lastIndexOf (" ", 12) = 5
+s.lastIndexOf (" ", 13) = 5
+s.lastIndexOf (" ", 14) = 5
+s.lastIndexOf ("W") = 6
+s.lastIndexOf ("W", -15) = -1
+s.lastIndexOf ("W", -14) = -1
+s.lastIndexOf ("W", -13) = -1
+s.lastIndexOf ("W", -12) = -1
+s.lastIndexOf ("W", -11) = -1
+s.lastIndexOf ("W", -10) = -1
+s.lastIndexOf ("W", -9) = -1
+s.lastIndexOf ("W", -8) = -1
+s.lastIndexOf ("W", -7) = -1
+s.lastIndexOf ("W", -6) = -1
+s.lastIndexOf ("W", -5) = -1
+s.lastIndexOf ("W", -4) = -1
+s.lastIndexOf ("W", -3) = -1
+s.lastIndexOf ("W", -2) = -1
+s.lastIndexOf ("W", -1) = -1
+s.lastIndexOf ("W", 0) = -1
+s.lastIndexOf ("W", 1) = -1
+s.lastIndexOf ("W", 2) = -1
+s.lastIndexOf ("W", 3) = -1
+s.lastIndexOf ("W", 4) = -1
+s.lastIndexOf ("W", 5) = -1
+s.lastIndexOf ("W", 6) = 6
+s.lastIndexOf ("W", 7) = 6
+s.lastIndexOf ("W", 8) = 6
+s.lastIndexOf ("W", 9) = 6
+s.lastIndexOf ("W", 10) = 6
+s.lastIndexOf ("W", 11) = 6
+s.lastIndexOf ("W", 12) = 6
+s.lastIndexOf ("W", 13) = 6
+s.lastIndexOf ("W", 14) = 6
+s.lastIndexOf ("o") = 7
+s.lastIndexOf ("o", -15) = -1
+s.lastIndexOf ("o", -14) = -1
+s.lastIndexOf ("o", -13) = -1
+s.lastIndexOf ("o", -12) = -1
+s.lastIndexOf ("o", -11) = -1
+s.lastIndexOf ("o", -10) = -1
+s.lastIndexOf ("o", -9) = -1
+s.lastIndexOf ("o", -8) = -1
+s.lastIndexOf ("o", -7) = -1
+s.lastIndexOf ("o", -6) = -1
+s.lastIndexOf ("o", -5) = -1
+s.lastIndexOf ("o", -4) = -1
+s.lastIndexOf ("o", -3) = -1
+s.lastIndexOf ("o", -2) = -1
+s.lastIndexOf ("o", -1) = -1
+s.lastIndexOf ("o", 0) = -1
+s.lastIndexOf ("o", 1) = -1
+s.lastIndexOf ("o", 2) = -1
+s.lastIndexOf ("o", 3) = -1
+s.lastIndexOf ("o", 4) = 4
+s.lastIndexOf ("o", 5) = 4
+s.lastIndexOf ("o", 6) = 4
+s.lastIndexOf ("o", 7) = 7
+s.lastIndexOf ("o", 8) = 7
+s.lastIndexOf ("o", 9) = 7
+s.lastIndexOf ("o", 10) = 7
+s.lastIndexOf ("o", 11) = 7
+s.lastIndexOf ("o", 12) = 7
+s.lastIndexOf ("o", 13) = 7
+s.lastIndexOf ("o", 14) = 7
+s.lastIndexOf ("r") = 8
+s.lastIndexOf ("r", -15) = -1
+s.lastIndexOf ("r", -14) = -1
+s.lastIndexOf ("r", -13) = -1
+s.lastIndexOf ("r", -12) = -1
+s.lastIndexOf ("r", -11) = -1
+s.lastIndexOf ("r", -10) = -1
+s.lastIndexOf ("r", -9) = -1
+s.lastIndexOf ("r", -8) = -1
+s.lastIndexOf ("r", -7) = -1
+s.lastIndexOf ("r", -6) = -1
+s.lastIndexOf ("r", -5) = -1
+s.lastIndexOf ("r", -4) = -1
+s.lastIndexOf ("r", -3) = -1
+s.lastIndexOf ("r", -2) = -1
+s.lastIndexOf ("r", -1) = -1
+s.lastIndexOf ("r", 0) = -1
+s.lastIndexOf ("r", 1) = -1
+s.lastIndexOf ("r", 2) = -1
+s.lastIndexOf ("r", 3) = -1
+s.lastIndexOf ("r", 4) = -1
+s.lastIndexOf ("r", 5) = -1
+s.lastIndexOf ("r", 6) = -1
+s.lastIndexOf ("r", 7) = -1
+s.lastIndexOf ("r", 8) = 8
+s.lastIndexOf ("r", 9) = 8
+s.lastIndexOf ("r", 10) = 8
+s.lastIndexOf ("r", 11) = 8
+s.lastIndexOf ("r", 12) = 8
+s.lastIndexOf ("r", 13) = 8
+s.lastIndexOf ("r", 14) = 8
+s.lastIndexOf ("l") = 9
+s.lastIndexOf ("l", -15) = -1
+s.lastIndexOf ("l", -14) = -1
+s.lastIndexOf ("l", -13) = -1
+s.lastIndexOf ("l", -12) = -1
+s.lastIndexOf ("l", -11) = -1
+s.lastIndexOf ("l", -10) = -1
+s.lastIndexOf ("l", -9) = -1
+s.lastIndexOf ("l", -8) = -1
+s.lastIndexOf ("l", -7) = -1
+s.lastIndexOf ("l", -6) = -1
+s.lastIndexOf ("l", -5) = -1
+s.lastIndexOf ("l", -4) = -1
+s.lastIndexOf ("l", -3) = -1
+s.lastIndexOf ("l", -2) = -1
+s.lastIndexOf ("l", -1) = -1
+s.lastIndexOf ("l", 0) = -1
+s.lastIndexOf ("l", 1) = -1
+s.lastIndexOf ("l", 2) = 2
+s.lastIndexOf ("l", 3) = 3
+s.lastIndexOf ("l", 4) = 3
+s.lastIndexOf ("l", 5) = 3
+s.lastIndexOf ("l", 6) = 3
+s.lastIndexOf ("l", 7) = 3
+s.lastIndexOf ("l", 8) = 3
+s.lastIndexOf ("l", 9) = 9
+s.lastIndexOf ("l", 10) = 9
+s.lastIndexOf ("l", 11) = 9
+s.lastIndexOf ("l", 12) = 9
+s.lastIndexOf ("l", 13) = 9
+s.lastIndexOf ("l", 14) = 9
+s.lastIndexOf ("d") = 10
+s.lastIndexOf ("d", -15) = -1
+s.lastIndexOf ("d", -14) = -1
+s.lastIndexOf ("d", -13) = -1
+s.lastIndexOf ("d", -12) = -1
+s.lastIndexOf ("d", -11) = -1
+s.lastIndexOf ("d", -10) = -1
+s.lastIndexOf ("d", -9) = -1
+s.lastIndexOf ("d", -8) = -1
+s.lastIndexOf ("d", -7) = -1
+s.lastIndexOf ("d", -6) = -1
+s.lastIndexOf ("d", -5) = -1
+s.lastIndexOf ("d", -4) = -1
+s.lastIndexOf ("d", -3) = -1
+s.lastIndexOf ("d", -2) = -1
+s.lastIndexOf ("d", -1) = -1
+s.lastIndexOf ("d", 0) = -1
+s.lastIndexOf ("d", 1) = -1
+s.lastIndexOf ("d", 2) = -1
+s.lastIndexOf ("d", 3) = -1
+s.lastIndexOf ("d", 4) = -1
+s.lastIndexOf ("d", 5) = -1
+s.lastIndexOf ("d", 6) = -1
+s.lastIndexOf ("d", 7) = -1
+s.lastIndexOf ("d", 8) = -1
+s.lastIndexOf ("d", 9) = -1
+s.lastIndexOf ("d", 10) = 10
+s.lastIndexOf ("d", 11) = 10
+s.lastIndexOf ("d", 12) = 10
+s.lastIndexOf ("d", 13) = 10
+s.lastIndexOf ("d", 14) = 10
diff --git a/test/trace/string-lastIndexOf.as b/test/trace/string-lastIndexOf.as
new file mode 100644
index 0000000..f0706bf
--- /dev/null
+++ b/test/trace/string-lastIndexOf.as
@@ -0,0 +1,13 @@
+// makeswf -v 7 -s 200x150 -r 1 -o string-lastIndexOf.swf string-lastIndexOf.as
+
+trace ("test String.lastIndexOf");
+s = "Hello World";
+
+for (j = 0; j < 11; j++) {
+  trace ("s.lastIndexOf (\""+ s.substr (j, 1) + "\") = " + s.lastIndexOf (s.substr (j, 1)));
+  for (i = -15; i < 15; i++) {
+    trace ("s.lastIndexOf (\""+ s.substr (j, 1) + "\", " + i + ") = " + s.lastIndexOf (s.substr (j, 1), i));
+  }
+};
+
+loadMovie ("FSCommand:quit", "");
diff-tree ef88186bc8874a97c155d0b2cbabe772021f8d6e (from 31e0d8728000101a68e587b3f029e1ac42d3e151)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 19:22:26 2007 +0200

    implement String.lastIndexOf

diff --git a/libswfdec/swfdec_as_string.c b/libswfdec/swfdec_as_string.c
index 5ad6425..5cb4d18 100644
--- a/libswfdec/swfdec_as_string.c
+++ b/libswfdec/swfdec_as_string.c
@@ -77,6 +77,33 @@ swfdec_as_str_nth_char (const char *s, g
 }
 
 static void
+swfdec_as_string_lastIndexOf (SwfdecAsContext *cx, SwfdecAsObject *object,
+    guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+{
+  SwfdecAsString *string = SWFDEC_AS_STRING (object);
+  gsize len;
+  const char *s;
+
+  s = swfdec_as_value_to_string (object->context, &argv[0]);
+  if (argc == 2) {
+    int offset = swfdec_as_value_to_integer (object->context, &argv[1]);
+    if (offset < 0) {
+      SWFDEC_AS_VALUE_SET_INT (ret, -1);
+      return;
+    }
+    len = g_utf8_offset_to_pointer (string->string, offset + 1) - string->string;
+  } else {
+    len = G_MAXSIZE;
+  }
+  s = g_strrstr_len (string->string, len, s);
+  if (s) {
+    SWFDEC_AS_VALUE_SET_INT (ret, g_utf8_pointer_to_offset (string->string, s));
+  } else {
+    SWFDEC_AS_VALUE_SET_INT (ret, -1);
+  }
+}
+
+static void
 swfdec_as_string_indexOf (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
@@ -262,7 +289,6 @@ charAt(index:Number) : String
 charCodeAt(index:Number) : Number
 concat(value:Object) : String
 indexOf(value:String, [startIndex:Number]) : Number
-lastIndexOf(value:String, [startIndex:Number]) : Number
 slice(start:Number, end:Number) : String
 split(delimiter:String, [limit:Number]) : Array
 #endif
@@ -724,6 +750,7 @@ swfdec_as_string_init_context (SwfdecAsC
       &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT);
   swfdec_as_object_add_function (proto, SWFDEC_AS_STR_charAt, SWFDEC_TYPE_AS_STRING, swfdec_as_string_charAt, 1);
   swfdec_as_object_add_function (proto, SWFDEC_AS_STR_indexOf, SWFDEC_TYPE_AS_STRING, swfdec_as_string_indexOf, 1);
+  swfdec_as_object_add_function (proto, SWFDEC_AS_STR_lastIndexOf, SWFDEC_TYPE_AS_STRING, swfdec_as_string_lastIndexOf, 1);
   swfdec_as_object_add_function (proto, SWFDEC_AS_STR_charCodeAt, SWFDEC_TYPE_AS_STRING, swfdec_as_string_charCodeAt, 1);
   swfdec_as_object_add_function (proto, SWFDEC_AS_STR_substr, SWFDEC_TYPE_AS_STRING, swfdec_as_string_substr, 1);
   swfdec_as_object_add_function (proto, SWFDEC_AS_STR_substring, SWFDEC_TYPE_AS_STRING, swfdec_as_string_substring, 1);
diff --git a/libswfdec/swfdec_as_strings.c b/libswfdec/swfdec_as_strings.c
index ce5a4de..04b0790 100644
--- a/libswfdec/swfdec_as_strings.c
+++ b/libswfdec/swfdec_as_strings.c
@@ -253,6 +253,7 @@ const char swfdec_as_strings[] = 
   SWFDEC_AS_CONSTANT_STRING ("_bytesLoaded")
   SWFDEC_AS_CONSTANT_STRING ("_bytesTotal")
   SWFDEC_AS_CONSTANT_STRING ("loaded")
+  SWFDEC_AS_CONSTANT_STRING ("lastIndexOf")
   /* add more here */
 ;
 
diff-tree 31e0d8728000101a68e587b3f029e1ac42d3e151 (from 38e1f2d4419d640f59ff8301b3964c9a6553ff56)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 16:39:20 2007 +0200

    add -undeclared.txt file, too

diff --git a/doc/.gitignore b/doc/.gitignore
index 03ea280..6458a86 100644
--- a/doc/.gitignore
+++ b/doc/.gitignore
@@ -15,6 +15,7 @@ swfdec-decl-list.txt
 swfdec-decl-list.txt.bak
 swfdec-decl.txt
 swfdec-decl.txt.bak
+swfdec-undeclared.txt
 swfdec-undocumented.txt
 swfdec-unused.txt
 swfdec.args
diff-tree 38e1f2d4419d640f59ff8301b3964c9a6553ff56 (from parents)
Merge: 4b43fc980d4c5e259164a74caa6f448a10f6dde6 e88bcd3f69ead176574bab53af1872da1cdd99ea
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 16:24:48 2007 +0200

    Merge branch 'master' of ssh://company@git.freedesktop.org/git/swfdec/swfdec

diff-tree 4b43fc980d4c5e259164a74caa6f448a10f6dde6 (from 4c78791e242c5cc28d1178575f615f411b5e4288)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 16:24:14 2007 +0200

    document

diff --git a/libswfdec-gtk/swfdec_gtk_keys.c b/libswfdec-gtk/swfdec_gtk_keys.c
index b192e64..69e0a6e 100644
--- a/libswfdec-gtk/swfdec_gtk_keys.c
+++ b/libswfdec-gtk/swfdec_gtk_keys.c
@@ -58,6 +58,16 @@ SWFDEC_KEY_META_R 116
 SWFDEC_KEY_MENU 117
 */
 
+/**
+ * swfdec_gtk_keycode_from_hardware_keycode:
+ * @hardware_keycode: a hardware keycode sent from the X server
+ *
+ * Tries to transform an X hardware keycode to the corresponding #SwfdecKey.
+ * This is a utility function for cases where key events need to be transformed
+ * manually.
+ *
+ * Returns: the corresponding key code as used in Flash.
+ **/
 guint
 swfdec_gtk_keycode_from_hardware_keycode (guint hardware_keycode)
 {
diff-tree 4c78791e242c5cc28d1178575f615f411b5e4288 (from 667ea6dda5f05ae4a7c1a758c9006d4b5fccd358)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 16:17:21 2007 +0200

    document the SwfdecScript object

diff --git a/libswfdec/swfdec_script.c b/libswfdec/swfdec_script.c
index 90f3e2a..0465d9d 100644
--- a/libswfdec/swfdec_script.c
+++ b/libswfdec/swfdec_script.c
@@ -27,6 +27,14 @@
 #include "swfdec_as_interpret.h"
 #include "swfdec_debug.h"
 
+/**
+ * SwfdecScript:
+ *
+ * This is the object used for code to be executed by Swfdec. Scripts are 
+ * independant from the #SwfdecAsContext they are executed in, so you can 
+ * execute the same script in multiple contexts.
+ */
+
 /* Define this to get SWFDEC_WARN'd about missing properties of objects.
  * This can be useful to find out about unimplemented native properties,
  * but usually just causes a lot of spam. */
diff-tree 667ea6dda5f05ae4a7c1a758c9006d4b5fccd358 (from 3be8531c56861fd5f813a4ebd38a436029b937e2)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 16:17:05 2007 +0200

    add SwfdecKey docs

diff --git a/libswfdec/swfdec_player.c b/libswfdec/swfdec_player.c
index 98a1086..6164de5 100644
--- a/libswfdec/swfdec_player.c
+++ b/libswfdec/swfdec_player.c
@@ -128,6 +128,12 @@
  * movie's size.
  */
 
+/**
+ * SwfdecKey:
+ *
+ * Lists all known key codes in Swfdec.
+ */
+
 /*** Timeouts ***/
 
 static SwfdecTick
diff-tree 3be8531c56861fd5f813a4ebd38a436029b937e2 (from a9fd2dfe41f7e7b7fc801e9f41ffb088eae98f1b)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 16:16:54 2007 +0200

    fix documentation

diff --git a/libswfdec/swfdec_as_debugger.c b/libswfdec/swfdec_as_debugger.c
index e0c89f8..d9f34f3 100644
--- a/libswfdec/swfdec_as_debugger.c
+++ b/libswfdec/swfdec_as_debugger.c
@@ -47,7 +47,7 @@ G_DEFINE_TYPE (SwfdecAsDebugger, swfdec_
  */
 
 /**
- * SwfdecAsDebuggerClass
+ * SwfdecAsDebuggerClass:
  * @add: Called whenever an object is added to the garbage collection engine 
  *       using swfdec_as_object_add ()
  * @remove: Called whenever an object is about to be collected by the garbage 
@@ -55,9 +55,9 @@ G_DEFINE_TYPE (SwfdecAsDebugger, swfdec_
  * @step: This function is called everytime just before a bytecode is executed 
  *        by the script engine. So it's very powerful, but can also slow down 
  *        the script engine a lot.
- * @start_frame: Called after a new #SwfdecAsFrame has been initialized and 
+ * @enter_frame: Called after a new #SwfdecAsFrame has been initialized and 
  *               pushed to the top of the execution stack.
- * @finish_frame: Called just after a #SwfdecAsFrame has been removed from the
+ * @leave_frame: Called just after a #SwfdecAsFrame has been removed from the
  *		  execution stack. The return value has not been forwarded to
  *		  the parent when this function is called.
  * @set_variable: Called whenever swfdec_as_object_set_variable() is called, 
diff --git a/libswfdec/swfdec_as_debugger.h b/libswfdec/swfdec_as_debugger.h
index ed1bf52..2e2c0e7 100644
--- a/libswfdec/swfdec_as_debugger.h
+++ b/libswfdec/swfdec_as_debugger.h
@@ -41,8 +41,10 @@ struct _SwfdecAsDebugger {
 };
 
 struct _SwfdecAsDebuggerClass {
+  /*< private >*/
   GObjectClass		object_class;
 
+  /*< public >*/
   /* a new object was added to the GC */
   void			(* add)		(SwfdecAsDebugger *	debugger,
 					 SwfdecAsContext *	context,
diff-tree a9fd2dfe41f7e7b7fc801e9f41ffb088eae98f1b (from f1b1b8fd416ed0bc2319d66aa12a08053adb4966)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 16:16:32 2007 +0200

    name the debugger section debugger, not frame and actually include it

diff --git a/doc/swfdec-docs.sgml b/doc/swfdec-docs.sgml
index 0f4c82a..a8ae8dd 100644
--- a/doc/swfdec-docs.sgml
+++ b/doc/swfdec-docs.sgml
@@ -30,5 +30,6 @@
     <xi:include href="xml/SwfdecAsArray.xml"/>
     <xi:include href="xml/SwfdecAsFunction.xml"/>
     <xi:include href="xml/SwfdecAsFrame.xml"/>
+    <xi:include href="xml/SwfdecAsDebugger.xml"/>
   </chapter>
 </book>
diff --git a/doc/swfdec-sections.txt b/doc/swfdec-sections.txt
index 5f29752..6ad2114 100644
--- a/doc/swfdec-sections.txt
+++ b/doc/swfdec-sections.txt
@@ -398,8 +398,8 @@ SWFDEC_TYPE_AS_FRAME
 </SECTION>
 
 <SECTION>
-<FILE>SwfdecAsFrame</FILE>
-<TITLE>SwfdecAsFrame</TITLE>
+<FILE>SwfdecAsDebugger</FILE>
+<TITLE>SwfdecAsDebugger</TITLE>
 SwfdecAsDebugger
 SwfdecAsDebuggerClass
 SwfdecScript
diff-tree f1b1b8fd416ed0bc2319d66aa12a08053adb4966 (from 6cb045af97e7aabf099301ad99e13be3766391c9)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 15:50:06 2007 +0200

    change function names everywhere
    
    Also add docs for the debugger vfuncs

diff --git a/libswfdec/swfdec_as_debugger.c b/libswfdec/swfdec_as_debugger.c
index eb03b5b..e0c89f8 100644
--- a/libswfdec/swfdec_as_debugger.c
+++ b/libswfdec/swfdec_as_debugger.c
@@ -52,12 +52,19 @@ G_DEFINE_TYPE (SwfdecAsDebugger, swfdec_
  *       using swfdec_as_object_add ()
  * @remove: Called whenever an object is about to be collected by the garbage 
  *          collector.
- * @step: This function is called everytime just before a bytecode is executed by 
- *        the script engine. So it's very powerful, but can also slow down the
- *        script engine a lot.
- * @start_frame:
- * @finish_frame:
- * @set_variable:
+ * @step: This function is called everytime just before a bytecode is executed 
+ *        by the script engine. So it's very powerful, but can also slow down 
+ *        the script engine a lot.
+ * @start_frame: Called after a new #SwfdecAsFrame has been initialized and 
+ *               pushed to the top of the execution stack.
+ * @finish_frame: Called just after a #SwfdecAsFrame has been removed from the
+ *		  execution stack. The return value has not been forwarded to
+ *		  the parent when this function is called.
+ * @set_variable: Called whenever swfdec_as_object_set_variable() is called, 
+ *                before actually setting the variable. This function is also
+ *                called when variables are set by internal code, not just when
+ *                interpreting scripts. It also doesn't matter if setting the 
+ *                variable will succeed. 
  *
  * The class object for the debugger. You need to override these functions to 
  * get useful functionality for the debugger.
diff --git a/libswfdec/swfdec_as_frame.c b/libswfdec/swfdec_as_frame.c
index b7cb037..52745bd 100644
--- a/libswfdec/swfdec_as_frame.c
+++ b/libswfdec/swfdec_as_frame.c
@@ -430,8 +430,8 @@ swfdec_as_frame_return (SwfdecAsFrame *f
   if (context->debugger) {
     SwfdecAsDebuggerClass *klass = SWFDEC_AS_DEBUGGER_GET_CLASS (context->debugger);
 
-    if (klass->finish_frame)
-      klass->finish_frame (context->debugger, context, frame, &retval);
+    if (klass->leave_frame)
+      klass->leave_frame (context->debugger, context, frame, &retval);
   }
   /* set return value */
   if (frame->return_value) {
@@ -704,8 +704,8 @@ out:
   if (context->debugger) {
     SwfdecAsDebuggerClass *klass = SWFDEC_AS_DEBUGGER_GET_CLASS (context->debugger);
 
-    if (klass->start_frame)
-      klass->start_frame (context->debugger, context, frame);
+    if (klass->enter_frame)
+      klass->enter_frame (context->debugger, context, frame);
   }
 }
 
diff-tree 6cb045af97e7aabf099301ad99e13be3766391c9 (from c1f8859c2a1924a2c7b35b573ee7ddb5d9dcf12e)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 15:42:53 2007 +0200

    rename "start/finish frame" to "enter/leave frame"

diff --git a/libswfdec/swfdec_as_debugger.c b/libswfdec/swfdec_as_debugger.c
index ac0c6a4..eb03b5b 100644
--- a/libswfdec/swfdec_as_debugger.c
+++ b/libswfdec/swfdec_as_debugger.c
@@ -48,13 +48,16 @@ G_DEFINE_TYPE (SwfdecAsDebugger, swfdec_
 
 /**
  * SwfdecAsDebuggerClass
+ * @add: Called whenever an object is added to the garbage collection engine 
+ *       using swfdec_as_object_add ()
+ * @remove: Called whenever an object is about to be collected by the garbage 
+ *          collector.
  * @step: This function is called everytime just before a bytecode is executed by 
  *        the script engine. So it's very powerful, but can also slow down the
  *        script engine a lot.
- * @frame_change: Called whenever the current frame changes. This happens either
- *                when calling a function or when a function call returns. The
- *                function call is called for any type of frame, even calls to
- *                native functions.
+ * @start_frame:
+ * @finish_frame:
+ * @set_variable:
  *
  * The class object for the debugger. You need to override these functions to 
  * get useful functionality for the debugger.
diff --git a/libswfdec/swfdec_as_debugger.h b/libswfdec/swfdec_as_debugger.h
index 61aaae6..ed1bf52 100644
--- a/libswfdec/swfdec_as_debugger.h
+++ b/libswfdec/swfdec_as_debugger.h
@@ -55,11 +55,11 @@ struct _SwfdecAsDebuggerClass {
   void			(* step)	(SwfdecAsDebugger *	debugger,
 					 SwfdecAsContext *	context);
   /* called after adding a frame from the function stack */
-  void			(* start_frame)	(SwfdecAsDebugger *	debugger,
+  void			(* enter_frame)	(SwfdecAsDebugger *	debugger,
 					 SwfdecAsContext *	context,
 					 SwfdecAsFrame *	frame);
   /* called after removing a frame from the function stack */
-  void			(* finish_frame)(SwfdecAsDebugger *	debugger,
+  void			(* leave_frame)	(SwfdecAsDebugger *	debugger,
 					 SwfdecAsContext *	context,
 					 SwfdecAsFrame *	frame,
 					 const SwfdecAsValue *	return_value);
diff --git a/vivified/core/vivi_breakpoint.c b/vivified/core/vivi_breakpoint.c
index 11ae4bf..423bf7f 100644
--- a/vivified/core/vivi_breakpoint.c
+++ b/vivified/core/vivi_breakpoint.c
@@ -39,19 +39,19 @@ vivi_breakpoint_step (ViviDebugger *debu
 }
 
 static gboolean
-vivi_breakpoint_start_frame (ViviDebugger *debugger, SwfdecAsFrame *frame, ViviBreakpoint *breakpoint)
+vivi_breakpoint_enter_frame (ViviDebugger *debugger, SwfdecAsFrame *frame, ViviBreakpoint *breakpoint)
 {
   SwfdecAsObject *obj = SWFDEC_AS_OBJECT (breakpoint);
   SwfdecAsValue val;
   SwfdecAsValue retval;
 
   SWFDEC_AS_VALUE_SET_OBJECT (&val, vivi_wrap_object (VIVI_APPLICATION (obj->context), SWFDEC_AS_OBJECT (frame)));
-  swfdec_as_object_call (obj, swfdec_as_context_get_string (obj->context, "onStartFrame"), 1, &val, &retval);
+  swfdec_as_object_call (obj, swfdec_as_context_get_string (obj->context, "onEnterFrame"), 1, &val, &retval);
   return swfdec_as_value_to_boolean (obj->context, &retval);
 }
 
 static gboolean
-vivi_breakpoint_finish_frame (ViviDebugger *debugger, SwfdecAsFrame *frame, const SwfdecAsValue *ret, ViviBreakpoint *breakpoint)
+vivi_breakpoint_leave_frame (ViviDebugger *debugger, SwfdecAsFrame *frame, const SwfdecAsValue *ret, ViviBreakpoint *breakpoint)
 {
   SwfdecAsObject *obj = SWFDEC_AS_OBJECT (breakpoint);
   SwfdecAsValue vals[2];
@@ -59,7 +59,7 @@ vivi_breakpoint_finish_frame (ViviDebugg
 
   SWFDEC_AS_VALUE_SET_OBJECT (&vals[0], vivi_wrap_object (VIVI_APPLICATION (obj->context), SWFDEC_AS_OBJECT (frame)));
   vivi_wrap_value (VIVI_APPLICATION (obj->context), &vals[1], ret);
-  swfdec_as_object_call (obj, swfdec_as_context_get_string (obj->context, "onStartFrame"), 2, vals, &retval);
+  swfdec_as_object_call (obj, swfdec_as_context_get_string (obj->context, "onLeaveFrame"), 2, vals, &retval);
   return swfdec_as_value_to_boolean (obj->context, &retval);
 }
 
@@ -85,8 +85,8 @@ static const struct {
 } events[] = {
   { NULL, NULL, NULL }, /* invalid */
   { "onCommand", "step", G_CALLBACK (vivi_breakpoint_step) },
-  { "onStartFrame", "start-frame", G_CALLBACK (vivi_breakpoint_start_frame) },
-  { "onExitFrame", "finish-frame", G_CALLBACK (vivi_breakpoint_finish_frame) },
+  { "onEnterFrame", "enter-frame", G_CALLBACK (vivi_breakpoint_enter_frame) },
+  { "onLeaveFrame", "leave-frame", G_CALLBACK (vivi_breakpoint_leave_frame) },
   { "onSetVariable", "set-variable", G_CALLBACK (vivi_breakpoint_set_variable) }
 };
 
diff --git a/vivified/core/vivi_debugger.c b/vivified/core/vivi_debugger.c
index 68a7b89..b65392f 100644
--- a/vivified/core/vivi_debugger.c
+++ b/vivified/core/vivi_debugger.c
@@ -31,8 +31,8 @@ enum {
   ADD,
   REMOVE,
   STEP,
-  START_FRAME,
-  FINISH_FRAME,
+  ENTER_FRAME,
+  LEAVE_FRAME,
   SET_VARIABLE,
   LAST_SIGNAL
 };
@@ -133,23 +133,23 @@ vivi_debugger_step (SwfdecAsDebugger *de
 }
 
 static void
-vivi_debugger_start_frame (SwfdecAsDebugger *debugger, SwfdecAsContext *context, SwfdecAsFrame *frame)
+vivi_debugger_enter_frame (SwfdecAsDebugger *debugger, SwfdecAsContext *context, SwfdecAsFrame *frame)
 {
   gboolean retval = FALSE;
 
-  g_signal_emit (debugger, signals[START_FRAME], 0, frame, &retval);
+  g_signal_emit (debugger, signals[ENTER_FRAME], 0, frame, &retval);
 
   if (retval)
     vivi_debugger_break (VIVI_DEBUGGER (debugger));
 }
 
 static void
-vivi_debugger_finish_frame (SwfdecAsDebugger *debugger, SwfdecAsContext *context, 
+vivi_debugger_leave_frame (SwfdecAsDebugger *debugger, SwfdecAsContext *context, 
     SwfdecAsFrame *frame, const SwfdecAsValue *ret)
 {
   gboolean retval = FALSE;
 
-  g_signal_emit (debugger, signals[FINISH_FRAME], 0, frame, ret, &retval);
+  g_signal_emit (debugger, signals[LEAVE_FRAME], 0, frame, ret, &retval);
 
   if (retval)
     vivi_debugger_break (VIVI_DEBUGGER (debugger));
@@ -184,10 +184,10 @@ vivi_debugger_class_init (ViviDebuggerCl
   signals[STEP] = g_signal_new ("step", G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST, 0, vivi_accumulate_or, NULL, vivi_marshal_BOOLEAN__VOID,
       G_TYPE_BOOLEAN, 0);
-  signals[START_FRAME] = g_signal_new ("start-frame", G_TYPE_FROM_CLASS (klass),
+  signals[ENTER_FRAME] = g_signal_new ("enter-frame", G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST, 0, vivi_accumulate_or, NULL, vivi_marshal_BOOLEAN__OBJECT,
       G_TYPE_BOOLEAN, 1, SWFDEC_TYPE_AS_FRAME);
-  signals[FINISH_FRAME] = g_signal_new ("finish-frame", G_TYPE_FROM_CLASS (klass),
+  signals[LEAVE_FRAME] = g_signal_new ("leave-frame", G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST, 0, vivi_accumulate_or, NULL, vivi_marshal_BOOLEAN__OBJECT_POINTER,
       G_TYPE_BOOLEAN, 2, SWFDEC_TYPE_AS_FRAME, G_TYPE_POINTER);
   signals[SET_VARIABLE] = g_signal_new ("set-variable", G_TYPE_FROM_CLASS (klass),
@@ -197,8 +197,8 @@ vivi_debugger_class_init (ViviDebuggerCl
   debugger_class->add = vivi_debugger_add;
   debugger_class->remove = vivi_debugger_remove;
   debugger_class->step = vivi_debugger_step;
-  debugger_class->start_frame = vivi_debugger_start_frame;
-  debugger_class->finish_frame = vivi_debugger_finish_frame;
+  debugger_class->enter_frame = vivi_debugger_enter_frame;
+  debugger_class->leave_frame = vivi_debugger_leave_frame;
   debugger_class->set_variable = vivi_debugger_set_variable;
 }
 
diff --git a/vivified/core/vivi_initialize.as b/vivified/core/vivi_initialize.as
index 8245fb1..a6537bf 100644
--- a/vivified/core/vivi_initialize.as
+++ b/vivified/core/vivi_initialize.as
@@ -76,7 +76,7 @@ Commands.add = function (name) {
     return undefined;
   }
   var ret = new Breakpoint ();
-  ret.onStartFrame = function (frame) {
+  ret.onEnterFrame = function (frame) {
     if (frame.name != name)
       return false;
 
diff-tree c1f8859c2a1924a2c7b35b573ee7ddb5d9dcf12e (from ce43b8df731dc8a0be767f5ff04d932003fa0d6f)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 14:25:56 2007 +0200

    that function is gone now

diff --git a/doc/swfdec-sections.txt b/doc/swfdec-sections.txt
index b6270bd..5f29752 100644
--- a/doc/swfdec-sections.txt
+++ b/doc/swfdec-sections.txt
@@ -349,7 +349,6 @@ SWFDEC_TYPE_AS_ARRAY
 SwfdecAsFunction
 SwfdecAsNative
 SwfdecAsNativeFunction
-swfdec_as_function_create
 swfdec_as_function_call
 swfdec_as_native_function_new
 swfdec_as_native_function_set_construct_type
diff-tree ce43b8df731dc8a0be767f5ff04d932003fa0d6f (from 0a375ca269392d9c4d0516bdaaef260871f6dca6)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 14:25:41 2007 +0200

    doc fixes

diff --git a/libswfdec/swfdec_as_object.c b/libswfdec/swfdec_as_object.c
index 452015e..3fa05a0 100644
--- a/libswfdec/swfdec_as_object.c
+++ b/libswfdec/swfdec_as_object.c
@@ -563,7 +563,7 @@ swfdec_as_object_collect (SwfdecAsObject
  * swfdec_as_object_set_variable_and_flags()
  **/
 /**
- * swfdec_as_object_set_variable:
+ * swfdec_as_object_set_variable_and_flags:
  * @object: a #SwfdecAsObject
  * @variable: garbage-collected name of the variable to set
  * @value: value to set the variable to
@@ -790,7 +790,7 @@ swfdec_as_object_add_function (SwfdecAsO
 }
 
 /**
- * swfdec_as_object_add_function:
+ * swfdec_as_object_add_constructor:
  * @object: a #SwfdecAsObject
  * @name: name of the function. The string does not have to be 
  *        garbage-collected.
diff-tree 0a375ca269392d9c4d0516bdaaef260871f6dca6 (from 73db1b2434693bb90e61ed2655f3d6a4e07fdeac)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 13:42:07 2007 +0200

    get rid of unused symbols

diff --git a/doc/Makefile.am b/doc/Makefile.am
index 73c9cee..8f36b20 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -99,6 +99,7 @@ IGNORE_HFILES= \
 	swfdec_interval.h \
 	swfdec_js.h \
 	swfdec_listener.h \
+	swfdec_load_object.h \
 	swfdec_loader_internal.h \
 	swfdec_loadertarget.h \
 	swfdec_marshal.h \
@@ -114,6 +115,7 @@ IGNORE_HFILES= \
 	swfdec_root_movie.h \
 	swfdec_root_sprite.h \
 	swfdec_script.h \
+	swfdec_script_internal.h \
 	swfdec_scriptable.h \
 	swfdec_shape.h \
 	swfdec_sound.h \
diff --git a/doc/swfdec-sections.txt b/doc/swfdec-sections.txt
index 019380c..b6270bd 100644
--- a/doc/swfdec-sections.txt
+++ b/doc/swfdec-sections.txt
@@ -140,6 +140,7 @@ swfdec_buffer_queue_get_type
 <FILE>Enumerations</FILE>
 <TITLE>Enumerations</TITLE>
 SwfdecAsContextState
+SwfdecAsDeleteReturn
 SwfdecLoaderDataType
 SwfdecLoaderRequest
 swfdec_loader_data_type_get_extension
@@ -186,6 +187,7 @@ swfdec_gtk_widget_get_renderer
 swfdec_gtk_widget_uses_renderer
 swfdec_gtk_widget_set_renderer
 swfdec_gtk_widget_unset_renderer
+swfdec_gtk_keycode_from_hardware_keycode
 <SUBSECTION Standard>
 swfdec_gtk_widget_get_type
 SwfdecGtkWidgetClass
@@ -298,6 +300,7 @@ SwfdecAsVariableFlag
 swfdec_as_object_get_variable
 swfdec_as_object_get_variable_and_flags
 swfdec_as_object_set_variable
+swfdec_as_object_set_variable_and_flags
 swfdec_as_object_add_variable
 swfdec_as_object_set_variable_flags
 swfdec_as_object_unset_variable_flags
@@ -305,8 +308,10 @@ swfdec_as_object_delete_variable
 SwfdecAsVariableForeach
 swfdec_as_object_foreach
 swfdec_as_object_has_function
+swfdec_as_object_run
 swfdec_as_object_call
 swfdec_as_object_add_function
+swfdec_as_object_add_constructor
 swfdec_as_object_get_debug
 swfdec_as_object_resolve
 <SUBSECTION Standard>
@@ -392,3 +397,19 @@ SWFDEC_IS_AS_FRAME
 SWFDEC_IS_AS_FRAME_CLASS
 SWFDEC_TYPE_AS_FRAME
 </SECTION>
+
+<SECTION>
+<FILE>SwfdecAsFrame</FILE>
+<TITLE>SwfdecAsFrame</TITLE>
+SwfdecAsDebugger
+SwfdecAsDebuggerClass
+SwfdecScript
+<SUBSECTION Standard>
+swfdec_as_debugger_get_type
+SWFDEC_AS_DEBUGGER
+SWFDEC_AS_DEBUGGER_CLASS
+SWFDEC_AS_DEBUGGER_GET_CLASS
+SWFDEC_IS_AS_DEBUGGER
+SWFDEC_IS_AS_DEBUGGER_CLASS
+SWFDEC_TYPE_AS_DEBUGGER
+</SECTION>
diff-tree 73db1b2434693bb90e61ed2655f3d6a4e07fdeac (from 7046db0047d85395dce2ececee97f82ebc4181f2)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 13:31:32 2007 +0200

    swfdec_xml_as.[ch] => swfdec_xml.[ch]
    
    _as files are supposed to contain native script functions exclusively

diff --git a/libswfdec/Makefile.am b/libswfdec/Makefile.am
index e919822..0555968 100644
--- a/libswfdec/Makefile.am
+++ b/libswfdec/Makefile.am
@@ -110,7 +110,7 @@ libswfdec_ at SWFDEC_MAJORMINOR@_la_SOURCES
 	swfdec_video.c \
 	swfdec_video_movie.c \
 	swfdec_video_movie_as.c \
-	swfdec_xml_as.c
+	swfdec_xml.c
 
 libswfdec_ at SWFDEC_MAJORMINOR@_la_CFLAGS = \
 	$(GLOBAL_CFLAGS) $(CAIRO_CFLAGS) $(GLIB_CFLAGS) $(PANGO_CFLAGS) \
@@ -217,7 +217,7 @@ noinst_HEADERS = \
 	swfdec_utils.h \
 	swfdec_video.h \
 	swfdec_video_movie.h \
-	swfdec_xml_as.h
+	swfdec_xml.h
 
 EXTRA_DIST = \
 	compiler.c \
diff --git a/libswfdec/swfdec_xml.c b/libswfdec/swfdec_xml.c
new file mode 100644
index 0000000..1b1b657
--- /dev/null
+++ b/libswfdec/swfdec_xml.c
@@ -0,0 +1,67 @@
+/* Swfdec
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, 
+ * Boston, MA  02110-1301  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "swfdec_xml.h"
+#include "swfdec_as_native_function.h"
+#include "swfdec_as_object.h"
+#include "swfdec_as_strings.h"
+#include "swfdec_debug.h"
+#include "swfdec_internal.h"
+#include "swfdec_player_internal.h"
+
+G_DEFINE_TYPE (SwfdecXml, swfdec_xml, SWFDEC_TYPE_AS_OBJECT)
+
+static void
+swfdec_xml_class_init (SwfdecXmlClass *klass)
+{
+}
+
+static void
+swfdec_xml_init (SwfdecXml *xml)
+{
+}
+
+void
+swfdec_xml_init_context (SwfdecPlayer *player, guint version)
+{
+  SwfdecAsContext *context;
+  SwfdecAsObject *xml, *proto;
+  SwfdecAsValue val;
+
+  g_return_if_fail (SWFDEC_IS_PLAYER (player));
+
+  context = SWFDEC_AS_CONTEXT (player);
+  proto = swfdec_as_object_new_empty (context);
+  if (proto == NULL)
+    return;
+  xml = SWFDEC_AS_OBJECT (swfdec_as_object_add_constructor (context->global, 
+      SWFDEC_AS_STR_XML, 0, SWFDEC_TYPE_XML, NULL, 0, proto));
+  if (xml == NULL)
+    return;
+  /* set the right properties on the NetStream.prototype object */
+  SWFDEC_AS_VALUE_SET_OBJECT (&val, xml);
+  swfdec_as_object_set_variable (proto, SWFDEC_AS_STR_constructor, &val);
+  SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Object_prototype);
+  swfdec_as_object_set_variable (proto, SWFDEC_AS_STR___proto__, &val);
+}
+
diff --git a/libswfdec/swfdec_xml.h b/libswfdec/swfdec_xml.h
new file mode 100644
index 0000000..1681a8f
--- /dev/null
+++ b/libswfdec/swfdec_xml.h
@@ -0,0 +1,51 @@
+/* Swfdec
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *		 2007 Pekka Lampila <pekka.lampila at iki.fi>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, 
+ * Boston, MA  02110-1301  USA
+ */
+
+#ifndef _SWFDEC_XML_H_
+#define _SWFDEC_XML_H_
+
+#include <libswfdec/swfdec_as_object.h>
+#include <libswfdec/swfdec_types.h>
+#include <libswfdec/swfdec_script.h>
+
+G_BEGIN_DECLS
+
+typedef struct _SwfdecXml SwfdecXml;
+typedef struct _SwfdecXmlClass SwfdecXmlClass;
+
+#define SWFDEC_TYPE_XML                    (swfdec_xml_get_type())
+#define SWFDEC_IS_XML(obj)                 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWFDEC_TYPE_XML))
+#define SWFDEC_IS_XML_CLASS(klass)         (G_TYPE_CHECK_CLASS_TYPE ((klass), SWFDEC_TYPE_XML))
+#define SWFDEC_XML(obj)                    (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWFDEC_TYPE_XML, SwfdecXml))
+#define SWFDEC_XML_CLASS(klass)            (G_TYPE_CHECK_CLASS_CAST ((klass), SWFDEC_TYPE_XML, SwfdecXmlClass))
+#define SWFDEC_XML_GET_CLASS(obj)          (G_TYPE_INSTANCE_GET_CLASS ((obj), SWFDEC_TYPE_XML, SwfdecXmlClass))
+
+struct _SwfdecXml {
+  SwfdecAsObject	object;
+};
+
+struct _SwfdecXmlClass {
+  SwfdecAsObjectClass	object_class;
+};
+
+GType		swfdec_xml_get_type	(void);
+
+G_END_DECLS
+#endif
diff --git a/libswfdec/swfdec_xml_as.c b/libswfdec/swfdec_xml_as.c
deleted file mode 100644
index 76e420d..0000000
--- a/libswfdec/swfdec_xml_as.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Swfdec
- * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, 
- * Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "swfdec_xml_as.h"
-#include "swfdec_as_native_function.h"
-#include "swfdec_as_object.h"
-#include "swfdec_as_strings.h"
-#include "swfdec_debug.h"
-#include "swfdec_internal.h"
-#include "swfdec_player_internal.h"
-
-G_DEFINE_TYPE (SwfdecXml, swfdec_xml, SWFDEC_TYPE_AS_OBJECT)
-
-static void
-swfdec_xml_class_init (SwfdecXmlClass *klass)
-{
-}
-
-static void
-swfdec_xml_init (SwfdecXml *xml)
-{
-}
-
-void
-swfdec_xml_init_context (SwfdecPlayer *player, guint version)
-{
-  SwfdecAsContext *context;
-  SwfdecAsObject *xml, *proto;
-  SwfdecAsValue val;
-
-  g_return_if_fail (SWFDEC_IS_PLAYER (player));
-
-  context = SWFDEC_AS_CONTEXT (player);
-  proto = swfdec_as_object_new_empty (context);
-  if (proto == NULL)
-    return;
-  xml = SWFDEC_AS_OBJECT (swfdec_as_object_add_constructor (context->global, 
-      SWFDEC_AS_STR_XML, 0, SWFDEC_TYPE_XML, NULL, 0, proto));
-  if (xml == NULL)
-    return;
-  /* set the right properties on the NetStream.prototype object */
-  SWFDEC_AS_VALUE_SET_OBJECT (&val, xml);
-  swfdec_as_object_set_variable (proto, SWFDEC_AS_STR_constructor, &val);
-  SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Object_prototype);
-  swfdec_as_object_set_variable (proto, SWFDEC_AS_STR___proto__, &val);
-}
-
diff --git a/libswfdec/swfdec_xml_as.h b/libswfdec/swfdec_xml_as.h
deleted file mode 100644
index 1681a8f..0000000
--- a/libswfdec/swfdec_xml_as.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Swfdec
- * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
- *		 2007 Pekka Lampila <pekka.lampila at iki.fi>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, 
- * Boston, MA  02110-1301  USA
- */
-
-#ifndef _SWFDEC_XML_H_
-#define _SWFDEC_XML_H_
-
-#include <libswfdec/swfdec_as_object.h>
-#include <libswfdec/swfdec_types.h>
-#include <libswfdec/swfdec_script.h>
-
-G_BEGIN_DECLS
-
-typedef struct _SwfdecXml SwfdecXml;
-typedef struct _SwfdecXmlClass SwfdecXmlClass;
-
-#define SWFDEC_TYPE_XML                    (swfdec_xml_get_type())
-#define SWFDEC_IS_XML(obj)                 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWFDEC_TYPE_XML))
-#define SWFDEC_IS_XML_CLASS(klass)         (G_TYPE_CHECK_CLASS_TYPE ((klass), SWFDEC_TYPE_XML))
-#define SWFDEC_XML(obj)                    (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWFDEC_TYPE_XML, SwfdecXml))
-#define SWFDEC_XML_CLASS(klass)            (G_TYPE_CHECK_CLASS_CAST ((klass), SWFDEC_TYPE_XML, SwfdecXmlClass))
-#define SWFDEC_XML_GET_CLASS(obj)          (G_TYPE_INSTANCE_GET_CLASS ((obj), SWFDEC_TYPE_XML, SwfdecXmlClass))
-
-struct _SwfdecXml {
-  SwfdecAsObject	object;
-};
-
-struct _SwfdecXmlClass {
-  SwfdecAsObjectClass	object_class;
-};
-
-GType		swfdec_xml_get_type	(void);
-
-G_END_DECLS
-#endif
diff-tree 7046db0047d85395dce2ececee97f82ebc4181f2 (from 8cccc48b18fd2f3ccdb6279a865f9252f6e6d16a)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 13:27:52 2007 +0200

    get rid of swfdec_load_object_as.h
    
    THe stuff it was needed for is now done by the initialize script

diff --git a/libswfdec/Makefile.am b/libswfdec/Makefile.am
index 1e5e8a5..e919822 100644
--- a/libswfdec/Makefile.am
+++ b/libswfdec/Makefile.am
@@ -191,7 +191,6 @@ noinst_HEADERS = \
 	swfdec_internal.h \
 	swfdec_interval.h \
 	swfdec_load_object.h \
-	swfdec_load_object_as.h \
 	swfdec_loader_internal.h \
 	swfdec_loadertarget.h \
 	swfdec_marshal.h \
diff --git a/libswfdec/swfdec_initialize.as b/libswfdec/swfdec_initialize.as
index 502942e..f347a5f 100644
--- a/libswfdec/swfdec_initialize.as
+++ b/libswfdec/swfdec_initialize.as
@@ -123,6 +123,10 @@ LoadVars.prototype.getBytesTotal = funct
 
 ASSetPropFlags(LoadVars.prototype, null, 131);
 
+/*** XML ***/
+
+XML.prototype.load = ASnative (301, 0);
+
 /*** OH THE HUMANITY ***/
 
 o = null;
diff --git a/libswfdec/swfdec_initialize.h b/libswfdec/swfdec_initialize.h
index 7d5b5a0..8b74657 100644
--- a/libswfdec/swfdec_initialize.h
+++ b/libswfdec/swfdec_initialize.h
@@ -2,7 +2,7 @@
 
 /* compiled from swfdec_initialize.as */
 const unsigned char swfdec_initialize[] = {
-  0x88, 0x64, 0x02, 0x42,  0x00, 0x41, 0x53, 0x53,  0x65, 0x74, 0x4E, 0x61,  0x74, 0x69, 0x76, 0x65,
+  0x88, 0x68, 0x02, 0x43,  0x00, 0x41, 0x53, 0x53,  0x65, 0x74, 0x4E, 0x61,  0x74, 0x69, 0x76, 0x65,
   0x00, 0x41, 0x53, 0x6E,  0x61, 0x74, 0x69, 0x76,  0x65, 0x00, 0x41, 0x53,  0x53, 0x65, 0x74, 0x4E,
   0x61, 0x74, 0x69, 0x76,  0x65, 0x41, 0x63, 0x63,  0x65, 0x73, 0x73, 0x6F,  0x72, 0x00, 0x41, 0x73,
   0x42, 0x72, 0x6F, 0x61,  0x64, 0x63, 0x61, 0x73,  0x74, 0x65, 0x72, 0x00,  0x62, 0x72, 0x6F, 0x61,
@@ -40,100 +40,102 @@ const unsigned char swfdec_initialize[] 
   0x00, 0x67, 0x65, 0x74,  0x42, 0x79, 0x74, 0x65,  0x73, 0x4C, 0x6F, 0x61,  0x64, 0x65, 0x64, 0x00,
   0x5F, 0x62, 0x79, 0x74,  0x65, 0x73, 0x4C, 0x6F,  0x61, 0x64, 0x65, 0x64,  0x00, 0x67, 0x65, 0x74,
   0x42, 0x79, 0x74, 0x65,  0x73, 0x54, 0x6F, 0x74,  0x61, 0x6C, 0x00, 0x5F,  0x62, 0x79, 0x74, 0x65,
-  0x73, 0x54, 0x6F, 0x74,  0x61, 0x6C, 0x00, 0x9B,  0x12, 0x00, 0x41, 0x73,  0x42, 0x72, 0x6F, 0x61,
-  0x64, 0x63, 0x61, 0x73,  0x74, 0x65, 0x72, 0x00,  0x00, 0x00, 0x00, 0x00,  0x9B, 0x0D, 0x00, 0x4C,
-  0x6F, 0x61, 0x64, 0x56,  0x61, 0x72, 0x73, 0x00,  0x00, 0x00, 0x00, 0x00,  0x96, 0x13, 0x00, 0x08,
-  0x00, 0x07, 0x00, 0x00,  0x00, 0x00, 0x07, 0x04,  0x00, 0x00, 0x00, 0x07,  0x02, 0x00, 0x00, 0x00,
-  0x08, 0x01, 0x3D, 0x1D,  0x96, 0x13, 0x00, 0x08,  0x02, 0x07, 0x01, 0x00,  0x00, 0x00, 0x07, 0x04,
-  0x00, 0x00, 0x00, 0x07,  0x02, 0x00, 0x00, 0x00,  0x08, 0x01, 0x3D, 0x1D,  0x96, 0x02, 0x00, 0x08,
-  0x03, 0x1C, 0x96, 0x13,  0x00, 0x08, 0x04, 0x07,  0x0C, 0x00, 0x00, 0x00,  0x07, 0x65, 0x00, 0x00,
-  0x00, 0x07, 0x02, 0x00,  0x00, 0x00, 0x08, 0x01,  0x3D, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x03, 0x1C,
-  0x96, 0x02, 0x00, 0x08,  0x05, 0x9B, 0x07, 0x00,  0x00, 0x01, 0x00, 0x78,  0x00, 0x3C, 0x00, 0x96,
-  0x02, 0x00, 0x08, 0x07,  0x1C, 0x96, 0x07, 0x00,  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x06, 0x1C,
-  0x96, 0x02, 0x00, 0x08,  0x08, 0x52, 0x17, 0x96,  0x02, 0x00, 0x08, 0x07,  0x1C, 0x96, 0x07, 0x00,
-  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x06, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x09, 0x4E, 0x96, 0x02,
-  0x00, 0x08, 0x0A, 0x52,  0x17, 0x96, 0x02, 0x00,  0x05, 0x01, 0x3E, 0x4F,  0x96, 0x02, 0x00, 0x08,
-  0x03, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x08, 0x9B,  0x07, 0x00, 0x00, 0x01,  0x00, 0x78, 0x00, 0x8F,
-  0x00, 0x96, 0x04, 0x00,  0x08, 0x0B, 0x08, 0x06,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x09, 0x4E, 0x3C,
-  0x96, 0x02, 0x00, 0x08,  0x0C, 0x41, 0x96, 0x07,  0x00, 0x08, 0x0C, 0x07,  0x00, 0x00, 0x00, 0x00,
-  0x3C, 0x99, 0x02, 0x00,  0x09, 0x00, 0x96, 0x02,  0x00, 0x08, 0x0C, 0x4C,  0x1C, 0x50, 0x1D, 0x96,
-  0x02, 0x00, 0x08, 0x0C,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x0B, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x0D,
-  0x4E, 0x48, 0x12, 0x9D,  0x02, 0x00, 0x42, 0x00,  0x96, 0x02, 0x00, 0x08,  0x0B, 0x1C, 0x96, 0x02,
-  0x00, 0x08, 0x0C, 0x1C,  0x4E, 0x96, 0x02, 0x00,  0x08, 0x07, 0x1C, 0x49,  0x12, 0x9D, 0x02, 0x00,
-  0x23, 0x00, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x0C,  0x1C, 0x96, 0x07, 0x00,
-  0x07, 0x02, 0x00, 0x00,  0x00, 0x08, 0x0B, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x0E, 0x52, 0x17, 0x96,
-  0x02, 0x00, 0x05, 0x01,  0x3E, 0x99, 0x02, 0x00,  0x9C, 0xFF, 0x96, 0x02,  0x00, 0x05, 0x00, 0x3E,
-  0x4F, 0x96, 0x02, 0x00,  0x08, 0x03, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x0F,  0x9B, 0x07, 0x00, 0x00,
-  0x01, 0x00, 0x6F, 0x00,  0x75, 0x00, 0x96, 0x02,  0x00, 0x08, 0x10, 0x1C,  0x96, 0x13, 0x00, 0x08,
-  0x04, 0x07, 0x0C, 0x00,  0x00, 0x00, 0x07, 0x65,  0x00, 0x00, 0x00, 0x07,  0x02, 0x00, 0x00, 0x00,
-  0x08, 0x01, 0x3D, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x10, 0x1C, 0x96, 0x04,  0x00, 0x08, 0x05, 0x08,
-  0x03, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x05, 0x4E,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x10, 0x1C, 0x96,
-  0x04, 0x00, 0x08, 0x08,  0x08, 0x03, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x08,  0x4E, 0x4F, 0x96, 0x02,
-  0x00, 0x08, 0x10, 0x1C,  0x96, 0x09, 0x00, 0x08,  0x09, 0x07, 0x00, 0x00,  0x00, 0x00, 0x08, 0x11,
-  0x40, 0x4F, 0x96, 0x09,  0x00, 0x07, 0x83, 0x00,  0x00, 0x00, 0x08, 0x12,  0x08, 0x10, 0x1C, 0x96,
-  0x07, 0x00, 0x07, 0x03,  0x00, 0x00, 0x00, 0x08,  0x13, 0x3D, 0x17, 0x4F,  0x96, 0x08, 0x00, 0x07,
-  0x83, 0x00, 0x00, 0x00,  0x02, 0x08, 0x03, 0x1C,  0x96, 0x07, 0x00, 0x07,  0x03, 0x00, 0x00, 0x00,
-  0x08, 0x13, 0x3D, 0x17,  0x96, 0x8C, 0x00, 0x08,  0x14, 0x08, 0x15, 0x07,  0x12, 0x00, 0x00, 0x00,
-  0x08, 0x16, 0x07, 0x08,  0x00, 0x00, 0x00, 0x08,  0x17, 0x07, 0x14, 0x00,  0x00, 0x00, 0x08, 0x18,
-  0x07, 0x11, 0x00, 0x00,  0x00, 0x08, 0x19, 0x07,  0x2E, 0x00, 0x00, 0x00,  0x08, 0x1A, 0x07, 0x28,
-  0x00, 0x00, 0x00, 0x08,  0x1B, 0x07, 0x23, 0x00,  0x00, 0x00, 0x08, 0x1C,  0x07, 0x0D, 0x00, 0x00,
-  0x00, 0x08, 0x1D, 0x07,  0x1B, 0x00, 0x00, 0x00,  0x08, 0x1E, 0x07, 0x24,  0x00, 0x00, 0x00, 0x08,
-  0x1F, 0x07, 0x2D, 0x00,  0x00, 0x00, 0x08, 0x20,  0x07, 0x25, 0x00, 0x00,  0x00, 0x08, 0x21, 0x07,
-  0x22, 0x00, 0x00, 0x00,  0x08, 0x22, 0x07, 0x21,  0x00, 0x00, 0x00, 0x08,  0x23, 0x07, 0x27, 0x00,
-  0x00, 0x00, 0x08, 0x24,  0x07, 0x10, 0x00, 0x00,  0x00, 0x08, 0x25, 0x07,  0x20, 0x00, 0x00, 0x00,
-  0x08, 0x26, 0x07, 0x09,  0x00, 0x00, 0x00, 0x08,  0x27, 0x07, 0x26, 0x00,  0x00, 0x00, 0x07, 0x13,
-  0x00, 0x00, 0x00, 0x43,  0x1D, 0x96, 0x09, 0x00,  0x08, 0x28, 0x07, 0x20,  0x03, 0x00, 0x00, 0x08,
-  0x14, 0x1C, 0x96, 0x07,  0x00, 0x07, 0x03, 0x00,  0x00, 0x00, 0x08, 0x00,  0x3D, 0x17, 0x96, 0x02,
-  0x00, 0x08, 0x14, 0x1C,  0x96, 0x07, 0x00, 0x07,  0x01, 0x00, 0x00, 0x00,  0x08, 0x03, 0x1C, 0x96,
-  0x02, 0x00, 0x08, 0x0F,  0x52, 0x17, 0x96, 0x08,  0x00, 0x07, 0x07, 0x00,  0x00, 0x00, 0x02, 0x08,
-  0x14, 0x1C, 0x96, 0x07,  0x00, 0x07, 0x03, 0x00,  0x00, 0x00, 0x08, 0x13,  0x3D, 0x17, 0x96, 0x09,
-  0x00, 0x08, 0x29, 0x07,  0x00, 0x00, 0x00, 0x00,  0x08, 0x2A, 0x40, 0x1D,  0x96, 0x02, 0x00, 0x08,
-  0x29, 0x1C, 0x96, 0x13,  0x00, 0x08, 0x2B, 0x07,  0x00, 0x00, 0x00, 0x00,  0x07, 0x05, 0x00, 0x00,
-  0x00, 0x07, 0x02, 0x00,  0x00, 0x00, 0x08, 0x01,  0x3D, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x29, 0x1C,
-  0x96, 0x13, 0x00, 0x08,  0x2C, 0x07, 0x01, 0x00,  0x00, 0x00, 0x07, 0x05,  0x00, 0x00, 0x00, 0x07,
-  0x02, 0x00, 0x00, 0x00,  0x08, 0x01, 0x3D, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x29, 0x1C, 0x96, 0x07,
-  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x03,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x0F, 0x52, 0x17,
-  0x96, 0x08, 0x00, 0x07,  0x07, 0x00, 0x00, 0x00,  0x02, 0x08, 0x29, 0x1C,  0x96, 0x07, 0x00, 0x07,
-  0x03, 0x00, 0x00, 0x00,  0x08, 0x13, 0x3D, 0x17,  0x96, 0x09, 0x00, 0x08,  0x2D, 0x07, 0x00, 0x00,
-  0x00, 0x00, 0x08, 0x2A,  0x40, 0x1D, 0x96, 0x02,  0x00, 0x08, 0x2D, 0x1C,  0x96, 0x07, 0x00, 0x07,
-  0x01, 0x00, 0x00, 0x00,  0x08, 0x03, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x0F,  0x52, 0x17, 0x96, 0x0E,
-  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x2E,  0x07, 0x9A, 0x02, 0x00,  0x00, 0x08, 0x2D, 0x1C,
-  0x96, 0x07, 0x00, 0x07,  0x04, 0x00, 0x00, 0x00,  0x08, 0x02, 0x3D, 0x17,  0x96, 0x02, 0x00, 0x08,
-  0x2F, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x30, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x31, 0x08, 0x32, 0x4F,
-  0x96, 0x02, 0x00, 0x08,  0x2F, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x30, 0x4E,  0x96, 0x13, 0x00, 0x08,
-  0x33, 0x07, 0x00, 0x00,  0x00, 0x00, 0x07, 0x2D,  0x01, 0x00, 0x00, 0x07,  0x02, 0x00, 0x00, 0x00,
-  0x08, 0x01, 0x3D, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x2F, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x30, 0x4E,
-  0x96, 0x13, 0x00, 0x08,  0x34, 0x07, 0x03, 0x00,  0x00, 0x00, 0x07, 0x2D,  0x01, 0x00, 0x00, 0x07,
+  0x73, 0x54, 0x6F, 0x74,  0x61, 0x6C, 0x00, 0x58,  0x4D, 0x4C, 0x00, 0x9B,  0x12, 0x00, 0x41, 0x73,
+  0x42, 0x72, 0x6F, 0x61,  0x64, 0x63, 0x61, 0x73,  0x74, 0x65, 0x72, 0x00,  0x00, 0x00, 0x00, 0x00,
+  0x9B, 0x0D, 0x00, 0x4C,  0x6F, 0x61, 0x64, 0x56,  0x61, 0x72, 0x73, 0x00,  0x00, 0x00, 0x00, 0x00,
+  0x96, 0x13, 0x00, 0x08,  0x00, 0x07, 0x00, 0x00,  0x00, 0x00, 0x07, 0x04,  0x00, 0x00, 0x00, 0x07,
+  0x02, 0x00, 0x00, 0x00,  0x08, 0x01, 0x3D, 0x1D,  0x96, 0x13, 0x00, 0x08,  0x02, 0x07, 0x01, 0x00,
+  0x00, 0x00, 0x07, 0x04,  0x00, 0x00, 0x00, 0x07,  0x02, 0x00, 0x00, 0x00,  0x08, 0x01, 0x3D, 0x1D,
+  0x96, 0x02, 0x00, 0x08,  0x03, 0x1C, 0x96, 0x13,  0x00, 0x08, 0x04, 0x07,  0x0C, 0x00, 0x00, 0x00,
+  0x07, 0x65, 0x00, 0x00,  0x00, 0x07, 0x02, 0x00,  0x00, 0x00, 0x08, 0x01,  0x3D, 0x4F, 0x96, 0x02,
+  0x00, 0x08, 0x03, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x05, 0x9B, 0x07, 0x00,  0x00, 0x01, 0x00, 0x78,
+  0x00, 0x3C, 0x00, 0x96,  0x02, 0x00, 0x08, 0x07,  0x1C, 0x96, 0x07, 0x00,  0x07, 0x01, 0x00, 0x00,
+  0x00, 0x08, 0x06, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x08, 0x52, 0x17, 0x96,  0x02, 0x00, 0x08, 0x07,
+  0x1C, 0x96, 0x07, 0x00,  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x06, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x09, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x0A, 0x52,  0x17, 0x96, 0x02, 0x00,  0x05, 0x01, 0x3E, 0x4F,
+  0x96, 0x02, 0x00, 0x08,  0x03, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x08, 0x9B,  0x07, 0x00, 0x00, 0x01,
+  0x00, 0x78, 0x00, 0x8F,  0x00, 0x96, 0x04, 0x00,  0x08, 0x0B, 0x08, 0x06,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x09, 0x4E, 0x3C,  0x96, 0x02, 0x00, 0x08,  0x0C, 0x41, 0x96, 0x07,  0x00, 0x08, 0x0C, 0x07,
+  0x00, 0x00, 0x00, 0x00,  0x3C, 0x99, 0x02, 0x00,  0x09, 0x00, 0x96, 0x02,  0x00, 0x08, 0x0C, 0x4C,
+  0x1C, 0x50, 0x1D, 0x96,  0x02, 0x00, 0x08, 0x0C,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x0B, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x0D,  0x4E, 0x48, 0x12, 0x9D,  0x02, 0x00, 0x42, 0x00,  0x96, 0x02, 0x00, 0x08,
+  0x0B, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x0C, 0x1C,  0x4E, 0x96, 0x02, 0x00,  0x08, 0x07, 0x1C, 0x49,
+  0x12, 0x9D, 0x02, 0x00,  0x23, 0x00, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x0C,
+  0x1C, 0x96, 0x07, 0x00,  0x07, 0x02, 0x00, 0x00,  0x00, 0x08, 0x0B, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x0E, 0x52, 0x17, 0x96,  0x02, 0x00, 0x05, 0x01,  0x3E, 0x99, 0x02, 0x00,  0x9C, 0xFF, 0x96, 0x02,
+  0x00, 0x05, 0x00, 0x3E,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x03, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x0F,
+  0x9B, 0x07, 0x00, 0x00,  0x01, 0x00, 0x6F, 0x00,  0x75, 0x00, 0x96, 0x02,  0x00, 0x08, 0x10, 0x1C,
+  0x96, 0x13, 0x00, 0x08,  0x04, 0x07, 0x0C, 0x00,  0x00, 0x00, 0x07, 0x65,  0x00, 0x00, 0x00, 0x07,
+  0x02, 0x00, 0x00, 0x00,  0x08, 0x01, 0x3D, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x10, 0x1C, 0x96, 0x04,
+  0x00, 0x08, 0x05, 0x08,  0x03, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x05, 0x4E,  0x4F, 0x96, 0x02, 0x00,
+  0x08, 0x10, 0x1C, 0x96,  0x04, 0x00, 0x08, 0x08,  0x08, 0x03, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x08,
+  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x10, 0x1C,  0x96, 0x09, 0x00, 0x08,  0x09, 0x07, 0x00, 0x00,
+  0x00, 0x00, 0x08, 0x11,  0x40, 0x4F, 0x96, 0x09,  0x00, 0x07, 0x83, 0x00,  0x00, 0x00, 0x08, 0x12,
+  0x08, 0x10, 0x1C, 0x96,  0x07, 0x00, 0x07, 0x03,  0x00, 0x00, 0x00, 0x08,  0x13, 0x3D, 0x17, 0x4F,
+  0x96, 0x08, 0x00, 0x07,  0x83, 0x00, 0x00, 0x00,  0x02, 0x08, 0x03, 0x1C,  0x96, 0x07, 0x00, 0x07,
+  0x03, 0x00, 0x00, 0x00,  0x08, 0x13, 0x3D, 0x17,  0x96, 0x8C, 0x00, 0x08,  0x14, 0x08, 0x15, 0x07,
+  0x12, 0x00, 0x00, 0x00,  0x08, 0x16, 0x07, 0x08,  0x00, 0x00, 0x00, 0x08,  0x17, 0x07, 0x14, 0x00,
+  0x00, 0x00, 0x08, 0x18,  0x07, 0x11, 0x00, 0x00,  0x00, 0x08, 0x19, 0x07,  0x2E, 0x00, 0x00, 0x00,
+  0x08, 0x1A, 0x07, 0x28,  0x00, 0x00, 0x00, 0x08,  0x1B, 0x07, 0x23, 0x00,  0x00, 0x00, 0x08, 0x1C,
+  0x07, 0x0D, 0x00, 0x00,  0x00, 0x08, 0x1D, 0x07,  0x1B, 0x00, 0x00, 0x00,  0x08, 0x1E, 0x07, 0x24,
+  0x00, 0x00, 0x00, 0x08,  0x1F, 0x07, 0x2D, 0x00,  0x00, 0x00, 0x08, 0x20,  0x07, 0x25, 0x00, 0x00,
+  0x00, 0x08, 0x21, 0x07,  0x22, 0x00, 0x00, 0x00,  0x08, 0x22, 0x07, 0x21,  0x00, 0x00, 0x00, 0x08,
+  0x23, 0x07, 0x27, 0x00,  0x00, 0x00, 0x08, 0x24,  0x07, 0x10, 0x00, 0x00,  0x00, 0x08, 0x25, 0x07,
+  0x20, 0x00, 0x00, 0x00,  0x08, 0x26, 0x07, 0x09,  0x00, 0x00, 0x00, 0x08,  0x27, 0x07, 0x26, 0x00,
+  0x00, 0x00, 0x07, 0x13,  0x00, 0x00, 0x00, 0x43,  0x1D, 0x96, 0x09, 0x00,  0x08, 0x28, 0x07, 0x20,
+  0x03, 0x00, 0x00, 0x08,  0x14, 0x1C, 0x96, 0x07,  0x00, 0x07, 0x03, 0x00,  0x00, 0x00, 0x08, 0x00,
+  0x3D, 0x17, 0x96, 0x02,  0x00, 0x08, 0x14, 0x1C,  0x96, 0x07, 0x00, 0x07,  0x01, 0x00, 0x00, 0x00,
+  0x08, 0x03, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x0F,  0x52, 0x17, 0x96, 0x08,  0x00, 0x07, 0x07, 0x00,
+  0x00, 0x00, 0x02, 0x08,  0x14, 0x1C, 0x96, 0x07,  0x00, 0x07, 0x03, 0x00,  0x00, 0x00, 0x08, 0x13,
+  0x3D, 0x17, 0x96, 0x09,  0x00, 0x08, 0x29, 0x07,  0x00, 0x00, 0x00, 0x00,  0x08, 0x2A, 0x40, 0x1D,
+  0x96, 0x02, 0x00, 0x08,  0x29, 0x1C, 0x96, 0x13,  0x00, 0x08, 0x2B, 0x07,  0x00, 0x00, 0x00, 0x00,
+  0x07, 0x05, 0x00, 0x00,  0x00, 0x07, 0x02, 0x00,  0x00, 0x00, 0x08, 0x01,  0x3D, 0x4F, 0x96, 0x02,
+  0x00, 0x08, 0x29, 0x1C,  0x96, 0x13, 0x00, 0x08,  0x2C, 0x07, 0x01, 0x00,  0x00, 0x00, 0x07, 0x05,
+  0x00, 0x00, 0x00, 0x07,  0x02, 0x00, 0x00, 0x00,  0x08, 0x01, 0x3D, 0x4F,  0x96, 0x02, 0x00, 0x08,
+  0x29, 0x1C, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x03,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x0F, 0x52, 0x17,  0x96, 0x08, 0x00, 0x07,  0x07, 0x00, 0x00, 0x00,  0x02, 0x08, 0x29, 0x1C,
+  0x96, 0x07, 0x00, 0x07,  0x03, 0x00, 0x00, 0x00,  0x08, 0x13, 0x3D, 0x17,  0x96, 0x09, 0x00, 0x08,
+  0x2D, 0x07, 0x00, 0x00,  0x00, 0x00, 0x08, 0x2A,  0x40, 0x1D, 0x96, 0x02,  0x00, 0x08, 0x2D, 0x1C,
+  0x96, 0x07, 0x00, 0x07,  0x01, 0x00, 0x00, 0x00,  0x08, 0x03, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x0F,
+  0x52, 0x17, 0x96, 0x0E,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x2E,  0x07, 0x9A, 0x02, 0x00,
+  0x00, 0x08, 0x2D, 0x1C,  0x96, 0x07, 0x00, 0x07,  0x04, 0x00, 0x00, 0x00,  0x08, 0x02, 0x3D, 0x17,
+  0x96, 0x02, 0x00, 0x08,  0x2F, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x30, 0x4E,  0x96, 0x04, 0x00, 0x08,
+  0x31, 0x08, 0x32, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x2F, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x30, 0x4E,
+  0x96, 0x13, 0x00, 0x08,  0x33, 0x07, 0x00, 0x00,  0x00, 0x00, 0x07, 0x2D,  0x01, 0x00, 0x00, 0x07,
   0x02, 0x00, 0x00, 0x00,  0x08, 0x01, 0x3D, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x2F, 0x1C, 0x96, 0x02,
-  0x00, 0x08, 0x30, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x35, 0x9B, 0x05, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x2F, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x30, 0x4E, 0x96, 0x02,
-  0x00, 0x08, 0x36, 0x9B,  0x09, 0x00, 0x00, 0x01,  0x00, 0x73, 0x72, 0x63,  0x00, 0x64, 0x00, 0x96,
-  0x02, 0x00, 0x08, 0x06,  0x1C, 0x96, 0x04, 0x00,  0x08, 0x37, 0x05, 0x01,  0x4F, 0x96, 0x02, 0x00,
-  0x08, 0x38, 0x1C, 0x96,  0x01, 0x00, 0x02, 0x49,  0x12, 0x9D, 0x02, 0x00,  0x19, 0x00, 0x96, 0x09,
-  0x00, 0x05, 0x00, 0x07,  0x01, 0x00, 0x00, 0x00,  0x08, 0x06, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x35,
-  0x52, 0x17, 0x99, 0x02,  0x00, 0x2C, 0x00, 0x96,  0x02, 0x00, 0x08, 0x38,  0x1C, 0x96, 0x07, 0x00,
-  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x06, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x34, 0x52, 0x17, 0x96,
-  0x09, 0x00, 0x05, 0x01,  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x06, 0x1C,  0x96, 0x02, 0x00, 0x08,
-  0x35, 0x52, 0x17, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x2F, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x30, 0x4E,
-  0x96, 0x02, 0x00, 0x08,  0x39, 0x9B, 0x05, 0x00,  0x00, 0x00, 0x00, 0xB3,  0x00, 0x96, 0x03, 0x00,
-  0x08, 0x3A, 0x02, 0x3C,  0x96, 0x02, 0x00, 0x08,  0x06, 0x46, 0x87, 0x01,  0x00, 0x00, 0x96, 0x01,
-  0x00, 0x02, 0x49, 0x9D,  0x02, 0x00, 0x91, 0x00,  0x96, 0x04, 0x00, 0x08,  0x07, 0x04, 0x00, 0x3C,
-  0x96, 0x02, 0x00, 0x08,  0x3A, 0x1C, 0x96, 0x01,  0x00, 0x02, 0x49, 0x9D,  0x02, 0x00, 0x41, 0x00,
-  0x96, 0x02, 0x00, 0x08,  0x3A, 0x4C, 0x1C, 0x96,  0x04, 0x00, 0x08, 0x3D,  0x08, 0x07, 0x1C, 0x96,
-  0x07, 0x00, 0x07, 0x01,  0x00, 0x00, 0x00, 0x08,  0x3B, 0x3D, 0x47, 0x96,  0x02, 0x00, 0x08, 0x3C,
-  0x47, 0x96, 0x02, 0x00,  0x08, 0x06, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x07,  0x1C, 0x4E, 0x96, 0x07,
-  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x3B,  0x3D, 0x47, 0x47, 0x1D,  0x99, 0x02, 0x00, 0x33,
-  0x00, 0x96, 0x04, 0x00,  0x08, 0x3A, 0x08, 0x07,  0x1C, 0x96, 0x07, 0x00,  0x07, 0x01, 0x00, 0x00,
-  0x00, 0x08, 0x3B, 0x3D,  0x96, 0x02, 0x00, 0x08,  0x3C, 0x47, 0x96, 0x02,  0x00, 0x08, 0x06, 0x1C,
-  0x96, 0x02, 0x00, 0x08,  0x07, 0x1C, 0x4E, 0x96,  0x07, 0x00, 0x07, 0x01,  0x00, 0x00, 0x00, 0x08,
-  0x3B, 0x3D, 0x47, 0x1D,  0x99, 0x02, 0x00, 0x61,  0xFF, 0x96, 0x02, 0x00,  0x08, 0x3A, 0x1C, 0x3E,
-  0x4F, 0x96, 0x02, 0x00,  0x08, 0x2F, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x30,  0x4E, 0x96, 0x02, 0x00,
-  0x08, 0x3E, 0x9B, 0x05,  0x00, 0x00, 0x00, 0x00,  0x0D, 0x00, 0x96, 0x02,  0x00, 0x08, 0x06, 0x1C,
-  0x96, 0x02, 0x00, 0x08,  0x3F, 0x4E, 0x3E, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x2F, 0x1C, 0x96, 0x02,
-  0x00, 0x08, 0x30, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x40, 0x9B, 0x05, 0x00,  0x00, 0x00, 0x00, 0x0D,
-  0x00, 0x96, 0x02, 0x00,  0x08, 0x06, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x41,  0x4E, 0x3E, 0x4F, 0x96,
-  0x08, 0x00, 0x07, 0x83,  0x00, 0x00, 0x00, 0x02,  0x08, 0x2F, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x30,
-  0x4E, 0x96, 0x07, 0x00,  0x07, 0x03, 0x00, 0x00,  0x00, 0x08, 0x13, 0x3D,  0x17, 0x96, 0x03, 0x00,
-  0x08, 0x10, 0x02, 0x1D,  0x00
+  0x00, 0x08, 0x30, 0x4E,  0x96, 0x13, 0x00, 0x08,  0x34, 0x07, 0x03, 0x00,  0x00, 0x00, 0x07, 0x2D,
+  0x01, 0x00, 0x00, 0x07,  0x02, 0x00, 0x00, 0x00,  0x08, 0x01, 0x3D, 0x4F,  0x96, 0x02, 0x00, 0x08,
+  0x2F, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x30, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x35, 0x9B, 0x05, 0x00,
+  0x00, 0x00, 0x00, 0x00,  0x00, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x2F, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x30, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x36, 0x9B,  0x09, 0x00, 0x00, 0x01,  0x00, 0x73, 0x72, 0x63,
+  0x00, 0x64, 0x00, 0x96,  0x02, 0x00, 0x08, 0x06,  0x1C, 0x96, 0x04, 0x00,  0x08, 0x37, 0x05, 0x01,
+  0x4F, 0x96, 0x02, 0x00,  0x08, 0x38, 0x1C, 0x96,  0x01, 0x00, 0x02, 0x49,  0x12, 0x9D, 0x02, 0x00,
+  0x19, 0x00, 0x96, 0x09,  0x00, 0x05, 0x00, 0x07,  0x01, 0x00, 0x00, 0x00,  0x08, 0x06, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x35,  0x52, 0x17, 0x99, 0x02,  0x00, 0x2C, 0x00, 0x96,  0x02, 0x00, 0x08, 0x38,
+  0x1C, 0x96, 0x07, 0x00,  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x06, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x34, 0x52, 0x17, 0x96,  0x09, 0x00, 0x05, 0x01,  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x06, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x35, 0x52, 0x17, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x2F, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x30, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x39, 0x9B, 0x05, 0x00,  0x00, 0x00, 0x00, 0xB3,
+  0x00, 0x96, 0x03, 0x00,  0x08, 0x3A, 0x02, 0x3C,  0x96, 0x02, 0x00, 0x08,  0x06, 0x46, 0x87, 0x01,
+  0x00, 0x00, 0x96, 0x01,  0x00, 0x02, 0x49, 0x9D,  0x02, 0x00, 0x91, 0x00,  0x96, 0x04, 0x00, 0x08,
+  0x07, 0x04, 0x00, 0x3C,  0x96, 0x02, 0x00, 0x08,  0x3A, 0x1C, 0x96, 0x01,  0x00, 0x02, 0x49, 0x9D,
+  0x02, 0x00, 0x41, 0x00,  0x96, 0x02, 0x00, 0x08,  0x3A, 0x4C, 0x1C, 0x96,  0x04, 0x00, 0x08, 0x3D,
+  0x08, 0x07, 0x1C, 0x96,  0x07, 0x00, 0x07, 0x01,  0x00, 0x00, 0x00, 0x08,  0x3B, 0x3D, 0x47, 0x96,
+  0x02, 0x00, 0x08, 0x3C,  0x47, 0x96, 0x02, 0x00,  0x08, 0x06, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x07,
+  0x1C, 0x4E, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x3B,  0x3D, 0x47, 0x47, 0x1D,
+  0x99, 0x02, 0x00, 0x33,  0x00, 0x96, 0x04, 0x00,  0x08, 0x3A, 0x08, 0x07,  0x1C, 0x96, 0x07, 0x00,
+  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x3B, 0x3D,  0x96, 0x02, 0x00, 0x08,  0x3C, 0x47, 0x96, 0x02,
+  0x00, 0x08, 0x06, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x07, 0x1C, 0x4E, 0x96,  0x07, 0x00, 0x07, 0x01,
+  0x00, 0x00, 0x00, 0x08,  0x3B, 0x3D, 0x47, 0x1D,  0x99, 0x02, 0x00, 0x61,  0xFF, 0x96, 0x02, 0x00,
+  0x08, 0x3A, 0x1C, 0x3E,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x2F, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x30,
+  0x4E, 0x96, 0x02, 0x00,  0x08, 0x3E, 0x9B, 0x05,  0x00, 0x00, 0x00, 0x00,  0x0D, 0x00, 0x96, 0x02,
+  0x00, 0x08, 0x06, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x3F, 0x4E, 0x3E, 0x4F,  0x96, 0x02, 0x00, 0x08,
+  0x2F, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x30, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x40, 0x9B, 0x05, 0x00,
+  0x00, 0x00, 0x00, 0x0D,  0x00, 0x96, 0x02, 0x00,  0x08, 0x06, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x41,
+  0x4E, 0x3E, 0x4F, 0x96,  0x08, 0x00, 0x07, 0x83,  0x00, 0x00, 0x00, 0x02,  0x08, 0x2F, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x30,  0x4E, 0x96, 0x07, 0x00,  0x07, 0x03, 0x00, 0x00,  0x00, 0x08, 0x13, 0x3D,
+  0x17, 0x96, 0x02, 0x00,  0x08, 0x42, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x30,  0x4E, 0x96, 0x13, 0x00,
+  0x08, 0x33, 0x07, 0x00,  0x00, 0x00, 0x00, 0x07,  0x2D, 0x01, 0x00, 0x00,  0x07, 0x02, 0x00, 0x00,
+  0x00, 0x08, 0x01, 0x3D,  0x4F, 0x96, 0x03, 0x00,  0x08, 0x10, 0x02, 0x1D,  0x00
 };
 
diff --git a/libswfdec/swfdec_load_object_as.h b/libswfdec/swfdec_load_object_as.h
deleted file mode 100644
index f14f0e2..0000000
--- a/libswfdec/swfdec_load_object_as.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Swfdec
- * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, 
- * Boston, MA  02110-1301  USA
- */
-
-#ifndef _SWFDEC_LOADABLE_H_
-#define _SWFDEC_LOADABLE_H_
-
-#include <libswfdec/swfdec.h>
-#include <libswfdec/swfdec_as_object.h>
-
-G_BEGIN_DECLS
-
-void swfdec_load_object_load (SwfdecAsContext *cx, SwfdecAsObject *obj, guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval);
-
-G_END_DECLS
-#endif
diff --git a/libswfdec/swfdec_xml_as.c b/libswfdec/swfdec_xml_as.c
index bf182a8..76e420d 100644
--- a/libswfdec/swfdec_xml_as.c
+++ b/libswfdec/swfdec_xml_as.c
@@ -28,7 +28,6 @@
 #include "swfdec_debug.h"
 #include "swfdec_internal.h"
 #include "swfdec_player_internal.h"
-#include "swfdec_load_object_as.h"
 
 G_DEFINE_TYPE (SwfdecXml, swfdec_xml, SWFDEC_TYPE_AS_OBJECT)
 
@@ -60,8 +59,6 @@ swfdec_xml_init_context (SwfdecPlayer *p
   if (xml == NULL)
     return;
   /* set the right properties on the NetStream.prototype object */
-  swfdec_as_object_add_function (proto, SWFDEC_AS_STR_load, SWFDEC_TYPE_XML,
-      swfdec_load_object_load, 0);
   SWFDEC_AS_VALUE_SET_OBJECT (&val, xml);
   swfdec_as_object_set_variable (proto, SWFDEC_AS_STR_constructor, &val);
   SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Object_prototype);
diff-tree 8cccc48b18fd2f3ccdb6279a865f9252f6e6d16a (from 93764e84c49f65d3c61706af57762ea9fa4c409d)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 12:54:57 2007 +0200

    inclode swfdec_gtk_keys.h

diff --git a/doc/Makefile.am b/doc/Makefile.am
index c5766a9..73c9cee 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -132,6 +132,7 @@ IGNORE_HFILES= \
 
 if WITH_GTK
 EXTRA_HFILES = \
+	../libswfdec-gtk/swfdec_gtk_keys.h \
 	../libswfdec-gtk/swfdec_gtk_loader.h \
 	../libswfdec-gtk/swfdec_gtk_player.h \
 	../libswfdec-gtk/swfdec_gtk_widget.h
diff-tree 93764e84c49f65d3c61706af57762ea9fa4c409d (from 1dee71176821844d903ac956b7ca03682b3ca428)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 12:54:37 2007 +0200

    include swfdec_gtk_keys.h

diff --git a/libswfdec-gtk/swfdec-gtk.h b/libswfdec-gtk/swfdec-gtk.h
index 5615fa0..de4f723 100644
--- a/libswfdec-gtk/swfdec-gtk.h
+++ b/libswfdec-gtk/swfdec-gtk.h
@@ -20,6 +20,7 @@
 #ifndef __SWFDEC_GTK_H__
 #define __SWFDEC_GTK_H__
 
+#include <libswfdec-gtk/swfdec_gtk_keys.h>
 #include <libswfdec-gtk/swfdec_gtk_loader.h>
 #include <libswfdec-gtk/swfdec_gtk_player.h>
 #include <libswfdec-gtk/swfdec_gtk_widget.h>
diff-tree 1dee71176821844d903ac956b7ca03682b3ca428 (from 10d4cc43986ce88bb43cb7bf96712846c962ed86)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Aug 23 11:07:59 2007 +0200

    It's a swfdec-gtk function, so use that prefix

diff --git a/libswfdec-gtk/swfdec_gtk_keys.c b/libswfdec-gtk/swfdec_gtk_keys.c
index 93593e1..b192e64 100644
--- a/libswfdec-gtk/swfdec_gtk_keys.c
+++ b/libswfdec-gtk/swfdec_gtk_keys.c
@@ -59,7 +59,7 @@ SWFDEC_KEY_MENU 117
 */
 
 guint
-swfdec_keycode_from_hardware_keycode (guint hardware_keycode)
+swfdec_gtk_keycode_from_hardware_keycode (guint hardware_keycode)
 {
   if (hardware_keycode >= G_N_ELEMENTS (flash_keycodes))
     return 0;
diff --git a/libswfdec-gtk/swfdec_gtk_keys.h b/libswfdec-gtk/swfdec_gtk_keys.h
index bb3c80f..d9b985b 100644
--- a/libswfdec-gtk/swfdec_gtk_keys.h
+++ b/libswfdec-gtk/swfdec_gtk_keys.h
@@ -24,7 +24,7 @@
 
 G_BEGIN_DECLS
 
-guint		swfdec_keycode_from_hardware_keycode	(guint	hardware_keycode);
+guint		swfdec_gtk_keycode_from_hardware_keycode	(guint	hardware_keycode);
 
 G_END_DECLS
 #endif
diff --git a/libswfdec-gtk/swfdec_gtk_widget.c b/libswfdec-gtk/swfdec_gtk_widget.c
index 94b7f31..8a87fad 100644
--- a/libswfdec-gtk/swfdec_gtk_widget.c
+++ b/libswfdec-gtk/swfdec_gtk_widget.c
@@ -147,7 +147,7 @@ swfdec_gtk_event_to_keycode (GdkEventKey
     return event->keyval - GDK_a + SWFDEC_KEY_A;
 
   /* last resort: try to translate the hardware keycode directly */
-  ret = swfdec_keycode_from_hardware_keycode (event->hardware_keycode);
+  ret = swfdec_gtk_keycode_from_hardware_keycode (event->hardware_keycode);
   if (ret == 0)
     g_printerr ("could not translate key to Flash keycode. HW keycode %u, keyval %u\n",
 	event->hardware_keycode, event->keyval);


More information about the Swfdec mailing list