Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GNASH_SWF_SCRIPTLIMITSTAG_H
00020 #define GNASH_SWF_SCRIPTLIMITSTAG_H
00021
00022 #include "SWF.h"
00023 #include "SWFStream.h"
00024 #include "movie_root.h"
00025 #include "movie_definition.h"
00026 #include "ControlTag.h"
00027
00028 namespace gnash {
00029 namespace SWF {
00030
00032
00036 class ScriptLimitsTag : public ControlTag
00037 {
00038 public:
00039
00040 virtual ~ScriptLimitsTag() {}
00041
00042 virtual void executeState(MovieClip* m, DisplayList& ) const {
00043
00044 LOG_ONCE(
00045 log_debug("Setting script limits: recursion %s, timeout %s",
00046 _recursionLimit, _timeoutLimit);
00047 );
00048 getRoot(*getObject(m)).setScriptLimits(_recursionLimit, _timeoutLimit);
00049 }
00050
00051 static void loader(SWFStream& in, TagType tag, movie_definition& m,
00052 const RunResources& )
00053 {
00054 assert(tag == SWF::SCRIPTLIMITS);
00055 boost::intrusive_ptr<ControlTag> s(new ScriptLimitsTag(in));
00056 m.addControlTag(s);
00057 }
00058
00059 private:
00060
00061 ScriptLimitsTag(SWFStream& in)
00062 :
00063 _recursionLimit(0),
00064 _timeoutLimit(0)
00065 {
00066 in.ensureBytes(4);
00067 _recursionLimit = in.read_u16();
00068 _timeoutLimit = in.read_u16();
00069
00070 IF_VERBOSE_PARSE (
00071 log_parse(_(" ScriptLimits tag: recursion: %d, timeout: %d"),
00072 _recursionLimit, _timeoutLimit);
00073 );
00074
00075 }
00076
00077 boost::uint16_t _recursionLimit;
00078 boost::uint16_t _timeoutLimit;
00079 };
00080
00081 }
00082 }
00083
00084
00085 #endif // GNASH_SWF_SCRIPTLIMITSTAG_H
00086
00087
00088
00089
00090
00091