[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/button_character_instanc...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/button_character_instanc... |
Date: |
Sat, 04 Nov 2006 00:56:13 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 06/11/04 00:56:13
Modified files:
. : ChangeLog
server : button_character_instance.cpp
server/parser : button_character_def.cpp button_character_def.h
Log message:
* server/button_character_instance.cpp (ctor): don't resolve
characters associated to button records, that is now done
by button_record read function.
* server/parser/button_character_def.{h,cpp}
(button_record::read):
resolve characters immediately, returning false if impossible.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.1503&r2=1.1504
http://cvs.savannah.gnu.org/viewcvs/gnash/server/button_character_instance.cpp?cvsroot=gnash&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/button_character_def.cpp?cvsroot=gnash&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/button_character_def.h?cvsroot=gnash&r1=1.5&r2=1.6
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.1503
retrieving revision 1.1504
diff -u -b -r1.1503 -r1.1504
--- ChangeLog 4 Nov 2006 00:46:38 -0000 1.1503
+++ ChangeLog 4 Nov 2006 00:56:13 -0000 1.1504
@@ -1,3 +1,11 @@
+2006-11-03 Sandro Santilli <address@hidden>
+
+ * server/button_character_instance.cpp (ctor): don't resolve
+ characters associated to button records, that is now done
+ by button_record read function.
+ * server/parser/button_character_def.{h,cpp} (button_record::read):
+ resolve characters immediately, returning false if impossible.
+
2006-11-03 Rob Savoye <address@hidden>
* autogen.sh: Don't pass -I macro if the directory doesn't
Index: server/button_character_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/button_character_instance.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- server/button_character_instance.cpp 3 Nov 2006 14:03:37 -0000
1.11
+++ server/button_character_instance.cpp 4 Nov 2006 00:56:13 -0000
1.12
@@ -162,19 +162,12 @@
for (r = 0; r < r_num; r++)
{
- button_record* bdef = &m_def->m_button_records[r];
-
- if (bdef->m_character_def == NULL)
- {
- // Resolve the character id.
- bdef->m_character_def =
movie_def->get_character_def(bdef->m_character_id);
- }
- assert(bdef->m_character_def != NULL);
+ button_record& bdef = m_def->m_button_records[r];
const matrix& mat =
m_def->m_button_records[r].m_button_matrix;
const cxform& cx = m_def->m_button_records[r].m_button_cxform;
- smart_ptr<character> ch =
bdef->m_character_def->create_character_instance(this, id);
+ smart_ptr<character> ch =
bdef.m_character_def->create_character_instance(this, id);
m_record_character[r] = ch;
ch->set_matrix(mat);
ch->set_cxform(cx);
Index: server/parser/button_character_def.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/button_character_def.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- server/parser/button_character_def.cpp 16 Oct 2006 14:33:38 -0000
1.4
+++ server/parser/button_character_def.cpp 4 Nov 2006 00:56:13 -0000
1.5
@@ -59,10 +59,9 @@
// button_record
//
-// Return true if we read a record; false if this is a null record.
bool
button_record::read(stream* in, int tag_type,
- movie_definition* /*m*/)
+ movie_definition* m)
{
int flags = in->read_u8();
if (flags == 0)
@@ -75,7 +74,21 @@
m_up = flags & 1 ? true : false;
m_character_id = in->read_u16();
- m_character_def = NULL;
+
+ // Get character definition now (safer)
+ m_character_def = m->get_character_def(m_character_id);
+ // If no character with given ID is found in the movie
+ // definition, we'll return false and hopefully caller
+ // will use it ...
+ if ( ! m_character_def )
+ {
+ log_error("button record refer to "
+ "character with id %d, which is not found "
+ "in the chars dictionary", m_character_id);
+ return false;
+ }
+ // TODO: check if we should call add_ref on the character_def
+
m_button_layer = in->read_u16();
m_button_matrix.read(in);
@@ -174,6 +187,8 @@
if (r.read(in, tag_type, m) == false)
{
// Null record; marks the end of button records.
+ // (or an error, which we consider as an end
+ // for safety)
break;
}
m_button_records.push_back(r);
Index: server/parser/button_character_def.h
===================================================================
RCS file: /sources/gnash/gnash/server/parser/button_character_def.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- server/parser/button_character_def.h 3 Nov 2006 14:03:37 -0000
1.5
+++ server/parser/button_character_def.h 4 Nov 2006 00:56:13 -0000
1.6
@@ -34,6 +34,13 @@
matrix m_button_matrix;
cxform m_button_cxform;
+ /// Read a button record from the SWF stream.
+ //
+ /// Return true if we read a record; false if this is a null
+ /// record or we encountered any other error (like references
+ /// to unexistent characters)
+ ///
+ ///
bool read(stream* in, int tag_type, movie_definition* m);
};
- [Gnash-commit] gnash ChangeLog server/button_character_instanc...,
Sandro Santilli <=