Benjamin Otte
2007-Mar-21 15:50 UTC
[Swfdec] 4 commits - libswfdec/swfdec_js_movie.c libswfdec/swfdec_script.c player/swfdec_slow_loader.c
libswfdec/swfdec_js_movie.c | 22 ++++++++++++++++++---- libswfdec/swfdec_script.c | 6 +++++- player/swfdec_slow_loader.c | 20 +++++++++++++++++++- 3 files changed, 42 insertions(+), 6 deletions(-) New commits: diff-tree 13171a49b02675d44bc54c91ec872e173cfcefd6 (from parents) Merge: dae7f00125145fc3e540c5454942acbbabe800db bbf53a5c2060eadff2632674d2550a09719f41e1 Author: Benjamin Otte <otte@gnome.org> Date: Wed Mar 21 23:44:29 2007 +0100 Merge branch 'master' of ssh://company@git.freedesktop.org/git/swfdec diff-tree dae7f00125145fc3e540c5454942acbbabe800db (from 07efea41adaeeceac6f4ab3ecd9a71c5a9c8791f) Author: Benjamin Otte <otte@gnome.org> Date: Wed Mar 21 23:34:07 2007 +0100 update to new SwfdecLoader stuff diff --git a/player/swfdec_slow_loader.c b/player/swfdec_slow_loader.c index 0eb5b61..47b7723 100644 --- a/player/swfdec_slow_loader.c +++ b/player/swfdec_slow_loader.c @@ -29,10 +29,19 @@ G_DEFINE_TYPE (SwfdecSlowLoader, swfdec_slow_loader, SWFDEC_TYPE_LOADER) static void +swfdec_slow_loader_notify_cb (SwfdecLoader *child, GParamSpec *pspec, SwfdecLoader *loader) +{ + if (g_str_equal (pspec->name, "size")) { + swfdec_loader_set_size (loader, swfdec_loader_get_size (child)); + } +} + +static void swfdec_slow_loader_dispose (GObject *object) { SwfdecSlowLoader *slow = SWFDEC_SLOW_LOADER (object); + g_signal_handlers_disconnect_by_func (slow->loader, swfdec_slow_loader_notify_cb, slow); g_object_unref (slow->loader); if (slow->timeout_id) { g_source_remove (slow->timeout_id); @@ -96,7 +105,11 @@ swfdec_slow_loader_tick (gpointer data) return TRUE; } - if (slow->loader->eof) { + if (slow->loader->error) { + swfdec_loader_error (SWFDEC_LOADER (slow), slow->loader->error); + slow->timeout_id = 0; + return FALSE; + } else if (slow->loader->eof) { swfdec_loader_eof (SWFDEC_LOADER (slow)); slow->timeout_id = 0; return FALSE; @@ -109,6 +122,7 @@ SwfdecLoader * swfdec_slow_loader_new (SwfdecLoader *loader, guint duration) { SwfdecSlowLoader *ret; + gulong size; g_return_val_if_fail (SWFDEC_IS_LOADER (loader), NULL); g_return_val_if_fail (duration > 0, NULL); @@ -117,6 +131,10 @@ swfdec_slow_loader_new (SwfdecLoader *lo ret->tick_time = 100; ret->duration = duration * 1000; ret->loader = loader; + g_signal_connect (loader, "notify", G_CALLBACK (swfdec_slow_loader_notify_cb), ret); + size = swfdec_loader_get_size (loader); + if (size) + swfdec_loader_set_size (SWFDEC_LOADER (ret), size); ret->timeout_id = g_timeout_add (ret->tick_time, swfdec_slow_loader_tick, ret); return SWFDEC_LOADER (ret); diff-tree 07efea41adaeeceac6f4ab3ecd9a71c5a9c8791f (from 609e4f1c6bb7aa371146a535ef83cf57e4c30ec3) Author: Benjamin Otte <otte@gnome.org> Date: Wed Mar 21 23:33:42 2007 +0100 compute new width/height relative to original width/height, not current one also implements MovieClip.getDepth (untested) diff --git a/libswfdec/swfdec_js_movie.c b/libswfdec/swfdec_js_movie.c index 5137746..2d9b1a1 100644 --- a/libswfdec/swfdec_js_movie.c +++ b/libswfdec/swfdec_js_movie.c @@ -610,12 +610,26 @@ swfdec_js_getURL (JSContext *cx, JSObjec return JS_TRUE; } +static JSBool +swfdec_js_getDepth (JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + SwfdecMovie *movie; + + movie = JS_GetPrivate (cx, obj); + if (!movie) + return JS_TRUE; + + *rval = INT_TO_JSVAL (movie->depth); + return JS_TRUE; +} + static JSFunctionSpec movieclip_methods[] = { { "attachMovie", swfdec_js_movie_attachMovie, 3, 0, 0 }, { "duplicateMovieClip", swfdec_js_movie_duplicateMovieClip, 2, 0, 0 }, { "eval", swfdec_js_global_eval, 1, 0, 0 }, { "getBytesLoaded", mc_getBytesLoaded, 0, 0, 0 }, { "getBytesTotal", mc_getBytesTotal, 0, 0, 0 }, + { "getDepth", swfdec_js_getDepth, 0, 0, 0 }, { "getNextHighestDepth", mc_getNextHighestDepth, 0, 0, 0 }, { "getProperty", swfdec_js_getProperty, 2, 0, 0 }, { "getURL", swfdec_js_getURL, 2, 0, 0 }, @@ -970,9 +984,9 @@ mc_width_set (JSContext *cx, JSObject *o } swfdec_movie_update (movie); movie->modified = TRUE; - cur = SWFDEC_TWIPS_TO_DOUBLE ((SwfdecTwips) (rint (movie->extents.x1 - movie->extents.x0))); + cur = SWFDEC_TWIPS_TO_DOUBLE ((SwfdecTwips) (rint (movie->original_extents.x1 - movie->original_extents.x0))); if (cur != 0) { - movie->xscale *= d / cur; + movie->xscale = 100 * d / cur; } else { movie->xscale = 0; movie->yscale = 0; @@ -1016,9 +1030,9 @@ mc_height_set (JSContext *cx, JSObject * } swfdec_movie_update (movie); movie->modified = TRUE; - cur = SWFDEC_TWIPS_TO_DOUBLE ((SwfdecTwips) (rint (movie->extents.y1 - movie->extents.y0))); + cur = SWFDEC_TWIPS_TO_DOUBLE ((SwfdecTwips) (rint (movie->original_extents.y1 - movie->original_extents.y0))); if (cur != 0) { - movie->yscale *= d / cur; + movie->yscale = 100 * d / cur; } else { movie->xscale = 0; movie->yscale = 0; diff-tree 609e4f1c6bb7aa371146a535ef83cf57e4c30ec3 (from b12efb820117b62a7150d13359499678e7dcf31d) Author: Benjamin Otte <otte@gnome.org> Date: Wed Mar 21 19:25:10 2007 +0100 add some fixes for number conversion diff --git a/libswfdec/swfdec_script.c b/libswfdec/swfdec_script.c index 06915d0..d96ec0f 100644 --- a/libswfdec/swfdec_script.c +++ b/libswfdec/swfdec_script.c @@ -265,8 +265,12 @@ swfdec_value_to_number (JSContext *cx, j double d; if (!JS_ValueToNumber (cx, val, &d)) return 0; - return isnan (d) ? 0 : d; + return d; } else if (JSVAL_IS_OBJECT(val) && (((SwfdecScript *) cx->fp->swf)->version >= 6)) { + /* Checking for version 6 is completely wrong, but a lot of the testsuite + * depends on it (oops). + * The code calls the valueOf function and returns 0 if no such function exists. + */ return JSVAL_IS_NULL (val) ? 0 : *cx->runtime->jsNaN; } else { return 0;
Maybe Matching Threads
- 5 commits - libswfdec/swfdec_net_stream.c libswfdec/swfdec_player.c libswfdec/swfdec_resource.c libswfdec/swfdec_resource.h player/swfdec_slow_loader.c test/trace
- 10 commits - doc/swfdec-docs.sgml doc/swfdec-sections.txt libswfdec-gtk/swfdec_gtk_loader.c libswfdec/Makefile.am libswfdec/swfdec_as_context.c libswfdec/swfdec_as_frame.c libswfdec/swfdec_buffer.c libswfdec/swfdec_debugger.c libswfdec/swfdec.h
- 11 commits - libswfdec/swfdec_font.c libswfdec/swfdec_font.h libswfdec/swfdec_js_movie.c libswfdec/swfdec_script.c libswfdec/swfdec_script.h test/.gitignore test/trace
- 7 commits - configure.ac doc/swfdec-docs.sgml libswfdec/js libswfdec/swfdec_buffer.c libswfdec/swfdec_buffer.h libswfdec/swfdec_js_movie.c test/trace
- 4 commits - libswfdec-gtk/swfdec_gtk_loader.c libswfdec/swfdec_file_loader.c libswfdec/swfdec_loader.c libswfdec/swfdec_loader.h player/swfdec_slow_loader.c