gnash-commit
[Top][All Lists]
Advanced

[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);
 };
        




reply via email to

[Prev in Thread] Current Thread [Next in Thread]