[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/BitmapMovieInstance.cpp ...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/BitmapMovieInstance.cpp ... |
Date: |
Mon, 14 Jan 2008 20:05:15 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 08/01/14 20:05:15
Modified files:
. : ChangeLog
server : BitmapMovieInstance.cpp BitmapMovieInstance.h
impl.cpp impl.h movie_instance.cpp
sprite_instance.cpp
server/asobj : MovieClipLoader.cpp
server/parser : BitmapMovieDefinition.h movie_def_impl.cpp
movie_def_impl.h movie_definition.h
sprite_definition.h
testsuite : DummyMovieDefinition.h
testsuite/actionscript.all: MovieClip.as
testsuite/swfdec: PASSING
Log message:
Only set a $version property to top-level movies
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5392&r2=1.5393
http://cvs.savannah.gnu.org/viewcvs/gnash/server/BitmapMovieInstance.cpp?cvsroot=gnash&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/gnash/server/BitmapMovieInstance.h?cvsroot=gnash&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/gnash/server/impl.cpp?cvsroot=gnash&r1=1.135&r2=1.136
http://cvs.savannah.gnu.org/viewcvs/gnash/server/impl.h?cvsroot=gnash&r1=1.50&r2=1.51
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_instance.cpp?cvsroot=gnash&r1=1.23&r2=1.24
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.445&r2=1.446
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/MovieClipLoader.cpp?cvsroot=gnash&r1=1.43&r2=1.44
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/BitmapMovieDefinition.h?cvsroot=gnash&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/movie_def_impl.cpp?cvsroot=gnash&r1=1.97&r2=1.98
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/movie_def_impl.h?cvsroot=gnash&r1=1.67&r2=1.68
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/movie_definition.h?cvsroot=gnash&r1=1.40&r2=1.41
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/sprite_definition.h?cvsroot=gnash&r1=1.35&r2=1.36
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/DummyMovieDefinition.h?cvsroot=gnash&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/MovieClip.as?cvsroot=gnash&r1=1.114&r2=1.115
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/swfdec/PASSING?cvsroot=gnash&r1=1.83&r2=1.84
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5392
retrieving revision 1.5393
diff -u -b -r1.5392 -r1.5393
--- ChangeLog 14 Jan 2008 14:23:45 -0000 1.5392
+++ ChangeLog 14 Jan 2008 20:05:12 -0000 1.5393
@@ -1,5 +1,28 @@
2008-01-14 Sandro Santilli <address@hidden>
+ * server/parser/: movie_definition.h, BitmapMovieDefinition.h,
+ movie_def_impl.{cpp,h}:
+ Drop unused create_instance,
+ add a 'parent' argument to create_movie_instance.
+ * server/BitmapMovieInstance.{cpp,h}: add 'parent' argument to
+ constructor.
+ * testsuite/DummyMovieDefinition.h: Drop unused create_instance.
+ * server/impl.{cpp,h}: drop unused create_library_movie_inst function.
+ * server/movie_instance.cpp (ctor): pass the character id in
+ accordance with the assertion checking in character ctor
+ (TODO: drop the id from character instances!)
+ * server/sprite_instance.cpp:
+ (loadMovie): update call to create_movie_instance;
+ (attachMovieClipProperties) don't register a $version variable
+ if the sprite has a parent: fixes bug #22006.
+ * server/asobj/MovieClipLoader.cpp: comment update
+ * testsuite/actionscript.all/MovieClip.as: add test for availability
+ of the $version property.
+ * testsuite/swfdec/PASSING: movieclip-version-{6,7,8}.swf and
+ movie-enumerate-8.swf (completes the series) succeed.
+
+2008-01-14 Sandro Santilli <address@hidden>
+
* plugin/plugin.cpp: fix perror() usage, check that the pipe is
initialized before attempting to write to it.
Index: server/BitmapMovieInstance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/BitmapMovieInstance.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- server/BitmapMovieInstance.cpp 7 Jan 2008 16:47:25 -0000 1.11
+++ server/BitmapMovieInstance.cpp 14 Jan 2008 20:05:13 -0000 1.12
@@ -30,9 +30,9 @@
namespace gnash {
-BitmapMovieInstance::BitmapMovieInstance(BitmapMovieDefinition* def)
+BitmapMovieInstance::BitmapMovieInstance(BitmapMovieDefinition* def,
character* parent)
:
- movie_instance(def, NULL)
+ movie_instance(def, parent)
{
matrix mat;
//mat.concatenate_scale(20.0);
Index: server/BitmapMovieInstance.h
===================================================================
RCS file: /sources/gnash/gnash/server/BitmapMovieInstance.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- server/BitmapMovieInstance.h 1 Jul 2007 10:54:18 -0000 1.5
+++ server/BitmapMovieInstance.h 14 Jan 2008 20:05:13 -0000 1.6
@@ -18,7 +18,7 @@
//
//
-/* $Id: BitmapMovieInstance.h,v 1.5 2007/07/01 10:54:18 bjacques Exp $ */
+/* $Id: BitmapMovieInstance.h,v 1.6 2008/01/14 20:05:13 strk Exp $ */
#ifndef GNASH_BITMAPMOVIEINSTANCE_H
#define GNASH_BITMAPMOVIEINSTANCE_H
@@ -45,7 +45,7 @@
public:
- BitmapMovieInstance(BitmapMovieDefinition* def);
+ BitmapMovieInstance(BitmapMovieDefinition* def, character* parent=0);
virtual ~BitmapMovieInstance() {}
Index: server/impl.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/impl.cpp,v
retrieving revision 1.135
retrieving revision 1.136
diff -u -b -r1.135 -r1.136
--- server/impl.cpp 8 Jan 2008 21:04:25 -0000 1.135
+++ server/impl.cpp 14 Jan 2008 20:05:13 -0000 1.136
@@ -17,7 +17,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: impl.cpp,v 1.135 2008/01/08 21:04:25 strk Exp $ */
+/* $Id: impl.cpp,v 1.136 2008/01/14 20:05:13 strk Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -855,37 +855,6 @@
return mov;
}
-sprite_instance* create_library_movie_inst(movie_definition* md)
-{
- // Is the movie instance already in the library?
- {
- library_container_t::const_iterator i = s_movie_library_inst.find(md);
- if (i != s_movie_library_inst.end())
- {
- // Return cached movie instance.
- boost::intrusive_ptr<sprite_instance> m((*i).second);
- return m.get();
- }
- }
-
- // Try to create movie interface
- sprite_instance* mov = md->create_instance();
-
- if (mov == NULL)
- {
- log_error(_("%s: couldn't create instance"), __FUNCTION__);
-
- return NULL;
- }
- else
- {
- s_movie_library_inst[md] = mov;
- }
-
- return mov;
-}
-
-
#ifdef GNASH_USE_GC
/// A GC root used to mark all reachable collectable pointers
class GnashGcRoot : public GcRoot
Index: server/impl.h
===================================================================
RCS file: /sources/gnash/gnash/server/impl.h,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -b -r1.50 -r1.51
--- server/impl.h 4 Dec 2007 11:45:28 -0000 1.50
+++ server/impl.h 14 Jan 2008 20:05:13 -0000 1.51
@@ -19,7 +19,7 @@
//
//
-/* $Id: impl.h,v 1.50 2007/12/04 11:45:28 strk Exp $ */
+/* $Id: impl.h,v 1.51 2008/01/14 20:05:13 strk Exp $ */
#ifndef GNASH_IMPL_H
#define GNASH_IMPL_H
@@ -59,9 +59,6 @@
// for extern movies
-// TODO: return movie_instance !
-DSOEXPORT sprite_instance *create_library_movie_inst(movie_definition* md);
-
DSOEXPORT movie_root* get_current_root();
DSOEXPORT const char* get_workdir();
DSOEXPORT void set_workdir(const char* dir);
Index: server/movie_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/movie_instance.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- server/movie_instance.cpp 26 Dec 2007 12:35:13 -0000 1.23
+++ server/movie_instance.cpp 14 Jan 2008 20:05:13 -0000 1.24
@@ -39,7 +39,7 @@
movie_instance::movie_instance(movie_definition* def, character* parent)
:
- sprite_instance(def, this, parent, -1),
+ sprite_instance(def, this, parent, parent ? 0 : -1),
_def(def)
{
}
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.445
retrieving revision 1.446
diff -u -b -r1.445 -r1.446
--- server/sprite_instance.cpp 12 Jan 2008 21:19:33 -0000 1.445
+++ server/sprite_instance.cpp 14 Jan 2008 20:05:13 -0000 1.446
@@ -86,7 +86,7 @@
// Forward declarations
static as_object* getMovieClipInterface();
static void attachMovieClipInterface(as_object& o);
-static void attachMovieClipProperties(as_object& o);
+static void attachMovieClipProperties(character& o);
/// Anonymous namespace for module-private definitions
namespace
@@ -1863,14 +1863,16 @@
/// Properties (and/or methods) attached to every *instance* of a MovieClip
static void
-attachMovieClipProperties(as_object& o)
+attachMovieClipProperties(character& o)
{
//int target_version = o.getVM().getSWFVersion();
boost::intrusive_ptr<builtin_function> gettersetter;
// This is a normal property, can be overridden, deleted and enumerated
- o.init_member( "$version", VM::get().getPlayerVersion(), 0);
+ // See swfdec/test/trace/movieclip-version-#.swf for why we only initialize
this
+ // if we don't have a parent
+ if ( ! o.get_parent() ) o.init_member( "$version",
VM::get().getPlayerVersion(), 0);
//
// Properties (TODO: move to appropriate SWF version section)
@@ -3875,7 +3877,7 @@
}
boost::intrusive_ptr<movie_instance> extern_movie;
- extern_movie = md->create_movie_instance();
+ extern_movie = md->create_movie_instance(parent);
if (extern_movie == NULL)
{
log_error(_("can't create extern movie_instance "
@@ -3902,7 +3904,7 @@
int ratio = get_ratio();
int clip_depth = get_clip_depth();
- extern_movie->set_parent(parent);
+ assert ( parent == extern_movie->get_parent() );
sprite_instance* parent_sp = parent->to_movie();
assert(parent_sp);
Index: server/asobj/MovieClipLoader.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/MovieClipLoader.cpp,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -b -r1.43 -r1.44
--- server/asobj/MovieClipLoader.cpp 8 Jan 2008 21:34:38 -0000 1.43
+++ server/asobj/MovieClipLoader.cpp 14 Jan 2008 20:05:14 -0000 1.44
@@ -188,7 +188,7 @@
/// This event must be dispatched when actions
/// in first frame of loaded clip have been executed.
///
- /// Since movie_def_impl::create_instance takes
+ /// Since movie_def_impl::create_movie_instance takes
/// care of this, this should be the correct place
/// to invoke such an event.
///
Index: server/parser/BitmapMovieDefinition.h
===================================================================
RCS file: /sources/gnash/gnash/server/parser/BitmapMovieDefinition.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- server/parser/BitmapMovieDefinition.h 17 Sep 2007 12:21:47 -0000
1.9
+++ server/parser/BitmapMovieDefinition.h 14 Jan 2008 20:05:14 -0000
1.10
@@ -24,7 +24,7 @@
#include "movie_definition.h" // for inheritance
#include "rect.h" // for composition
-#include "BitmapMovieInstance.h" // for create_instance
+#include "BitmapMovieInstance.h" // for create_movie_instance
#include "bitmap_character_def.h" // for destructor visibility by intrusive_ptr
#include "DynamicShape.h" // for destructor visibility by intrusive_ptr
@@ -41,7 +41,7 @@
/// A "movie" definition for a bitmap file
//
-/// The create_instance function will return a BitmapMovieInstance
+/// The create_movie_instance function will return a BitmapMovieInstance
///
class BitmapMovieDefinition : public movie_definition
{
@@ -133,16 +133,10 @@
return 0;
}
- /// Create a playable sprite instance from a def.
- virtual sprite_instance* create_instance()
- {
- return create_movie_instance();
- }
-
/// Create a playable movie_instance from this def.
- virtual movie_instance* create_movie_instance()
+ virtual movie_instance* create_movie_instance(character* parent=0)
{
- return new BitmapMovieInstance(this);
+ return new BitmapMovieInstance(this, parent);
}
virtual const std::string& get_url() const {
Index: server/parser/movie_def_impl.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/movie_def_impl.cpp,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -b -r1.97 -r1.98
--- server/parser/movie_def_impl.cpp 10 Jan 2008 10:57:23 -0000 1.97
+++ server/parser/movie_def_impl.cpp 14 Jan 2008 20:05:14 -0000 1.98
@@ -23,7 +23,7 @@
#include "movie_def_impl.h"
#include "movie_definition.h" // for inheritance
-#include "sprite_instance.h" // for create_instance()
+#include "sprite_instance.h" // for ??
#include "tu_file.h"
#include "zlib_adapter.h"
#include "stream.h"
@@ -606,20 +606,10 @@
}
-sprite_instance*
-movie_def_impl::create_instance()
-{
- return create_movie_instance();
-}
-
movie_instance*
-movie_def_impl::create_movie_instance()
+movie_def_impl::create_movie_instance(character* parent)
{
-
- // @@ Shouldn't we return a movie_instance instead ?
- // @@ and leave movie_root creation to the caller ..
-
- return new movie_instance(this, NULL);
+ return new movie_instance(this, parent);
}
Index: server/parser/movie_def_impl.h
===================================================================
RCS file: /sources/gnash/gnash/server/parser/movie_def_impl.h,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -b -r1.67 -r1.68
--- server/parser/movie_def_impl.h 10 Jan 2008 10:57:23 -0000 1.67
+++ server/parser/movie_def_impl.h 14 Jan 2008 20:05:14 -0000 1.68
@@ -188,7 +188,7 @@
/// Immutable definition of a movie's contents.
//
/// It cannot be played directly, and does not hold
-/// current state; for that you need to call create_instance()
+/// current state; for that you need to call create_movie_instance()
/// to get a movie instance
///
class movie_def_impl : public movie_definition
@@ -553,23 +553,17 @@
/// Fill up *fonts with fonts that we own.
void get_owned_fonts(std::vector<font*>* fonts);
- /// \brief
- /// Create a playable movie_root instance from a def.
+ /// Create an instance of this movie.
//
+ /// TOCHECK:
/// Make sure you called completeLoad() before this
/// function is invoked (calling read() will do that for you).
///
+ /// TOCHECK:
/// The _root reference of the newly created movie_root
/// will be set to a newly created movie_instance.
///
- /// WARNING: the actions in the first frame of the
- /// movie will be executed by this function.
- ///
- ///
- sprite_instance* create_instance();
-
- /// Instanc of this definition is a valid movie_instance
- movie_instance* create_movie_instance();
+ movie_instance* create_movie_instance(character* parent=0);
virtual const std::string& get_url() const { return _url; }
Index: server/parser/movie_definition.h
===================================================================
RCS file: /sources/gnash/gnash/server/parser/movie_definition.h,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- server/parser/movie_definition.h 2 Jan 2008 14:13:59 -0000 1.40
+++ server/parser/movie_definition.h 14 Jan 2008 20:05:14 -0000 1.41
@@ -121,19 +121,12 @@
///
virtual size_t get_bytes_total() const = 0;
- /// Create a playable sprite_instance from a def.
- //
- /// This calls add_ref() on the movie_interface internally.
- /// Call drop_ref() on the movie_interface when you're done with it.
- /// Or use boost::intrusive_ptr<T> from base/smart_ptr.h if you want.
- ///
- virtual sprite_instance* create_instance() = 0;
-
/// Create a movie instance from a def.
//
/// Not all movie definitions allow creation of
/// movie_instance. In particular, sprite_definition
- /// can only create sprite_instance (see create_instance)
+ /// can only create sprite_instance, so will return NULL
+ /// from this method.
///
/// The default implementation returns NULL.
///
@@ -142,7 +135,8 @@
/// movie_def_impl is one such example, future examples
/// should include jpeg_movie_def and similar..
///
- virtual movie_instance* create_movie_instance() {
+ virtual movie_instance* create_movie_instance(character* parent=0)
+ {
return NULL;
}
Index: server/parser/sprite_definition.h
===================================================================
RCS file: /sources/gnash/gnash/server/parser/sprite_definition.h,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -b -r1.35 -r1.36
--- server/parser/sprite_definition.h 14 Dec 2007 22:01:24 -0000 1.35
+++ server/parser/sprite_definition.h 14 Jan 2008 20:05:14 -0000 1.36
@@ -279,12 +279,6 @@
);
}
-
- virtual sprite_instance* create_instance()
- {
- return NULL;
- }
-
// Create a (mutable) instance of our definition. The
// instance is created to live (temporarily) on some level on
// the parent movie's display list.
Index: testsuite/DummyMovieDefinition.h
===================================================================
RCS file: /sources/gnash/gnash/testsuite/DummyMovieDefinition.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- testsuite/DummyMovieDefinition.h 5 Jan 2008 09:56:07 -0000 1.6
+++ testsuite/DummyMovieDefinition.h 14 Jan 2008 20:05:14 -0000 1.7
@@ -43,7 +43,7 @@
/// methods of movie_definition by returning user-defined
/// values for version/size/frame rate etc..
///
-/// The create_instance function will return the same
+/// The create_movie_instance function will return the same
/// object created by createEmptyMovieClip() calls
/// (an empty movieclip... still to be designed)
///
@@ -134,16 +134,10 @@
return 0;
}
- /// Create a playable sprite instance from a def.
- virtual sprite_instance* create_instance()
- {
- return create_movie_instance();
- }
-
/// Create a playable movie instance from a def.
- virtual movie_instance* create_movie_instance()
+ virtual movie_instance* create_movie_instance(character* parent=NULL)
{
- return new movie_instance(this, NULL);
+ return new movie_instance(this, parent);
}
virtual const PlayList& get_playlist(size_t frame_number) const
Index: testsuite/actionscript.all/MovieClip.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/MovieClip.as,v
retrieving revision 1.114
retrieving revision 1.115
diff -u -b -r1.114 -r1.115
--- testsuite/actionscript.all/MovieClip.as 11 Jan 2008 13:18:21 -0000
1.114
+++ testsuite/actionscript.all/MovieClip.as 14 Jan 2008 20:05:14 -0000
1.115
@@ -20,7 +20,7 @@
// compile this test case with Ming makeswf, and then
// execute it like this gnash -1 -r 0 -v out.swf
-rcsid="$Id: MovieClip.as,v 1.114 2008/01/11 13:18:21 strk Exp $";
+rcsid="$Id: MovieClip.as,v 1.115 2008/01/14 20:05:14 strk Exp $";
#include "check.as"
@@ -32,15 +32,15 @@
#endif
#if OUTPUT_VERSION == 6
- check_totals(594); // SWF6
+ check_totals(596); // SWF6
#endif
#if OUTPUT_VERSION == 7
- check_totals(611); // SWF7
+ check_totals(613); // SWF7
#endif
#if OUTPUT_VERSION >= 8
- check_totals(612); // SWF8+
+ check_totals(614); // SWF8+
#endif
play();
@@ -951,6 +951,8 @@
#if OUTPUT_VERSION >= 6
createEmptyMovieClip("container", 5);
+check(!container.hasOwnProperty("$version"));
+check_equals(typeof(container['$version']), 'undefined');
container.createEmptyMovieClip("draw", 5);
draw = container.draw;
Index: testsuite/swfdec/PASSING
===================================================================
RCS file: /sources/gnash/gnash/testsuite/swfdec/PASSING,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -b -r1.83 -r1.84
--- testsuite/swfdec/PASSING 11 Jan 2008 16:15:59 -0000 1.83
+++ testsuite/swfdec/PASSING 14 Jan 2008 20:05:14 -0000 1.84
@@ -288,6 +288,7 @@
movie-enumerate-5.swf:208009dbbd3fd8480fc5dceca5fcd8e3
movie-enumerate-6.swf:4b20406a4417639d751ef6f68ec66248
movie-enumerate-7.swf:497ca1729f29c37f5973965b3a73fc70
+movie-enumerate-8.swf:4f91392c0883896427d75a1cdf56fc84
movieclip-get-swf-version-5.swf:276a5f85dc4368fa3f1c79f41f50b46b
movieclip-get-swf-version-5.swf:fe088f984b71c0e78c2335bb05bbec16
movieclip-get-swf-version-6.swf:2fdfe7f422bf76061c258e8ea5316c4a
@@ -306,6 +307,9 @@
movieclip-swap-depths-6.swf:fdb57e8db6df99d66d93f6fd2d39b0c7
movieclip-swap-depths-7.swf:fb8d472e5da28d95684ce067fccae829
movieclip-swap-depths-8.swf:a02edb0c644d0a47fee7c3ca5135d748
+movieclip-version-6.swf:40e09c3d4c0ed3f7763d30c05725ef1a
+movieclip-version-7.swf:13f6332fef1004b385eafe6f160be531
+movieclip-version-8.swf:fc70eea99141ddfbe9d0fd1b81b1dfbd
moviecliploader-constructor-5.swf:fd0fb9a785017456810f06b61c109d35
moviecliploader-constructor-6.swf:e50f068ebde835d503c43ae1fcaf4371
moviecliploader-getprogress-5.swf:0d58d1e3762e678c27f38309c34906ec