예제 #1
0
void Interpreter::handlePendingCommand()
{
    QMutexLocker locker(&m_mutexQueue);
    if (m_commandQueue.empty())
        return;
    const Command command = m_commandQueue.front();
    m_commandQueue.pop();
    locker.unlock();

    switch (command.first)
    {
    case STOP:
        sendStop();
        break;

    case RUN:
        sendRun();
        break;

    case GET_ACTION:
        sendGetAction(command.second.toInt());
        break;

    case LOAD_PARAMS:
        handleLoadParams();
        break;

    case SAVE_PARAMS:
        handleSaveParams();
        break;
    }

}
void Interpreter::handlePendingCommand()
{
    QMutexLocker locker(&m_mutexQueue);
    if (m_commandQueue.empty())
        return;
    const Command command = m_commandQueue.front();
    m_commandQueue.pop_front();
    locker.unlock();

    switch (command.m_type)
    {
    case STOP:
        sendStop();
        break;

    case RUN:
        sendRun();
        break;

    case STOP_LOCAL:
        m_localProgramRunning = false;
        emit runState(false);
        break;

    case RUN_LOCAL:
        if (m_program.size()>0)
        {
            m_localProgramRunning = true;
            emit runState(true);
            emit enableConsole(false);
            m_pc = 0;
        }
        break;

    case LOAD_PARAMS:
        handleLoadParams();
        break;

    case SAVE_PARAMS:
        handleSaveParams(command.m_arg0.toBool());
        break;

    case UPDATE_PARAM:
        handleUpdateParam();
        break;

    case CLOSE:
        emit runState(-1);
        break;
    }
}