[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/character.h server/movie...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/character.h server/movie... |
Date: |
Mon, 02 Apr 2007 09:12:48 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/04/02 09:12:48
Modified files:
. : ChangeLog
server : character.h movie_root.cpp movie_root.h
sprite_instance.cpp sprite_instance.h
Log message:
* server/: character.h, sprite_instance.{cpp,h}:
Moved the isUnloaded()/_unloaded logic from sprite_instance
up to character.
* server/movie_root.{cpp,h}: remove unloaded characters
from the keypress_listeners set (run at ::advance time).
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2742&r2=1.2743
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.h?cvsroot=gnash&r1=1.59&r2=1.60
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_root.cpp?cvsroot=gnash&r1=1.47&r2=1.48
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_root.h?cvsroot=gnash&r1=1.42&r2=1.43
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.215&r2=1.216
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.h?cvsroot=gnash&r1=1.84&r2=1.85
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2742
retrieving revision 1.2743
diff -u -b -r1.2742 -r1.2743
--- ChangeLog 2 Apr 2007 08:06:57 -0000 1.2742
+++ ChangeLog 2 Apr 2007 09:12:48 -0000 1.2743
@@ -1,5 +1,13 @@
2007-04-02 Sandro Santilli <address@hidden>
+ * server/: character.h, sprite_instance.{cpp,h}:
+ Moved the isUnloaded()/_unloaded logic from sprite_instance
+ up to character.
+ * server/movie_root.{cpp,h}: remove unloaded characters
+ from the keypress_listeners set (run at ::advance time).
+
+2007-04-02 Sandro Santilli <address@hidden>
+
* server/sprite_instance.cpp (goto_frame): remember to call
set_invalidated() before running display list tags!
(UdoG: is this correct?)
Index: server/character.h
===================================================================
RCS file: /sources/gnash/gnash/server/character.h,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -b -r1.59 -r1.60
--- server/character.h 22 Mar 2007 16:56:36 -0000 1.59
+++ server/character.h 2 Apr 2007 09:12:48 -0000 1.60
@@ -18,7 +18,7 @@
//
//
-/* $Id: character.h,v 1.59 2007/03/22 16:56:36 bjacques Exp $ */
+/* $Id: character.h,v 1.60 2007/04/02 09:12:48 strk Exp $ */
#ifndef GNASH_CHARACTER_H
#define GNASH_CHARACTER_H
@@ -80,6 +80,10 @@
/// Used to assign a name to unnamed instances
static unsigned int _lastUnnamedInstanceNum;
+ /// Set to yes when this instance has been unloaded
+ bool _unloaded;
+
+
protected:
/// Used to assign a name to unnamed instances
@@ -197,6 +201,7 @@
m_clip_depth(0),
m_display_callback(NULL),
m_display_callback_user_ptr(NULL),
+ _unloaded(false),
m_visible(true),
m_parent(parent),
m_invalidated(true),
@@ -647,10 +652,11 @@
///
virtual void unload()
{
+ _unloaded = true;
on_event(event_id::UNLOAD);
}
-
+ bool isUnloaded() { return _unloaded; }
};
Index: server/movie_root.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/movie_root.cpp,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -b -r1.47 -r1.48
--- server/movie_root.cpp 30 Mar 2007 09:04:38 -0000 1.47
+++ server/movie_root.cpp 2 Apr 2007 09:12:48 -0000 1.48
@@ -481,6 +481,9 @@
}
}
+ // Cleanup keypress listeners (remove unloaded characters)
+ cleanup_keypress_listeners();
+
// random should go continuously that:
// 1. after restart of the player the situation has not repeated
// 2. by different machines the random gave different numbers
@@ -578,8 +581,30 @@
return _movie->call_method_args(method_name, method_arg_fmt, args);
}
+void movie_root::cleanup_keypress_listeners()
+{
+ for (ListenerSet::iterator iter = m_keypress_listeners.begin();
+ iter != m_keypress_listeners.end(); )
+ {
+ // TODO: handle non-character objects too !
+ character* ch = dynamic_cast<character*>(iter->get());
+ if ( ch && ch->isUnloaded() )
+ {
+ ListenerSet::iterator toremove = iter;
+ ++iter;
+ //log_msg("cleanup_keypress_listeners: Removing
unloaded keypress listener %p", iter->get());
+ m_keypress_listeners.erase(toremove);
+ }
+ else
+ {
+ ++iter;
+ }
+ }
+}
+
void movie_root::notify_keypress_listeners(key::code k)
{
+ //log_msg("Notifying %u keypress listeners",
m_keypress_listeners.size());
for (ListenerSet::iterator iter = m_keypress_listeners.begin();
iter != m_keypress_listeners.end(); ++iter)
{
@@ -597,13 +622,22 @@
void movie_root::add_keypress_listener(as_object* listener)
{
- m_keypress_listeners.insert(listener);
+ if ( m_keypress_listeners.insert(listener).second )
+ {
+ //log_msg("Added keypress listener %p", (void*)listener);
+ }
+ else
+ {
+ //log_msg("Keypress listener %p was already in the known set",
(void*)listener);
+ }
assert(testInvariant());
}
void movie_root::remove_keypress_listener(as_object* listener)
{
+ //log_msg("Removing keypress listener %p - %u listeners currently ",
(void*)listener, m_keypress_listeners.size());
m_keypress_listeners.erase(listener);
+ //log_msg("After removing keypress listener %p, %u listeners are left",
(void*)listener, m_keypress_listeners.size());
assert(testInvariant());
}
Index: server/movie_root.h
===================================================================
RCS file: /sources/gnash/gnash/server/movie_root.h,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -b -r1.42 -r1.43
--- server/movie_root.h 29 Mar 2007 12:37:31 -0000 1.42
+++ server/movie_root.h 2 Apr 2007 09:12:48 -0000 1.43
@@ -14,7 +14,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-/* $Id: movie_root.h,v 1.42 2007/03/29 12:37:31 strk Exp $ */
+/* $Id: movie_root.h,v 1.43 2007/04/02 09:12:48 strk Exp $ */
/// \page events_handling Handling of user events
///
@@ -413,6 +413,10 @@
private:
+ /// Remove all listeners with a ref-count of 1
+ /// (only referenced as key listeners)
+ void cleanup_keypress_listeners();
+
/// Return the current Stage object
//
/// Can return NULL if it's been deleted or not
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.215
retrieving revision 1.216
diff -u -b -r1.215 -r1.216
--- server/sprite_instance.cpp 2 Apr 2007 08:06:57 -0000 1.215
+++ server/sprite_instance.cpp 2 Apr 2007 09:12:48 -0000 1.216
@@ -1561,7 +1561,6 @@
character* parent, int id)
:
character(parent, id),
- _unloaded(false),
m_mouse_state(UP),
m_root(r),
m_display_list(),
@@ -3803,8 +3802,7 @@
UnloaderVisitor visitor;
m_display_list.visitForward(visitor);
- on_event(event_id::UNLOAD); // if call_unload
- _unloaded=true;
+ character::unload();
}
Index: server/sprite_instance.h
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.h,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -b -r1.84 -r1.85
--- server/sprite_instance.h 2 Apr 2007 06:18:41 -0000 1.84
+++ server/sprite_instance.h 2 Apr 2007 09:12:48 -0000 1.85
@@ -17,7 +17,7 @@
//
//
-/* $Id: sprite_instance.h,v 1.84 2007/04/02 06:18:41 zoulunkai Exp $ */
+/* $Id: sprite_instance.h,v 1.85 2007/04/02 09:12:48 strk Exp $ */
// Stateful live Sprite instance
@@ -693,8 +693,6 @@
/// @} Drawing API
- bool isUnloaded() { return _unloaded; }
-
typedef std::map<std::string, std::string> VariableMap;
/// Set all variables in the given map with their corresponding values
@@ -712,9 +710,6 @@
///
void queueActions(ActionList& action_list);
- /// Set to yes when this instance has been unloaded
- bool _unloaded;
-
/// Execute a single action buffer (DOACTION block)
void execute_action(action_buffer& ab);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/character.h server/movie...,
Sandro Santilli <=