[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/ActionExec.cpp server/mo...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/ActionExec.cpp server/mo... |
Date: |
Sat, 05 Aug 2006 18:10:26 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 06/08/05 18:10:26
Modified files:
. : ChangeLog
server : ActionExec.cpp movie_def_impl.cpp
sprite_definition.h sprite_instance.cpp
sprite_instance.h
server/swf : ASHandlers.cpp
Log message:
* server/ActionExec.cpp: handled case where pc gets far after
stop_pc
* server/movie_def_impl.cpp: added comments about assertion in
ensure_frame_loaded() for target frame < loaded frame case.
* server/sprite_definition.h: fixed ensure_frame_loaded() to not
proxy to movie_definition but rather always return true
(includes
comment about it)
* server/sprite_instance.cpp: added FRAMELOAD_CHUNK define to
load
frames in chunks in advance_root(); reintroduced
ensure_frame_loaded()
call in goto_frame()
* server/sprite_instance.h: added get_loaded_frame() public
method.
* server/swf/ASHandlers.cpp: simplified WaitForFrame action
handlers
to use the new sprite_instance::get_loaded_frame() method.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.590&r2=1.591
http://cvs.savannah.gnu.org/viewcvs/gnash/server/ActionExec.cpp?cvsroot=gnash&r1=1.19&r2=1.20
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_def_impl.cpp?cvsroot=gnash&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_definition.h?cvsroot=gnash&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.27&r2=1.28
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.h?cvsroot=gnash&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/ASHandlers.cpp?cvsroot=gnash&r1=1.43&r2=1.44
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.590
retrieving revision 1.591
diff -u -b -r1.590 -r1.591
--- ChangeLog 4 Aug 2006 17:23:49 -0000 1.590
+++ ChangeLog 5 Aug 2006 18:10:26 -0000 1.591
@@ -1,3 +1,18 @@
+2006-08-05 Sandro Santilli <address@hidden>
+
+ * server/ActionExec.cpp: handled case where pc gets far after stop_pc
+ * server/movie_def_impl.cpp: added comments about assertion in
+ ensure_frame_loaded() for target frame < loaded frame case.
+ * server/sprite_definition.h: fixed ensure_frame_loaded() to not
+ proxy to movie_definition but rather always return true (includes
+ comment about it)
+ * server/sprite_instance.cpp: added FRAMELOAD_CHUNK define to load
+ frames in chunks in advance_root(); reintroduced ensure_frame_loaded()
+ call in goto_frame()
+ * server/sprite_instance.h: added get_loaded_frame() public method.
+ * server/swf/ASHandlers.cpp: simplified WaitForFrame action handlers
+ to use the new sprite_instance::get_loaded_frame() method.
+
2006-08-04 Sandro Santilli <address@hidden>
* server/swf/ASHandlers.cpp: implemented ActionWaitForFrame
Index: server/ActionExec.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/ActionExec.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- server/ActionExec.cpp 4 Aug 2006 17:23:49 -0000 1.19
+++ server/ActionExec.cpp 5 Aug 2006 18:10:26 -0000 1.20
@@ -207,7 +207,7 @@
{
// we need to check at every iteration because
// an action can be longer then a single byte
- if ( pc == stop_pc )
+ if ( pc >= stop_pc )
{
log_error("End of DoAction block hit while skipping "
" %u action tags - "
Index: server/movie_def_impl.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/movie_def_impl.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- server/movie_def_impl.cpp 4 Aug 2006 15:30:36 -0000 1.16
+++ server/movie_def_impl.cpp 5 Aug 2006 18:10:26 -0000 1.17
@@ -429,11 +429,17 @@
assert(framenum <= m_frame_count);
// We already loaded that frame...
+ // (could turn into an assertion directly)
if ( framenum <= m_loading_frame )
{
log_msg("Frame %u already loaded (we loaded %u/%u)",
framenum, m_loading_frame, m_frame_count);
+
+ // we make this an assertion to catch callers
+ // that might check for this condition themself
+ // rather then rely on this function.
assert(0);
+
return true;
}
#if 0 // debugging
Index: server/sprite_definition.h
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_definition.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- server/sprite_definition.h 4 Aug 2006 15:30:36 -0000 1.13
+++ server/sprite_definition.h 5 Aug 2006 18:10:26 -0000 1.14
@@ -330,12 +330,17 @@
}
/// \brief
- /// Ensure framenum frames of top-level movie_definition
- /// are loaded (not frames of current sprite!)
+ /// Ensure framenum frames of this sprite
+ /// have been loaded.
///
virtual bool ensure_frame_loaded(size_t framenum)
{
- return m_movie_def->ensure_frame_loaded(framenum);
+ /// We load full sprite definitions at once, so
+ /// this function always returns true.
+ log_msg("sprite_definition: ensure_frame_loaded(%u) called (we
are at %u", framenum, m_frame_count);
+ assert(framenum <= m_frame_count);
+ return true;
+ //return m_movie_def->ensure_frame_loaded(framenum);
}
/// Return the top-level movie definition
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- server/sprite_instance.cpp 4 Aug 2006 17:23:49 -0000 1.27
+++ server/sprite_instance.cpp 5 Aug 2006 18:10:26 -0000 1.28
@@ -1233,6 +1233,12 @@
size_t framecount = md->get_frame_count();
size_t lastloaded = md->get_loading_frame();
size_t nextframe = lastloaded+1;
+// If != 0 this is the number of frames to load at each iteration
+// of the main loop
+#define FRAMELOAD_CHUNK 0
+#if FRAMELOAD_CHUNK
+ nextframe += FRAMELOAD_CHUNK; // load in chunks of 10 frames
+#endif
//log_msg("Framecount: %u, Lastloaded: %u", framecount, lastloaded);
if ( nextframe <= framecount )
{
@@ -1470,17 +1476,18 @@
target_frame_number = iclamp(target_frame_number, 0,
m_def->get_frame_count() - 1);
-#if 0 // this should only be done if this instance is a movie_instance
- // target_frame_number is 0-based !
- if ( ! m_def->ensure_frame_loaded(target_frame_number+1) )
+ size_t loaded_frames = get_loaded_frames();
+ if ( target_frame_number > loaded_frames )
{
- log_error("Could not advance to frame %d (for goto_frame).",
- target_frame_number+1);
- // these kind of errors should be handled by callers
- assert(0);
-
- }
+#if 0 // debugging
+ log_msg("loaded frames: %u, target frame number: %u",
+ loaded_frames, target_frame_number);
#endif
+ // we might be asking for an already loaded frame
+ // (consider a backward goto and then a forward goto)
+ m_def->ensure_frame_loaded(target_frame_number);
+ }
+
if (target_frame_number < m_current_frame)
{
@@ -1503,6 +1510,7 @@
execute_frame_tags(target_frame_number, false);
//we don't have the concept of a DisplayList update anymore
//m_display_list.update();
+
}
m_current_frame = target_frame_number;
Index: server/sprite_instance.h
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- server/sprite_instance.h 4 Aug 2006 17:23:49 -0000 1.14
+++ server/sprite_instance.h 5 Aug 2006 18:10:26 -0000 1.15
@@ -127,6 +127,16 @@
return m_def->get_frame_count();
}
+ /// Return number of completely loaded frames of this sprite/movie
+ //
+ /// Note: the number is also the last frame accessible (frames
+ /// numberes are 1-based)
+ ///
+ size_t get_loaded_frames() const
+ {
+ return m_def->get_loading_frame();
+ }
+
/// Return total number of bytes in the movie
/// (not sprite!)
size_t get_bytes_total() const
Index: server/swf/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/swf/ASHandlers.cpp,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -b -r1.43 -r1.44
--- server/swf/ASHandlers.cpp 4 Aug 2006 17:23:49 -0000 1.43
+++ server/swf/ASHandlers.cpp 5 Aug 2006 18:10:26 -0000 1.44
@@ -663,10 +663,10 @@
return;
}
- movie_definition* sd = target_sprite->get_movie_definition();
-
- if ( sd->get_loading_frame() < framenum )
+ size_t lastloaded = target_sprite->get_loaded_frames();
+ if ( lastloaded < framenum )
{
+ log_msg("ActionWaitForFrame: frame %u not reached yet (loaded
%u), skipping next %u actions", framenum, lastloaded, skip);
// better delegate this to ActionExec
thread.skip_actions(skip);
}
@@ -1312,12 +1312,12 @@
return;
}
- movie_definition* sd = target_sprite->get_movie_definition();
-
size_t framenum = target_sprite->get_frame_number(framespec);
- if ( sd->get_loading_frame() < framenum )
+ size_t lastloaded = target_sprite->get_loaded_frames();
+ if ( lastloaded < framenum )
{
+ log_msg("ActionWaitForFrameExpression: frame %u not reached yet
(loaded %u), skipping next %u actions", framenum, lastloaded, skip);
// better delegate this to ActionExec
thread.skip_actions(skip);
}
- [Gnash-commit] gnash ChangeLog server/ActionExec.cpp server/mo...,
Sandro Santilli <=