[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/movie_root.cpp server/mo...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/movie_root.cpp server/mo... |
Date: |
Thu, 02 Aug 2007 22:07:26 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/08/02 22:07:26
Modified files:
. : ChangeLog
server : movie_root.cpp movie_root.h
Log message:
* server/movie_root.{cpp,h}: use a member (and a getter) for
the global
key object, and properly mark it as alive.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3924&r2=1.3925
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_root.cpp?cvsroot=gnash&r1=1.80&r2=1.81
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_root.h?cvsroot=gnash&r1=1.69&r2=1.70
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3924
retrieving revision 1.3925
diff -u -b -r1.3924 -r1.3925
--- ChangeLog 2 Aug 2007 21:23:42 -0000 1.3924
+++ ChangeLog 2 Aug 2007 22:07:25 -0000 1.3925
@@ -1,5 +1,10 @@
2007-08-02 Sandro Santilli <address@hidden>
+ * server/movie_root.{cpp,h}: use a member (and a getter) for the global
+ key object, and properly mark it as alive.
+
+2007-08-02 Sandro Santilli <address@hidden>
+
* server/edit_text_character.cpp: register statics.
* server/sprite_instance.cpp: register statics.
* server/video_stream_instance.cpp: register statics.
Index: server/movie_root.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/movie_root.cpp,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -b -r1.80 -r1.81
--- server/movie_root.cpp 2 Aug 2007 04:57:19 -0000 1.80
+++ server/movie_root.cpp 2 Aug 2007 22:07:25 -0000 1.81
@@ -247,23 +247,19 @@
}
-
-
-key_as_object *
-movie_root::notify_global_key(key::code k, bool down)
+boost::intrusive_ptr<key_as_object>
+movie_root::getKeyObject()
{
VM& vm = VM::get();
- if ( vm.getSWFVersion() < 5 )
- {
- // Key was added in SWF5
- return NULL;
- }
- static boost::intrusive_ptr<key_as_object> keyobject = NULL;
- if ( ! keyobject )
+ // TODO: test what happens with the global "Key" object
+ // is removed or overridden by the user
+
+ if ( ! _keyobject )
{
- // This isn't very performant... do we allow user override
- // of _global.Key, btw ?
+ // This isn't very performant...
+ // it will keep trying to find it even if impossible
+ // to find.
as_value kval;
as_object* global = VM::get().getGlobal();
@@ -278,21 +274,36 @@
//log_msg("Found member 'Key' in _global: %s",
kval.to_string());
boost::intrusive_ptr<as_object> obj = kval.to_object();
//log_msg("_global.Key to_object() : %s @ %p",
typeid(*obj).name(), obj);
- keyobject = boost::dynamic_pointer_cast<key_as_object>(
obj );
+ _keyobject =
boost::dynamic_pointer_cast<key_as_object>( obj );
+ }
}
+
+ return _keyobject;
+}
+
+
+key_as_object *
+movie_root::notify_global_key(key::code k, bool down)
+{
+ VM& vm = VM::get();
+ if ( vm.getSWFVersion() < 5 )
+ {
+ // Key was added in SWF5
+ return NULL;
}
+ boost::intrusive_ptr<key_as_object> keyobject = getKeyObject();
if ( keyobject )
{
- if (down) keyobject->set_key_down(k);
- else keyobject->set_key_up(k);
+ if (down) _keyobject->set_key_down(k);
+ else _keyobject->set_key_up(k);
}
else
{
log_error("gnash::notify_key_event(): _global.Key doesn't
exist, or isn't the expected built-in\n");
}
- return keyobject.get();
+ return _keyobject.get();
}
bool
@@ -1118,8 +1129,7 @@
void
movie_root::markReachableResources() const
{
- // Mark root movie as reachable
- // TODO: mark all levels !!
+ // Mark movie levels as reachable
for (Levels::const_reverse_iterator i=_movies.rbegin(),
e=_movies.rend(); i!=e; ++i)
{
i->second->setReachable();
@@ -1157,6 +1167,9 @@
(*i)->setReachable();
}
#endif
+
+ // Mark global key object
+ if ( _keyobject ) _keyobject->setReachable();
}
#endif // GNASH_USE_GC
Index: server/movie_root.h
===================================================================
RCS file: /sources/gnash/gnash/server/movie_root.h,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -b -r1.69 -r1.70
--- server/movie_root.h 18 Jul 2007 23:31:59 -0000 1.69
+++ server/movie_root.h 2 Aug 2007 22:07:26 -0000 1.70
@@ -15,7 +15,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.69 2007/07/18 23:31:59 strk Exp $ */
+/* $Id: movie_root.h,v 1.70 2007/08/02 22:07:26 strk Exp $ */
/// \page events_handling Handling of user events
///
@@ -539,6 +539,7 @@
/// - Timer targets (_intervalTimers)
/// - Resources reachable by ActionQueue code (_actionQueue)
/// - Key listeners (_keyListeners || m_key_listeners)
+ /// - global Key object (_keyobject)
///
void markReachableResources() const;
#endif // GNASH_USE_GC
@@ -612,6 +613,9 @@
#else
ListenerSet m_key_listeners;
#endif
+
+ boost::intrusive_ptr<key_as_object> _keyobject;
+
/// Objects listening for mouse events (down,up,move)
ListenerSet m_mouse_listeners;
@@ -680,6 +684,13 @@
/// _level<num>
///
void setLevel(unsigned int num, boost::intrusive_ptr<movie_instance>
movie);
+
+ /// Return the global Key object
+ //
+ /// @@ might be worth making public
+ ///
+ boost::intrusive_ptr<key_as_object> getKeyObject();
+
};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/movie_root.cpp server/mo...,
Sandro Santilli <=