gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/StringPredicates.h serve...


From: Benjamin Wolsey
Subject: [Gnash-commit] gnash ChangeLog server/StringPredicates.h serve...
Date: Fri, 25 Apr 2008 15:28:54 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Benjamin Wolsey <bwy>   08/04/25 15:28:54

Modified files:
        .              : ChangeLog 
        server         : StringPredicates.h 
        server/asobj   : Global.cpp Stage.cpp Stage.h 
        testsuite/swfdec: PASSING 

Log message:
                * server/asobj/Stage.{cpp,h}: register ASnative methods 
separately,
                  drop methods from Stage class, reduce reliance on Stage class
                  generally (needs to go completely for ASnative functions, as 
it's not
                  necessarily initialized in time). Case insensitive setters 
(fixes
                  part of swfdec scalemode test).
                * server/asobj/Global.cpp: register Stage ASnative functions 
from SWF5
                  (fixes another part of swfdec test).
                * server/StringPredicates.h: drop separate length test
                  (StringNoCaseEqual).
                * testsuite/swfdec/PASSING: scalemode tests pass.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6395&r2=1.6396
http://cvs.savannah.gnu.org/viewcvs/gnash/server/StringPredicates.h?cvsroot=gnash&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Global.cpp?cvsroot=gnash&r1=1.119&r2=1.120
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Stage.cpp?cvsroot=gnash&r1=1.43&r2=1.44
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Stage.h?cvsroot=gnash&r1=1.20&r2=1.21
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/swfdec/PASSING?cvsroot=gnash&r1=1.135&r2=1.136

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6395
retrieving revision 1.6396
diff -u -b -r1.6395 -r1.6396
--- ChangeLog   25 Apr 2008 15:07:45 -0000      1.6395
+++ ChangeLog   25 Apr 2008 15:28:52 -0000      1.6396
@@ -1,3 +1,16 @@
+2008-04-25 Benjamin Wolsey <address@hidden>
+
+       * server/asobj/Stage.{cpp,h}: register ASnative methods separately,
+         drop methods from Stage class, reduce reliance on Stage class
+         generally (needs to go completely for ASnative functions, as it's not
+         necessarily initialized in time). Case insensitive setters (fixes
+         part of swfdec scalemode test).
+       * server/asobj/Global.cpp: register Stage ASnative functions from SWF5
+         (fixes another part of swfdec test).
+       * server/StringPredicates.h: drop separate length test
+         (StringNoCaseEqual).
+       * testsuite/swfdec/PASSING: scalemode tests pass.
+
 2008-04-25 Sandro Santilli <address@hidden>
 
        * gui/gui.cpp (updateStageMatrix): don't try to tell a NULL renderer

Index: server/StringPredicates.h
===================================================================
RCS file: /sources/gnash/gnash/server/StringPredicates.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- server/StringPredicates.h   27 Mar 2008 10:50:14 -0000      1.14
+++ server/StringPredicates.h   25 Apr 2008 15:28:53 -0000      1.15
@@ -60,7 +60,6 @@
 public:
        bool operator() (const std::string& a, const std::string& b) const
        {
-               if ( a.length() != b.length() ) return false;
                return boost::iequals(a, b);
        }
 };

Index: server/asobj/Global.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Global.cpp,v
retrieving revision 1.119
retrieving revision 1.120
diff -u -b -r1.119 -r1.120
--- server/asobj/Global.cpp     24 Apr 2008 13:28:42 -0000      1.119
+++ server/asobj/Global.cpp     25 Apr 2008 15:28:53 -0000      1.120
@@ -601,6 +601,7 @@
        
        // TODO: When should these be registered?
        registerSystemNative(*this);
+       registerStageNative(*this);
 
     vm.registerNative(as_global_trace, 100, 4);
        init_member("trace", vm.getNative(100, 4));

Index: server/asobj/Stage.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Stage.cpp,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -b -r1.43 -r1.44
--- server/asobj/Stage.cpp      24 Apr 2008 14:06:26 -0000      1.43
+++ server/asobj/Stage.cpp      25 Apr 2008 15:28:53 -0000      1.44
@@ -38,13 +38,30 @@
 
 namespace gnash {
 
-as_value stage_scalemode_getset(const fn_call& fn);
-as_value stage_align_getset(const fn_call& fn);
-as_value stage_showMenu_getset(const fn_call& fn);
-as_value stage_width_getset(const fn_call& fn);
-as_value stage_height_getset(const fn_call& fn);
-as_value stage_displaystate_getset(const fn_call& fn);
+static as_value stage_scalemode_getset(const fn_call& fn);
+static as_value stage_align_getset(const fn_call& fn);
+static as_value stage_showMenu_getset(const fn_call& fn);
+static as_value stage_width_getset(const fn_call& fn);
+static as_value stage_height_getset(const fn_call& fn);
+static as_value stage_displaystate_getset(const fn_call& fn);
+static const char* getScaleModeString(movie_root::ScaleMode sm);
+static const char* getDisplayStateString(Stage::DisplayState ds);
 
+void registerStageNative(as_object& o)
+{
+       VM& vm = o.getVM();
+       
+       vm.registerNative(stage_scalemode_getset, 666, 1);
+    vm.registerNative(stage_scalemode_getset, 666, 2);
+    vm.registerNative(stage_align_getset, 666, 3);
+       vm.registerNative(stage_align_getset, 666, 4);
+       vm.registerNative(stage_width_getset, 666, 5);
+    vm.registerNative(stage_width_getset, 666, 6);
+       vm.registerNative(stage_height_getset, 666, 7);
+    vm.registerNative(stage_height_getset, 666, 8);
+       vm.registerNative(stage_showMenu_getset, 666, 9);
+    vm.registerNative(stage_showMenu_getset, 666, 10);
+}
 
 static void
 attachStageInterface(as_object& o)
@@ -57,49 +74,23 @@
 
        as_c_function_ptr getset;
 
-       // Stage.scaleMode getter-setter
        getset = stage_scalemode_getset;
-       if ( version > 5)
-    {
-       vm.registerNative(getset, 666, 1);
-           vm.registerNative(getset, 666, 2);
-    }
        o.init_property("scaleMode", getset, getset);
 
        // Stage.align getter-setter
        getset = stage_align_getset;
-       if ( version > 5)
-    {
-       vm.registerNative(getset, 666, 3);
-           vm.registerNative(getset, 666, 4);
-    }
        o.init_property("align", getset, getset);
 
        // Stage.width getter-setter
        getset = stage_width_getset;
-       if ( version > 5)
-    {
-       vm.registerNative(getset, 666, 5);
-           vm.registerNative(getset, 666, 6);
-    }
        o.init_property("width", getset, getset);
 
        // Stage.height getter-setter
        getset = stage_height_getset;
-       if ( version > 5)
-    {
-       vm.registerNative(getset, 666, 7);
-           vm.registerNative(getset, 666, 8);
-    }
        o.init_property("height", getset, getset);
 
        // Stage.showMenu getter-setter
        getset = stage_showMenu_getset;
-       if ( version > 5)
-    {
-       vm.registerNative(getset, 666, 9);
-           vm.registerNative(getset, 666, 10);
-    }
        o.init_property("showMenu", getset, getset);
 
        getset = stage_displaystate_getset;
@@ -142,34 +133,6 @@
        callMethod(NSV::PROP_BROADCAST_MESSAGE, "onResize");
 }
 
-/// Expected behaviour is that the original movie size is aways returned
-/// as long as scaling is allowed.
-
-const char*
-Stage::getDisplayStateString()
-{
-       static const char* displayStateName[] = {
-               "normal",
-               "fullScreen" };
-
-       return displayStateName[_displayState];
-}
-
-
-const char*
-Stage::getScaleModeString()
-{
-       static const char* modeName[] = {
-               "showAll",
-               "noScale",
-               "exactFit",
-               "noBorder" };
-
-    movie_root& m = VM::get().getRoot();
-
-       return modeName[m.getScaleMode()];
-}
-
 
 void
 Stage::setDisplayState(DisplayState state)
@@ -231,22 +194,51 @@
 
 }
 
-as_value stage_scalemode_getset(const fn_call& fn)
+
+const char*
+getDisplayStateString(Stage::DisplayState ds)
 {
-       boost::intrusive_ptr<Stage> stage = ensureType<Stage>(fn.this_ptr);
+       static const char* displayStateName[] = {
+               "normal",
+               "fullScreen" };
+
+       return displayStateName[ds];
+}
+
+
+const char*
+getScaleModeString(movie_root::ScaleMode sm)
+{
+       static const char* modeName[] = {
+               "showAll",
+               "noScale",
+               "exactFit",
+               "noBorder" };
+
+       return modeName[sm];
+}
+
+
+as_value
+stage_scalemode_getset(const fn_call& fn)
+{
+    const movie_root& m = VM::get().getRoot();
 
        if ( fn.nargs == 0 ) // getter
        {
-               return as_value(stage->getScaleModeString());
+               return as_value(getScaleModeString(m.getScaleMode()));
        }
        else // setter
        {
                movie_root::ScaleMode mode = movie_root::showAll;
 
                const std::string& str = fn.arg(0).to_string();
-               if ( str == "noScale" ) mode = movie_root::noScale;
-               else if ( str == "exactFit" ) mode = movie_root::exactFit;
-               else if ( str == "noBorder" ) mode = movie_root::noBorder;
+               
+               StringNoCaseEqual noCaseCompare;
+               
+               if ( noCaseCompare(str, "noScale") ) mode = movie_root::noScale;
+               else if ( noCaseCompare(str, "exactFit") ) mode = 
movie_root::exactFit;
+               else if ( noCaseCompare(str, "noBorder") ) mode = 
movie_root::noBorder;
 
         movie_root& m = VM::get().getRoot();
 
@@ -369,7 +361,7 @@
 
        if ( fn.nargs == 0 ) // getter
        {
-               return as_value(stage->getDisplayStateString());
+               return 
as_value(getDisplayStateString(stage->getDisplayState()));
        }
        else // setter
        {

Index: server/asobj/Stage.h
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Stage.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- server/asobj/Stage.h        24 Apr 2008 08:02:38 -0000      1.20
+++ server/asobj/Stage.h        25 Apr 2008 15:28:53 -0000      1.21
@@ -54,18 +54,6 @@
        /// Notify all listeners about a resize event
        void notifyResize();
 
-       /// \brief
-       /// Return the string representation for current
-       /// scale mode.
-       //
-       /// Valid values are:
-       ///     - showAll
-       ///     - noBorder
-       ///     - exactFit
-       ///     - noScale
-       ///
-       const char* getScaleModeString();
-
     /// Get present align mode
     const std::string& getAlignMode() const { return _alignMode; }
 
@@ -75,7 +63,8 @@
        /// Set display state 
        void setDisplayState(DisplayState state);
        
-       const char* getDisplayStateString();    
+       /// Set display state 
+       DisplayState getDisplayState() const { return _displayState; }
 
 private:
 
@@ -84,6 +73,8 @@
        DisplayState _displayState;
 };
 
+/// Register native functions with the VM.
+void registerStageNative(as_object& o);
 
 /// Initialize the global Stage class
 void stage_class_init(as_object& global);

Index: testsuite/swfdec/PASSING
===================================================================
RCS file: /sources/gnash/gnash/testsuite/swfdec/PASSING,v
retrieving revision 1.135
retrieving revision 1.136
diff -u -b -r1.135 -r1.136
--- testsuite/swfdec/PASSING    25 Apr 2008 13:56:09 -0000      1.135
+++ testsuite/swfdec/PASSING    25 Apr 2008 15:28:53 -0000      1.136
@@ -665,6 +665,10 @@
 same-argument-name-6.swf:0814b0f0acc2abdc94f95972ec4db704
 same-argument-name-7.swf:a8db16910cb00b86ee7622e2d878ddc0
 same-argument-name-8.swf:fc161dde1c7da36faa9478e3908c45e3
+scalemode-5.swf:e53b1236f91f92be286c42fc22f3cabc
+scalemode-6.swf:26e22225bb67b386c52b1a0eef9e0d2a
+scalemode-7.swf:deceeecf711eb37feb788cf464d7c86f
+scalemode-8.swf:e22dcce27871ae2d5a4b53c4955b44cf
 scope2.swf:4783478ce98b56c9b34e1a5ee78e2860
 scope-chain-did-you-understand-5.swf:326fc05bde096a72bec25336e67e9e97
 scope-chain-did-you-understand-6.swf:952f5f91c44b10fb23727ad72d62459d




reply via email to

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