Removed some unnecessary synchronizations from quest timers.

This commit is contained in:
MobiusDevelopment
2020-03-24 11:15:43 +00:00
parent 148a872859
commit 374eab6fdd
18 changed files with 647 additions and 807 deletions

View File

@ -315,6 +315,7 @@ public class Quest extends AbstractScript implements IIdentifiable
return timer;
}
}
return null;
}
@ -329,23 +330,21 @@ public class Quest extends AbstractScript implements IIdentifiable
return;
}
synchronized (_questTimers)
final List<QuestTimer> timers = _questTimers.get(name);
if ((timers == null) || timers.isEmpty())
{
final List<QuestTimer> timers = _questTimers.get(name);
if ((timers == null) || timers.isEmpty())
{
return;
}
for (QuestTimer timer : timers)
{
if (timer != null)
{
timer.cancel();
}
}
timers.clear();
return;
}
for (QuestTimer timer : timers)
{
if (timer != null)
{
timer.cancel();
}
}
timers.clear();
}
/**
@ -361,23 +360,19 @@ public class Quest extends AbstractScript implements IIdentifiable
return;
}
synchronized (_questTimers)
final List<QuestTimer> timers = _questTimers.get(name);
if ((timers == null) || timers.isEmpty())
{
final List<QuestTimer> timers = _questTimers.get(name);
if ((timers == null) || timers.isEmpty())
return;
}
for (QuestTimer timer : timers)
{
if ((timer != null) && timer.equals(this, name, npc, player))
{
timer.cancel();
return;
}
for (QuestTimer timer : timers)
{
if ((timer != null) && timer.equals(this, name, npc, player))
{
timer.cancel();
timers.remove(timer);
return;
}
}
}
}
@ -393,13 +388,10 @@ public class Quest extends AbstractScript implements IIdentifiable
return;
}
synchronized (_questTimers)
final List<QuestTimer> timers = _questTimers.get(timer.toString());
if (timers != null)
{
final List<QuestTimer> timers = _questTimers.get(timer.toString());
if (timers != null)
{
timers.remove(timer);
}
timers.remove(timer);
}
}
@ -2813,22 +2805,21 @@ public class Quest extends AbstractScript implements IIdentifiable
public boolean unload(boolean removeFromList)
{
onSave();
// cancel all pending timers before reloading.
// if timers ought to be restarted, the quest can take care of it
// with its code (example: save global data indicating what timer must be restarted).
synchronized (_questTimers)
// Cancel all pending timers before reloading.
// If timers ought to be restarted, the quest can take care of it with its code (example: save global data indicating what timer must be restarted).
for (List<QuestTimer> timers : _questTimers.values())
{
for (List<QuestTimer> timers : _questTimers.values())
for (QuestTimer timer : timers)
{
for (QuestTimer timer : timers)
{
timer.cancel();
}
timers.clear();
timer.cancel();
}
_questTimers.clear();
timers.clear();
}
_questTimers.clear();
if (removeFromList)
{
return QuestManager.getInstance().removeScript(this) && super.unload();