1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-08 08:47:17 +01:00

Allow routines to have configurable error reporting that is individual from global setting.

Potential fix for error handling that was being used in a way that had the opposite intended effect.
This commit is contained in:
Sandu Liviu Catalin 2020-04-10 08:30:22 +03:00
parent 19a245f3b1
commit a7f8584661
2 changed files with 22 additions and 1 deletions

View File

@ -18,6 +18,7 @@ Routine::Time Routine::s_Last = 0;
Routine::Time Routine::s_Prev = 0; Routine::Time Routine::s_Prev = 0;
Routine::Interval Routine::s_Intervals[SQMOD_MAX_ROUTINES]; Routine::Interval Routine::s_Intervals[SQMOD_MAX_ROUTINES];
Routine::Instance Routine::s_Instances[SQMOD_MAX_ROUTINES]; Routine::Instance Routine::s_Instances[SQMOD_MAX_ROUTINES];
bool Routine::s_Silenced = false;
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void Routine::Process() void Routine::Process()
@ -57,6 +58,7 @@ void Routine::Process()
void Routine::Initialize() void Routine::Initialize()
{ {
std::memset(s_Intervals, 0, sizeof(s_Intervals)); std::memset(s_Intervals, 0, sizeof(s_Intervals));
SetSilenced(!ErrorHandling::IsEnabled());
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
@ -349,6 +351,8 @@ void Register_Routine(HSQUIRRELVM vm)
.Func(_SC("GetArgument"), &Routine::GetArgument) .Func(_SC("GetArgument"), &Routine::GetArgument)
.Func(_SC("DropEnv"), &Routine::DropEnv) .Func(_SC("DropEnv"), &Routine::DropEnv)
.StaticFunc(_SC("UsedCount"), &Routine::GetUsed) .StaticFunc(_SC("UsedCount"), &Routine::GetUsed)
.StaticFunc(_SC("AreSilenced"), &Routine::GetSilenced)
.StaticFunc(_SC("SetSilenced"), &Routine::SetSilenced)
); );
// Global functions // Global functions
RootTable(vm).SquirrelFunc(_SC("SqRoutine"), &Routine::Create); RootTable(vm).SquirrelFunc(_SC("SqRoutine"), &Routine::Create);

View File

@ -54,7 +54,7 @@ private:
, mIterations(0) , mIterations(0)
, mInterval(0) , mInterval(0)
, mSuspended(false) , mSuspended(false)
, mQuiet(ErrorHandling::IsEnabled()) , mQuiet(GetSilenced())
, mEndure(false) , mEndure(false)
, mArgc(0) , mArgc(0)
, mArgv() , mArgv()
@ -213,6 +213,7 @@ private:
static Time s_Prev; // Previous time point. static Time s_Prev; // Previous time point.
static Interval s_Intervals[SQMOD_MAX_ROUTINES]; // List of intervals to be processed. static Interval s_Intervals[SQMOD_MAX_ROUTINES]; // List of intervals to be processed.
static Instance s_Instances[SQMOD_MAX_ROUTINES]; // List of routines to be executed. static Instance s_Instances[SQMOD_MAX_ROUTINES]; // List of routines to be executed.
static bool s_Silenced; // Error reporting independent from global setting.
private: private:
@ -639,6 +640,22 @@ public:
{ {
GetValid().mEnv.Release(); GetValid().mEnv.Release();
} }
/* --------------------------------------------------------------------------------------------
* See if error reporting is enabled for all newlly created routines.
*/
static bool GetSilenced()
{
return s_Silenced;
}
/* --------------------------------------------------------------------------------------------
* Set if error reporting should be enabled for all newlly created routines.
*/
static void SetSilenced(bool toggle)
{
s_Silenced = toggle;
}
}; };
} // Namespace:: SqMod } // Namespace:: SqMod