mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Javascript: Refactor interrupt handler
This commit is contained in:
parent
3cca812d38
commit
88e544a085
1 changed files with 8 additions and 21 deletions
|
|
@ -621,6 +621,11 @@ public:
|
||||||
Impl()
|
Impl()
|
||||||
{
|
{
|
||||||
DynamicObjectWrapper::createClass (engine.getQuickJSRuntime());
|
DynamicObjectWrapper::createClass (engine.getQuickJSRuntime());
|
||||||
|
|
||||||
|
engine.setInterruptHandler ([this]
|
||||||
|
{
|
||||||
|
return (int64) Time::getMillisecondCounterHiRes() >= timeout;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void registerNativeObject (const Identifier& name,
|
void registerNativeObject (const Identifier& name,
|
||||||
|
|
@ -750,7 +755,7 @@ public:
|
||||||
|
|
||||||
void stop() noexcept
|
void stop() noexcept
|
||||||
{
|
{
|
||||||
shouldStop = true;
|
timeout = (int64) Time::getMillisecondCounterHiRes();
|
||||||
}
|
}
|
||||||
|
|
||||||
JSObject getRootObject() const
|
JSObject getRootObject() const
|
||||||
|
|
@ -758,33 +763,15 @@ public:
|
||||||
return JSObject { &engine };
|
return JSObject { &engine };
|
||||||
}
|
}
|
||||||
|
|
||||||
const detail::QuickJSWrapper& getEngine() const
|
|
||||||
{
|
|
||||||
return engine;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
void resetTimeout (RelativeTime maxExecTime)
|
void resetTimeout (RelativeTime maxExecTime)
|
||||||
{
|
{
|
||||||
shouldStop = false;
|
timeout = (int64) Time::getMillisecondCounterHiRes() + maxExecTime.inMilliseconds();
|
||||||
|
|
||||||
engine.setInterruptHandler ([this, maxExecTime, started = Time::getMillisecondCounterHiRes()]()
|
|
||||||
{
|
|
||||||
if (shouldStop)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
const auto elapsed = RelativeTime::milliseconds ((int64) (Time::getMillisecondCounterHiRes() - started));
|
|
||||||
|
|
||||||
if (elapsed > maxExecTime)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
detail::QuickJSWrapper engine;
|
detail::QuickJSWrapper engine;
|
||||||
std::atomic<bool> shouldStop = false;
|
std::atomic<int64> timeout{};
|
||||||
};
|
};
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue