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... [relea


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/button_character_instanc... [release_0_7_2]
Date: Sat, 04 Nov 2006 00:55:38 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Branch:         release_0_7_2
Changes by:     Sandro Santilli <strk>  06/11/04 00:55:38

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&only_with_tag=release_0_7_2&r1=1.1412.2.61&r2=1.1412.2.62
http://cvs.savannah.gnu.org/viewcvs/gnash/server/button_character_instance.cpp?cvsroot=gnash&only_with_tag=release_0_7_2&r1=1.10&r2=1.10.2.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/button_character_def.cpp?cvsroot=gnash&only_with_tag=release_0_7_2&r1=1.4&r2=1.4.2.1
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/button_character_def.h?cvsroot=gnash&only_with_tag=release_0_7_2&r1=1.3&r2=1.3.2.1

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.1412.2.61
retrieving revision 1.1412.2.62
diff -u -b -r1.1412.2.61 -r1.1412.2.62
--- ChangeLog   4 Nov 2006 00:46:03 -0000       1.1412.2.61
+++ ChangeLog   4 Nov 2006 00:55:38 -0000       1.1412.2.62
@@ -1,5 +1,13 @@
 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 Sandro Santilli <address@hidden>
+
        * server/swf.h: added some new SWF8 opcodes.
        * server/as_function.cpp (ctor): always increment refcount on
          prototype object.

Index: server/button_character_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/button_character_instance.cpp,v
retrieving revision 1.10
retrieving revision 1.10.2.1
diff -u -b -r1.10 -r1.10.2.1
--- server/button_character_instance.cpp        26 Oct 2006 17:29:09 -0000      
1.10
+++ server/button_character_instance.cpp        4 Nov 2006 00:55:38 -0000       
1.10.2.1
@@ -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.4.2.1
diff -u -b -r1.4 -r1.4.2.1
--- 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:55:38 -0000       
1.4.2.1
@@ -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.3
retrieving revision 1.3.2.1
diff -u -b -r1.3 -r1.3.2.1
--- server/parser/button_character_def.h        16 Oct 2006 14:33:38 -0000      
1.3
+++ server/parser/button_character_def.h        4 Nov 2006 00:55:38 -0000       
1.3.2.1
@@ -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]