Merge pull request #2912 from Tilka/coretiming

CoreTiming: small cleanup
This commit is contained in:
Markus Wick 2015-08-26 16:38:42 +02:00
commit 2be69ae747
2 changed files with 11 additions and 68 deletions

View File

@ -63,9 +63,6 @@ u64 fakeTBStartTicks;
static int ev_lost;
static void (*advanceCallback)(int cyclesExecuted) = nullptr;
static Event* GetNewEvent()
{
if (!eventPool)
@ -303,42 +300,13 @@ void ScheduleEvent(int cyclesIntoFuture, int event_type, u64 userdata)
AddEventToQueue(ne);
}
void RegisterAdvanceCallback(void (*callback)(int cyclesExecuted))
{
advanceCallback = callback;
}
bool IsScheduled(int event_type)
{
if (!first)
return false;
Event *e = first;
while (e)
{
if (e->type == event_type)
return true;
e = e->next;
}
return false;
}
void RemoveEvent(int event_type)
{
if (!first)
return;
while (first)
while (first && first->type == event_type)
{
if (first->type == event_type)
{
Event *next = first->next;
FreeEvent(first);
first = next;
}
else
{
break;
}
Event* next = first->next;
FreeEvent(first);
first = next;
}
if (!first)
@ -368,11 +336,6 @@ void RemoveAllEvents(int event_type)
RemoveEvent(event_type);
}
void SetMaximumSlice(int maximumSliceLength)
{
maxSliceLength = maximumSliceLength;
}
void ForceExceptionCheck(int cycles)
{
if (DowncountToCycles(PowerPC::ppcState.downcount) > cycles)
@ -382,11 +345,6 @@ void ForceExceptionCheck(int cycles)
}
}
void ResetSliceLength()
{
maxSliceLength = MAX_SLICE_LENGTH;
}
//This raise only the events required while the fifo is processing data
void ProcessFifoWaitEvents()
@ -434,21 +392,14 @@ void Advance()
lastOCFactor = SConfig::GetInstance().m_OCEnable ? SConfig::GetInstance().m_OCFactor : 1.0f;
PowerPC::ppcState.downcount = CyclesToDowncount(slicelength);
while (first)
while (first && first->time <= globalTimer)
{
if (first->time <= globalTimer)
{
//LOG(POWERPC, "[Scheduler] %s (%lld, %lld) ",
// event_types[first->type].name ? event_types[first->type].name : "?", (u64)globalTimer, (u64)first->time);
Event* evt = first;
first = first->next;
event_types[evt->type].callback(evt->userdata, (int)(globalTimer - evt->time));
FreeEvent(evt);
}
else
{
break;
}
//LOG(POWERPC, "[Scheduler] %s (%lld, %lld) ",
// event_types[first->type].name ? event_types[first->type].name : "?", (u64)globalTimer, (u64)first->time);
Event* evt = first;
first = first->next;
event_types[evt->type].callback(evt->userdata, (int)(globalTimer - evt->time));
FreeEvent(evt);
}
if (!first)
@ -463,9 +414,6 @@ void Advance()
slicelength = maxSliceLength;
PowerPC::ppcState.downcount = CyclesToDowncount(slicelength);
}
if (advanceCallback)
advanceCallback(cyclesExecuted);
}
void LogPendingEvents()

View File

@ -52,7 +52,6 @@ void ScheduleEvent_Threadsafe_Immediate(int event_type, u64 userdata = 0);
// We only permit one event of each type in the queue at a time.
void RemoveEvent(int event_type);
void RemoveAllEvents(int event_type);
bool IsScheduled(int event_type);
void Advance();
void MoveEvents();
void ProcessFifoWaitEvents();
@ -64,10 +63,6 @@ void Idle();
void ClearPendingEvents();
void LogPendingEvents();
void SetMaximumSlice(int maximumSliceLength);
void ResetSliceLength();
void RegisterAdvanceCallback(void (*callback)(int cyclesExecuted));
std::string GetScheduledEventsSummary();