CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/06/20 14:23:50
Modified files:
. : ChangeLog
server : fill_style.cpp fill_style.h
server/parser : shape_character_def.cpp shape_character_def.h
Log message:
* server/fill_style.{cpp,h}: add an markReachableResources()
function to keep alive eventual bitmap and character fills.
* server/parser/shape_character_def.{cpp,h}: implement resource
marking function, marking fill styles.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3587&r2=1.3588
http://cvs.savannah.gnu.org/viewcvs/gnash/server/fill_style.cpp?cvsroot=gnash&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/gnash/server/fill_style.h?cvsroot=gnash&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/shape_character_def.cpp?cvsroot=gnash&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/shape_character_def.h?cvsroot=gnash&r1=1.12&r2=1.13
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3587
retrieving revision 1.3588
diff -u -b -r1.3587 -r1.3588
--- ChangeLog 19 Jun 2007 22:54:31 -0000 1.3587
+++ ChangeLog 20 Jun 2007 14:23:49 -0000 1.3588
@@ -1,3 +1,10 @@
+2007-06-20 Sandro Santilli <address@hidden>
+
+ * server/fill_style.{cpp,h}: add an markReachableResources()
+ function to keep alive eventual bitmap and character fills.
+ * server/parser/shape_character_def.{cpp,h}: implement resource
+ marking function, marking fill styles.
+
2007-06-19 Sandro Santilli <address@hidden>
* server/StreamProvider.cpp (getStream): transfer ownerhip of
Index: server/fill_style.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/fill_style.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- server/fill_style.cpp 14 May 2007 20:15:03 -0000 1.4
+++ server/fill_style.cpp 20 Jun 2007 14:23:50 -0000 1.5
@@ -457,8 +457,16 @@
}
-// end of namespace
+#ifdef GNASH_USE_GC
+void
+fill_style::markReachableResources() const
+{
+ if ( m_gradient_bitmap_info ) m_gradient_bitmap_info->setReachable();
+ if ( m_bitmap_character ) m_bitmap_character->setReachable();
}
+#endif // GNASH_USE_GC
+
+} // end of namespace
// Local Variables:
Index: server/fill_style.h
===================================================================
RCS file: /sources/gnash/gnash/server/fill_style.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- server/fill_style.h 28 May 2007 15:41:06 -0000 1.5
+++ server/fill_style.h 20 Jun 2007 14:23:50 -0000 1.6
@@ -17,7 +17,7 @@
// Based on work of Thatcher Ulrich <address@hidden> 2003
-/* $Id: fill_style.h,v 1.5 2007/05/28 15:41:06 ann Exp $ */
+/* $Id: fill_style.h,v 1.6 2007/06/20 14:23:50 strk Exp $ */
#ifndef GNASH_FILL_STYLE_H
#define GNASH_FILL_STYLE_H
@@ -117,6 +117,17 @@
/// Returns the color stop value at a specified index
const gradient_record& get_color_stop(int index) const;
+#ifdef GNASH_USE_GC
+ /// Mark reachable resources (for the GC)
+ //
+ /// fill_style specific reachable resources are:
+ ///
+ /// - gradient bitmap info (m_gradient_bitmap_info)
+ /// - bitmap character (m_bitmap_character)
+ ///
+ void markReachableResources() const;
+#endif // GNASH_USE_GC
+
private:
/// Return the color at the specified ratio into our gradient.
Index: server/parser/shape_character_def.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/shape_character_def.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- server/parser/shape_character_def.cpp 15 Jun 2007 18:47:00 -0000
1.28
+++ server/parser/shape_character_def.cpp 20 Jun 2007 14:23:50 -0000
1.29
@@ -17,7 +17,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: shape_character_def.cpp,v 1.28 2007/06/15 18:47:00 strk Exp $ */
+/* $Id: shape_character_def.cpp,v 1.29 2007/06/20 14:23:50 strk Exp $ */
// Based on the public domain shape.cpp of Thatcher Ulrich <address@hidden>
2003
@@ -822,6 +822,19 @@
}
}
+#ifdef GNASH_USE_GC
+void
+shape_character_def::markReachableResources() const
+{
+ assert(isReachable());
+ for (FillStyleVect::const_iterator i=m_fill_styles.begin(),
e=m_fill_styles.end();
+ i != e; ++i)
+ {
+ i->markReachableResources();
+ }
+}
+#endif // GNASH_USE_GC
+
} // end namespace gnash
// Local Variables:
Index: server/parser/shape_character_def.h
===================================================================
RCS file: /sources/gnash/gnash/server/parser/shape_character_def.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- server/parser/shape_character_def.h 14 May 2007 17:23:16 -0000 1.12
+++ server/parser/shape_character_def.h 20 Jun 2007 14:23:50 -0000 1.13
@@ -5,7 +5,7 @@
// Quadratic bezier outline shapes, the basis for most SWF rendering.
-/* $Id: shape_character_def.h,v 1.12 2007/05/14 17:23:16 strk Exp $ */
+/* $Id: shape_character_def.h,v 1.13 2007/06/20 14:23:50 strk Exp $ */
#ifndef GNASH_SHAPE_CHARACTER_DEF_H
#define GNASH_SHAPE_CHARACTER_DEF_H
@@ -33,6 +33,7 @@
typedef std::vector<fill_style> FillStyleVect;
typedef std::vector<line_style> LineStyleVect;
+ typedef std::vector<path> PathVect;
shape_character_def();
virtual ~shape_character_def();
@@ -72,10 +73,20 @@
protected:
friend class morph2_character_def;
+#ifdef GNASH_USE_GC
+ /// Mark reachable resources (for the GC)
+ //
+ /// Reachable resources are:
+ /// - Associated fill styles (m_fill_styles).
+ /// These are not actual resources, but may contain some.
+ ///
+ virtual void markReachableResources() const;
+#endif // GNASH_USE_GC
+
// derived morph classes changes these
- std::vector<fill_style> m_fill_styles;
- std::vector<line_style> m_line_styles;
- std::vector<path> m_paths;
+ FillStyleVect m_fill_styles;
+ LineStyleVect m_line_styles;
+ PathVect m_paths;
rect m_bound;
/// Free all meshes
_______________________________________________
Gnash-commit mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/gnash-commit