So here is the patch series to make blocky.swf work with branch 'as'.
Summary:
Nguy?n Th?i Ng?c Duy (7):
Add a missing else statement
Create swfdec_movie_duplicate
Implement action CloneSprite with swfdec_movie_duplicate
Add action RemoveSprite
Add new variables to the target
Remove movies with the same name when adding new movie
We don't handle replacing movies other than SwfdecGraphicMovie yet
libswfdec/swfdec_as_context.c | 6 +++
libswfdec/swfdec_as_interpret.c | 61 ++++++++++++++++++++++++++++++++++-
libswfdec/swfdec_movie.c | 48 ++++++++++++++++++++++++++++
libswfdec/swfdec_movie.h | 4 ++-
libswfdec/swfdec_sprite_movie.c | 3 +-
libswfdec/swfdec_sprite_movie_as.c | 30 +----------------
libswfdec/swfdec_swf_instance.c | 3 +-
7 files changed, 122 insertions(+), 33 deletions(-)
CloneSprite/RemoveSprite patches I already posted earlier for fatal_
because I expected it would take longer to debug, but it didn't. Post
again for the sake of complete series.
Patch 6 is not really great. It should be rewritten for better
performance. Any idea? Ah and you need to comment out
createEmptyMovieClip because it's not good enough for blocky.swf ;-)
--
Duy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Add-a-missing-else-statement.patch
Type: text/x-patch
Size: 855 bytes
Desc: not available
Url :
http://lists.freedesktop.org/archives/swfdec/attachments/20070623/a42eea43/attachment.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-Create-swfdec_movie_duplicate.patch
Type: text/x-patch
Size: 4594 bytes
Desc: not available
Url :
http://lists.freedesktop.org/archives/swfdec/attachments/20070623/a42eea43/attachment-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0003-Implement-action-CloneSprite-with-swfdec_movie_dupli.patch
Type: text/x-patch
Size: 3256 bytes
Desc: not available
Url :
http://lists.freedesktop.org/archives/swfdec/attachments/20070623/a42eea43/attachment-0002.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0004-Add-action-RemoveSprite.patch
Type: text/x-patch
Size: 3072 bytes
Desc: not available
Url :
http://lists.freedesktop.org/archives/swfdec/attachments/20070623/a42eea43/attachment-0003.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0005-Add-new-variables-to-the-target.patch
Type: text/x-patch
Size: 991 bytes
Desc: not available
Url :
http://lists.freedesktop.org/archives/swfdec/attachments/20070623/a42eea43/attachment-0004.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0006-Remove-movies-with-the-same-name-when-adding-new-mov.patch
Type: text/x-patch
Size: 1361 bytes
Desc: not available
Url :
http://lists.freedesktop.org/archives/swfdec/attachments/20070623/a42eea43/attachment-0005.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0007-We-don-t-handle-replacing-movies-other-than-SwfdecGr.patch
Type: text/x-patch
Size: 1024 bytes
Desc: not available
Url :
http://lists.freedesktop.org/archives/swfdec/attachments/20070623/a42eea43/attachment-0006.bin
Sorry for not reviewing your patches earlier, but my broken laptop
kept my brain busy ("buy a new one?" "or not?"). Here's
a quick
rundown:
> 0001-Add-a-missing-else-statement.patch
>
This should be fixed since 82959bab78752fb764d70c2d60d005a0e9f5ba95.
> 0002-Create-swfdec_movie_duplicate.patch
> 0003-Implement-action-CloneSprite-with-swfdec_movie_dupli.patch
>
I'm poking at this now. It seems the most interesting question is:
What is copied and what isn't. And for stuff that isn't copied,
what's
it initialized to. This is probably related to patch 7.
> 0004-Add-action-RemoveSprite.patch
>
This seems pretty easy, when we know which movies get removed. I'll
cook up a test consisting of lots of createEmptyMovieClip (),
swapDepth(), RemoveSprite calls and see what happens.
We might also need a target path lookup function as RemoveSprite seems
to operate on the target. Need to test...
> 0005-Add-new-variables-to-the-target.patch
>
Looks correct. I'd love to have the SwfdecFrame struct have target,
original_target and local_object (instead of var_object) properties to
make setting variables work perfectly. That should make the code a lot
cleaner than these loops everywhere.
Oh, and this is another obvious candidate for tests...
> 0006-Remove-movies-with-the-same-name-when-adding-new-mov.patch
>
This is definitely wrong. See attached movie81.as test. It seems the
movie with the lowest depth is taken if multiple movies have the same
name.
Could you give a reason for why this was necessary?
> 0007-We-don-t-handle-replacing-movies-other-than-SwfdecGr.patch
>
This touches the "what is copied and what isn't" problem again.
Someone should take every member of SwfdecMovie (and
SwfdecSpriteMovie) and write a test if it's copied or not. I'm
thinking of script properties like color_transform or visible here.
I'd be interested in the reasons for this patch, too.
Benjamin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: movie81.as
Type: application/x-applix-spreadsheet
Size: 367 bytes
Desc: not available
Url :
http://lists.freedesktop.org/archives/swfdec/attachments/20070624/5dee4b1d/attachment.bin
Reasonably Related Threads
- Branch 'as' - 5 commits - libswfdec-gtk/swfdec_playback_alsa.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_movie.c test/trace
- Branch 'as' - 6 commits - libswfdec/swfdec_as_interpret.c libswfdec/swfdec_movie.c libswfdec/swfdec_sprite_movie_as.c test/trace
- Branch 'as' - libswfdec/swfdec_as_interpret.c
- some patches for swfdec
- [Bug 12794] New: swfdec_text_field_movie assertion on blocky.swf