[Swfdec-commits] 6 commits - swfdec/jpeg swfdec/swfdec_movie_clip_loader.c swfdec/swfdec_resource.c swfdec/swfdec_resource.h test/trace
Benjamin Otte
company at kemper.freedesktop.org
Sat May 31 04:13:43 PDT 2008
swfdec/jpeg/cogcompat.h | 4 ++
swfdec/jpeg/jpeg_rgb_decoder.c | 14 ++++----
swfdec/swfdec_movie_clip_loader.c | 5 ++-
swfdec/swfdec_resource.c | 23 +++++++-------
swfdec/swfdec_resource.h | 2 -
test/trace/Makefile.am | 14 ++++++++
test/trace/moviecliploader-level-5.swf |binary
test/trace/moviecliploader-level-5.swf.trace | 3 +
test/trace/moviecliploader-level-6.swf |binary
test/trace/moviecliploader-level-6.swf.trace | 3 +
test/trace/moviecliploader-level-7.swf |binary
test/trace/moviecliploader-level-7.swf.trace | 3 +
test/trace/moviecliploader-level-8.swf |binary
test/trace/moviecliploader-level-8.swf.trace | 3 +
test/trace/moviecliploader-level.as | 13 +++++++
test/trace/moviecliploader-undefined-on-error-7.swf |binary
test/trace/moviecliploader-undefined-on-error-7.swf.trace | 4 ++
test/trace/moviecliploader-undefined-on-error-8.swf |binary
test/trace/moviecliploader-undefined-on-error-8.swf.trace | 4 ++
test/trace/moviecliploader-undefined-on-error.as | 13 +++++++
20 files changed, 88 insertions(+), 20 deletions(-)
New commits:
commit d1614ba08b3862632b7c5b0f52dd4f585476e08b
Author: Riccardo Magliocchetti <riccardo at datahost.it>
Date: Sat May 31 13:13:02 2008 +0200
use glib allocation functions in jpeg decoder
diff --git a/swfdec/jpeg/cogcompat.h b/swfdec/jpeg/cogcompat.h
index bf2370f..67daf8f 100644
--- a/swfdec/jpeg/cogcompat.h
+++ b/swfdec/jpeg/cogcompat.h
@@ -3,6 +3,7 @@
#define _COG_COMPAT_H_
#include <swfdec_debug.h>
+#include <glib.h>
#define COG_LOG(...) SWFDEC_LOG(__VA_ARGS__)
#define COG_DEBUG(...) SWFDEC_DEBUG(__VA_ARGS__)
@@ -10,5 +11,8 @@
#define COG_WARNING(...) SWFDEC_WARNING(__VA_ARGS__)
#define COG_ERROR(...) SWFDEC_ERROR(__VA_ARGS__)
+#define malloc g_malloc
+#define free g_free
+
#endif
diff --git a/swfdec/jpeg/jpeg_rgb_decoder.c b/swfdec/jpeg/jpeg_rgb_decoder.c
index dced8eb..d95b61d 100644
--- a/swfdec/jpeg/jpeg_rgb_decoder.c
+++ b/swfdec/jpeg/jpeg_rgb_decoder.c
@@ -1,14 +1,11 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
+#include <liboil/liboil.h>
+#include <liboil/liboildebug.h>
+#include <cogcompat.h>
#include "jpeg.h"
-#include <liboil/liboil.h>
-#include <liboil/liboildebug.h>
-#define CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
#define oil_argb(a,r,g,b) \
((oil_clamp_255(a)<<24) | \
(oil_clamp_255(r)<<16) | \
commit ec0d0a2b9626d83b395a11329084423c43ee821a
Author: Riccardo Magliocchetti <riccardo at datahost.it>
Date: Sat May 31 13:11:36 2008 +0200
fix leak in error path
diff --git a/swfdec/jpeg/jpeg_rgb_decoder.c b/swfdec/jpeg/jpeg_rgb_decoder.c
index aeae651..dced8eb 100644
--- a/swfdec/jpeg/jpeg_rgb_decoder.c
+++ b/swfdec/jpeg/jpeg_rgb_decoder.c
@@ -57,7 +57,10 @@ int jpeg_decode_argb (uint8_t *data, int length, uint32_t **image,
jpeg_decoder_addbits (dec, data, length);
ret = jpeg_decoder_decode(dec);
- if (!ret) return FALSE;
+ if (!ret) {
+ jpeg_decoder_free (dec);
+ return FALSE;
+ }
jpeg_decoder_get_image_size (dec, width, height);
*image = (uint32_t *)jpeg_decoder_get_argb_image (dec);
commit 633a9ee21fa2667f774885ab11142f2af5d0196e
Author: Benjamin Otte <otte at gnome.org>
Date: Sat May 31 13:10:16 2008 +0200
whoops, one return too many left in the rebase
diff --git a/swfdec/swfdec_resource.c b/swfdec/swfdec_resource.c
index a404f6c..15d4656 100644
--- a/swfdec/swfdec_resource.c
+++ b/swfdec/swfdec_resource.c
@@ -711,7 +711,6 @@ swfdec_resource_load_movie (SwfdecPlayer *player, const SwfdecAsValue *target,
if (SWFDEC_IS_SPRITE_MOVIE (movie)) {
swfdec_resource_load_internal (player, SWFDEC_SPRITE_MOVIE (movie),
NULL, url, buffer, loader);
- return;
return TRUE;
}
if (swfdec_player_get_level (player, s) >= 0) {
commit b142068dca14b05339bbffe41e598b2816cdf7b2
Author: Benjamin Otte <otte at gnome.org>
Date: Thu May 29 16:59:18 2008 +0200
add another test for recent loader fixes
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index e11bba3..db74bac 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -1937,6 +1937,15 @@ EXTRA_DIST = \
moviecliploader-known-image-size-7.swf.trace \
moviecliploader-known-image-size-8.swf \
moviecliploader-known-image-size-8.swf.trace \
+ moviecliploader-level-5.swf \
+ moviecliploader-level-5.swf.trace \
+ moviecliploader-level-6.swf \
+ moviecliploader-level-6.swf.trace \
+ moviecliploader-level-7.swf \
+ moviecliploader-level-7.swf.trace \
+ moviecliploader-level-8.swf \
+ moviecliploader-level-8.swf.trace \
+ moviecliploader-level.as \
moviecliploader-properties.as \
moviecliploader-properties-5.swf \
moviecliploader-properties-5.swf.trace \
diff --git a/test/trace/moviecliploader-level-5.swf b/test/trace/moviecliploader-level-5.swf
new file mode 100644
index 0000000..03ba9dd
Binary files /dev/null and b/test/trace/moviecliploader-level-5.swf differ
diff --git a/test/trace/moviecliploader-level-5.swf.trace b/test/trace/moviecliploader-level-5.swf.trace
new file mode 100644
index 0000000..ff61da0
--- /dev/null
+++ b/test/trace/moviecliploader-level-5.swf.trace
@@ -0,0 +1,3 @@
+Your mom
+undefined
+undefined
diff --git a/test/trace/moviecliploader-level-6.swf b/test/trace/moviecliploader-level-6.swf
new file mode 100644
index 0000000..b5b2653
Binary files /dev/null and b/test/trace/moviecliploader-level-6.swf differ
diff --git a/test/trace/moviecliploader-level-6.swf.trace b/test/trace/moviecliploader-level-6.swf.trace
new file mode 100644
index 0000000..ff61da0
--- /dev/null
+++ b/test/trace/moviecliploader-level-6.swf.trace
@@ -0,0 +1,3 @@
+Your mom
+undefined
+undefined
diff --git a/test/trace/moviecliploader-level-7.swf b/test/trace/moviecliploader-level-7.swf
new file mode 100644
index 0000000..eb49313
Binary files /dev/null and b/test/trace/moviecliploader-level-7.swf differ
diff --git a/test/trace/moviecliploader-level-7.swf.trace b/test/trace/moviecliploader-level-7.swf.trace
new file mode 100644
index 0000000..4195d92
--- /dev/null
+++ b/test/trace/moviecliploader-level-7.swf.trace
@@ -0,0 +1,3 @@
+Your mom
+true
+undefined
diff --git a/test/trace/moviecliploader-level-8.swf b/test/trace/moviecliploader-level-8.swf
new file mode 100644
index 0000000..d703c13
Binary files /dev/null and b/test/trace/moviecliploader-level-8.swf differ
diff --git a/test/trace/moviecliploader-level-8.swf.trace b/test/trace/moviecliploader-level-8.swf.trace
new file mode 100644
index 0000000..4195d92
--- /dev/null
+++ b/test/trace/moviecliploader-level-8.swf.trace
@@ -0,0 +1,3 @@
+Your mom
+true
+undefined
diff --git a/test/trace/moviecliploader-level.as b/test/trace/moviecliploader-level.as
new file mode 100644
index 0000000..d26fea7
--- /dev/null
+++ b/test/trace/moviecliploader-level.as
@@ -0,0 +1,13 @@
+// makeswf -v 7 -s 200x150 -r 1 -o moviecliploader-level.swf moviecliploader-level.as
+
+l = new MovieClipLoader ();
+l.onLoadStart = function (m) {
+ trace ("I win");
+};
+if (this == _level1) {
+ getURL ("fscommand:quit", "");
+} else {
+ trace ("Your mom");
+ trace (l.loadClip ("moviecliploader-level-" + __SWF_VERSION__ + ".swf", "_level1"));
+ trace (_level1);
+}
commit 4ac5d9c7ad73402ffbb58264621539bb0129f27e
Author: Benjamin Otte <otte at gnome.org>
Date: Thu May 29 16:54:22 2008 +0200
add test for recent MovieClipLoader changes
versions 5 and 6 are omitted on purpose
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 9fc0ec2..e11bba3 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -1946,6 +1946,11 @@ EXTRA_DIST = \
moviecliploader-properties-7.swf.trace \
moviecliploader-properties-8.swf \
moviecliploader-properties-8.swf.trace \
+ moviecliploader-undefined-on-error-7.swf \
+ moviecliploader-undefined-on-error-7.swf.trace \
+ moviecliploader-undefined-on-error-8.swf \
+ moviecliploader-undefined-on-error-8.swf.trace \
+ moviecliploader-undefined-on-error.as \
moviecliploader-unknown-format.as \
moviecliploader-unknown-format-5.swf \
moviecliploader-unknown-format-5.swf.trace \
diff --git a/test/trace/moviecliploader-undefined-on-error-7.swf b/test/trace/moviecliploader-undefined-on-error-7.swf
new file mode 100644
index 0000000..b0d5aab
Binary files /dev/null and b/test/trace/moviecliploader-undefined-on-error-7.swf differ
diff --git a/test/trace/moviecliploader-undefined-on-error-7.swf.trace b/test/trace/moviecliploader-undefined-on-error-7.swf.trace
new file mode 100644
index 0000000..2e45127
--- /dev/null
+++ b/test/trace/moviecliploader-undefined-on-error-7.swf.trace
@@ -0,0 +1,4 @@
+true
+I lose
+undefined
+undefined
diff --git a/test/trace/moviecliploader-undefined-on-error-8.swf b/test/trace/moviecliploader-undefined-on-error-8.swf
new file mode 100644
index 0000000..958d65c
Binary files /dev/null and b/test/trace/moviecliploader-undefined-on-error-8.swf differ
diff --git a/test/trace/moviecliploader-undefined-on-error-8.swf.trace b/test/trace/moviecliploader-undefined-on-error-8.swf.trace
new file mode 100644
index 0000000..2e45127
--- /dev/null
+++ b/test/trace/moviecliploader-undefined-on-error-8.swf.trace
@@ -0,0 +1,4 @@
+true
+I lose
+undefined
+undefined
diff --git a/test/trace/moviecliploader-undefined-on-error.as b/test/trace/moviecliploader-undefined-on-error.as
new file mode 100644
index 0000000..24eedbc
--- /dev/null
+++ b/test/trace/moviecliploader-undefined-on-error.as
@@ -0,0 +1,13 @@
+// makeswf -v 7 -s 200x150 -r 1 -o moviecliploader-undefined-on-error.swf moviecliploader-undefined-on-error.as
+
+l = new MovieClipLoader ();
+l.onLoadError = function (m) {
+ trace ("I lose");
+ trace (m);
+ trace (m.b);
+ getURL ("fscommand:quit", "");
+};
+createEmptyMovieClip ("a", 0);
+a.b = 42;
+trace (l.loadClip ("http://example.com/maynotaccess.swf", "a"));
+removeMovieClip (a);
commit cc11be38e7cf7e568f3a3694942a0febe932fa16
Author: Benjamin Otte <otte at gnome.org>
Date: Thu May 29 16:52:53 2008 +0200
make swfdec_resource_load_movie() return a boolean
and use that boolean as return value for MovieClipLoader.loadClip
diff --git a/swfdec/swfdec_movie_clip_loader.c b/swfdec/swfdec_movie_clip_loader.c
index 1cb56b2..db9f595 100644
--- a/swfdec/swfdec_movie_clip_loader.c
+++ b/swfdec/swfdec_movie_clip_loader.c
@@ -72,10 +72,13 @@ swfdec_movie_clip_loader_loadClip (SwfdecAsContext *cx, SwfdecAsObject *object,
SwfdecMovieClipLoader *loader;
const char *url;
SwfdecAsValue target;
+ gboolean result;
SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE_CLIP_LOADER, &loader, "sv", &url, &target);
- swfdec_resource_load_movie (SWFDEC_PLAYER (cx), &target, url, NULL, loader);
+ result = swfdec_resource_load_movie (SWFDEC_PLAYER (cx), &target, url,
+ NULL, loader);
+ SWFDEC_AS_VALUE_SET_BOOLEAN (rval, result);
}
SWFDEC_AS_NATIVE (112, 102, swfdec_movie_clip_loader_unloadClip)
diff --git a/swfdec/swfdec_resource.c b/swfdec/swfdec_resource.c
index 5732a10..a404f6c 100644
--- a/swfdec/swfdec_resource.c
+++ b/swfdec/swfdec_resource.c
@@ -685,24 +685,24 @@ swfdec_resource_load_internal (SwfdecPlayer *player,
swfdec_player_request_resource (player, swfdec_resource_load_request, load, swfdec_resource_load_free);
}
-void
+gboolean
swfdec_resource_load_movie (SwfdecPlayer *player, const SwfdecAsValue *target,
const char *url, SwfdecBuffer *buffer, SwfdecMovieClipLoader *loader)
{
SwfdecMovie *movie;
const char *s;
- g_return_if_fail (SWFDEC_IS_PLAYER (player));
- g_return_if_fail (target != NULL);
- g_return_if_fail (url != NULL);
- g_return_if_fail (loader == NULL || SWFDEC_IS_MOVIE_CLIP_LOADER (loader));
+ g_return_val_if_fail (SWFDEC_IS_PLAYER (player), FALSE);
+ g_return_val_if_fail (target != NULL, FALSE);
+ g_return_val_if_fail (url != NULL, FALSE);
+ g_return_val_if_fail (loader == NULL || SWFDEC_IS_MOVIE_CLIP_LOADER (loader), FALSE);
if (SWFDEC_AS_VALUE_IS_OBJECT (target)) {
SwfdecAsObject *object = SWFDEC_AS_VALUE_GET_OBJECT (target);
if (SWFDEC_IS_SPRITE_MOVIE (object)) {
swfdec_resource_load_internal (player, SWFDEC_SPRITE_MOVIE (object),
NULL, url, buffer, loader);
- return;
+ return TRUE;
}
}
@@ -712,12 +712,14 @@ swfdec_resource_load_movie (SwfdecPlayer *player, const SwfdecAsValue *target,
swfdec_resource_load_internal (player, SWFDEC_SPRITE_MOVIE (movie),
NULL, url, buffer, loader);
return;
+ return TRUE;
}
- if (swfdec_player_get_level (player, s) < 0) {
- SWFDEC_WARNING ("%s does not reference a movie, not loading %s", s, url);
- return;
+ if (swfdec_player_get_level (player, s) >= 0) {
+ swfdec_resource_load_internal (player, NULL, s, url, buffer, NULL);
+ return TRUE;
}
- swfdec_resource_load_internal (player, NULL, s, url, buffer, NULL);
+ SWFDEC_WARNING ("%s does not reference a movie, not loading %s", s, url);
+ return FALSE;
}
void
diff --git a/swfdec/swfdec_resource.h b/swfdec/swfdec_resource.h
index 5b12ee6..8a4e2e5 100644
--- a/swfdec/swfdec_resource.h
+++ b/swfdec/swfdec_resource.h
@@ -85,7 +85,7 @@ gpointer swfdec_resource_get_export (SwfdecResource * root,
const char * swfdec_resource_get_export_name (SwfdecResource * root,
SwfdecCharacter * character);
-void swfdec_resource_load_movie (SwfdecPlayer * player,
+gboolean swfdec_resource_load_movie (SwfdecPlayer * player,
const SwfdecAsValue * target,
const char * url,
SwfdecBuffer * buffer,
More information about the Swfdec-commits
mailing list