Kaydet (Commit) 0d43f517 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Access to ProcessEventsToSignal's bSignal is racy

...so spell out its single use, locking the appropriate mutex around the access

Change-Id: I8e8f47de1979f5a80cf1ad65e5ec24d25145c463
Reviewed-on: https://gerrit.libreoffice.org/42908Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
üst 736a4e65
......@@ -181,8 +181,6 @@ bool ConstParams::VisitFunctionDecl(const FunctionDecl * functionDecl)
|| name == "convert_slashes"
// UNO component entry points
|| name.endswith("component_getFactory")
// in Scheduler::, wants to loop until a reference to a bool becomes true
|| name == "ProcessEventsToSignal"
// external API
|| name == "Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_flush"
|| name == "egiGraphicExport"
......
......@@ -64,11 +64,6 @@ public:
* @see Application::Reschedule
*/
static void ProcessEventsToIdle();
/**
* Process events until the parameter turns true,
* allows processing until a specific event has been processed
*/
static void ProcessEventsToSignal(bool& bSignal);
/// Control the deterministic mode. In this mode, two subsequent runs of
/// LibreOffice fire about the same amount idles.
......
......@@ -486,11 +486,6 @@ bool Application::Reschedule( bool i_bAllEvents )
return ImplYield(false, i_bAllEvents);
}
void Scheduler::ProcessEventsToSignal(bool& bSignal)
{
while (!bSignal && Application::Reschedule() );
}
void Scheduler::ProcessEventsToIdle()
{
int nSanity = 1;
......
......@@ -96,7 +96,15 @@ IMPL_LINK_NOARG(ExecuteWrapper, ExecuteActionHdl, Timer*, void)
aIdle.Start();
}
Scheduler::ProcessEventsToSignal(mbSignal);
for (;;) {
{
std::unique_lock<std::mutex> lock(mMutex);
if (mbSignal) {
break;
}
}
Application::Reschedule();
}
std::unique_lock<std::mutex> lock(mMutex);
while (!mbSignal)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment