[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/asobj/MovieClipLoader.cp...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/asobj/MovieClipLoader.cp... |
Date: |
Tue, 08 Jan 2008 21:34:39 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 08/01/08 21:34:39
Modified files:
. : ChangeLog
server/asobj : MovieClipLoader.cpp
testsuite/actionscript.all: MovieClipLoader.as
Log message:
fix MovieClipLoader.getProgress()
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5344&r2=1.5345
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/MovieClipLoader.cpp?cvsroot=gnash&r1=1.42&r2=1.43
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/MovieClipLoader.as?cvsroot=gnash&r1=1.14&r2=1.15
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5344
retrieving revision 1.5345
diff -u -b -r1.5344 -r1.5345
--- ChangeLog 8 Jan 2008 21:04:25 -0000 1.5344
+++ ChangeLog 8 Jan 2008 21:34:38 -0000 1.5345
@@ -1,5 +1,11 @@
2008-01-08 Sandro Santilli <address@hidden>
+ * server/asobj/MovieClipLoader.cpp: fix MovieClipLoader.getProgress()
+ * testsuite/actionscript.all/MovieClipLoader.as: test
+ MovieClipLoader.getProgress().
+
+2008-01-08 Sandro Santilli <address@hidden>
+
* server/impl.cpp: have MovieLibrary read cache limit from Rc file.
See bug #21825.
* server/sprite_instance.cpp (sprite_beginFill): don't ignore
Index: server/asobj/MovieClipLoader.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/MovieClipLoader.cpp,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -b -r1.42 -r1.43
--- server/asobj/MovieClipLoader.cpp 25 Dec 2007 18:56:06 -0000 1.42
+++ server/asobj/MovieClipLoader.cpp 8 Jan 2008 21:34:38 -0000 1.43
@@ -93,20 +93,6 @@
return o.get();
}
-
-// progress info
-struct mcl {
- int bytes_loaded;
- int bytes_total;
-};
-
-
-/// Progress object to use as return of MovieClipLoader.getProgress()
-struct mcl_as_object : public as_object
-{
- struct mcl data;
-};
-
class MovieClipLoader: public as_object
{
public:
@@ -115,8 +101,6 @@
~MovieClipLoader();
- struct mcl *getProgress(as_object *ao);
-
/// MovieClip
bool loadClip(const std::string& url, sprite_instance& target);
@@ -146,15 +130,12 @@
std::string _filespec;
int _progress;
bool _error;
- struct mcl _mcl;
};
MovieClipLoader::MovieClipLoader()
:
as_object(getMovieClipLoaderInterface())
{
- _mcl.bytes_loaded = 0;
- _mcl.bytes_total = 0;
as_array_object* ar = new as_array_object();
ar->push(this);
@@ -166,16 +147,6 @@
GNASH_REPORT_FUNCTION;
}
-// progress of the downloaded file(s).
-struct mcl *
-MovieClipLoader::getProgress(as_object* /*ao*/)
-{
- GNASH_REPORT_FUNCTION;
-
- return &_mcl;
-}
-
-
bool
MovieClipLoader::loadClip(const std::string& url_str, sprite_instance& target)
{
@@ -205,12 +176,10 @@
callMethod(NSV::PROP_BROADCAST_MESSAGE, as_value("onLoadStart"),
targetVal);
// Dispatch onLoadProgress
- struct mcl *mcl_data = getProgress(&target);
- // the callback since we're done loading the file
- mcl_data->bytes_loaded = target.get_bytes_loaded();
- mcl_data->bytes_total = target.get_bytes_total();
+ size_t bytesLoaded = target.get_bytes_loaded();
+ size_t bytesTotal = target.get_bytes_total();
callMethod(NSV::PROP_BROADCAST_MESSAGE, as_value("onLoadProgress"),
targetVal,
- mcl_data->bytes_loaded, mcl_data->bytes_total);
+ bytesLoaded, bytesTotal);
// Dispatch onLoadComplete
callMethod(NSV::PROP_BROADCAST_MESSAGE, as_value("onLoadComplete"),
targetVal,
@@ -329,14 +298,37 @@
boost::intrusive_ptr<as_object> target = fn.arg(0).to_object();
- struct mcl *mcl_data = ptr->getProgress(target.get());
+ if ( ! target.get() )
+ {
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror(_("MovieClipLoader.getProgress(%s): first argument
is not an object"),
+ fn.arg(0).to_debug_string().c_str());
+ );
+ return as_value();
+ }
- boost::intrusive_ptr<mcl_as_object> mcl_obj ( new mcl_as_object );
+ sprite_instance* sp = target->to_movie();
+ if ( ! sp )
+ {
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror(_("MovieClipLoader.getProgress(%s): first argument
is not an sprite"),
+ fn.arg(0).to_debug_string().c_str());
+ );
+ return as_value();
+ }
+
+
+ boost::intrusive_ptr<as_object> mcl_obj ( new as_object() );
+
+ size_t bytesLoaded = sp->get_bytes_loaded();
+ size_t bytesTotal = sp->get_bytes_total();
- // We want these to be enumerable
string_table& st = ptr->getVM().getStringTable();
- mcl_obj->set_member(st.find(PROPNAME("bytesLoaded")),
mcl_data->bytes_loaded);
- mcl_obj->set_member(st.find(PROPNAME("bytesTotal")),
mcl_data->bytes_total);
+
+ // We want these to be enumerable
+ mcl_obj->set_member(st.find(PROPNAME("bytesLoaded")), bytesLoaded);
+ mcl_obj->set_member(st.find(PROPNAME("bytesTotal")), bytesTotal);
+
return as_value(mcl_obj.get()); // will keep alive
}
Index: testsuite/actionscript.all/MovieClipLoader.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/MovieClipLoader.as,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- testsuite/actionscript.all/MovieClipLoader.as 7 Jan 2008 20:31:11
-0000 1.14
+++ testsuite/actionscript.all/MovieClipLoader.as 8 Jan 2008 21:34:38
-0000 1.15
@@ -21,7 +21,7 @@
// compile this test case with Ming makeswf, and then
// execute it like this gnash -1 -r 0 -v out.swf
-rcsid="$Id: MovieClipLoader.as,v 1.14 2008/01/07 20:31:11 strk Exp $";
+rcsid="$Id: MovieClipLoader.as,v 1.15 2008/01/08 21:34:38 strk Exp $";
#include "check.as"
@@ -286,6 +286,14 @@
function test3()
{
+ // getProgress can be called using *any* target
+ // and will return the target's actual size
+ var prog = mcl.getProgress(_level0);
+ check_equals(typeof(prog), 'object');
+ check_equals(prog.__proto__, undefined);
+ check_equals(prog.bytesLoaded, prog.bytesTotal);
+ check_equals(prog.bytesTotal, _level0.getBytesTotal());
+
resetState();
state.nextFunction = undefined;
expected.target = _root.loadtarget;
@@ -301,7 +309,7 @@
// subtract the number of progress callback runs reported when playing
from the totals to get the correct number
// BUT MAKE SURE nextTestOrEnd CONTAINS THE CORRECT
testsPerProgressCallback INFO !!
//
- expected.totals = 64;
+ expected.totals = 68;
// gnash doesn't call onLoadInit if the data at the url is not an SWF
or JPG
// (or whatever else can become a movie_instance), while the PP does.
// So in this testcase, the attempt to load vars.txt is invalid for
Gnash
@@ -316,6 +324,7 @@
loadtarget._x = 200;
loadtarget._alpha = 20;
check( mcl.loadClip( MEDIA(green.jpg), 'loadtarget' ) );
+
}
// Due to a bug in Gnash we must stop() before calling test1.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/asobj/MovieClipLoader.cp...,
Sandro Santilli <=