Exemplo n.º 1
0
void AudioManager::sltDoWork(int cmd, QString parameter)
{
    switch(cmd)
    {
        case ThreadController::AudioThreadCmd_AddAudioFile:  // parameter传递的就是具体的音频文件名不含后缀;
        {
            switch(ygApp->locale().language())
            {
                case QLocale::English:
                    addFile(g_appPath + QString("/data/wavalbums/") + parameter + QString("_en.wav"));
                    break;
                case QLocale::Chinese:
                    addFile(g_appPath + QString("/data/wavalbums/") + parameter + QString("_cn.wav"));
                    break;
                default:
                    break;
            }
            break;
        }
        case ThreadController::AudioThreadCmd_PrintThreadId:
        {
            printThreadId();
            break;
        }
        default:
        {
            break;
        }
    }
}
Exemplo n.º 2
0
void Emu::Stop() {
  if (thread==nullptr && state == 0) return;
  EnterCriticalSection(&cs);
  state = 0;
  LeaveCriticalSection(&cs);
  printThreadId();
  //std::this_thread::sleep_for(std::chrono::milliseconds(1000));
  thread->join();
  
  OutputDebugString("killed thread\n");
  SafeDelete(&thread);
}
Exemplo n.º 3
0
void Emu::thread_func(Emu* emu) {
  //auto output_ = new audio::output::WASAPI();
  //output_->set_window_handle(app::Application::Current()->display_window().handle());
  //output_->set_buffer_size(4*44100*2);
  //output_->Initialize(44100,2,16);
  //output_->Play();
  //WASAPI_Initialize(44100,2,16);
  //emu->apu_.set_output(output_);
  memset(&emu->timing,0,sizeof(emu->timing));
  emu->utimer.Calibrate();
  emu->timing.prev_cycles = emu->utimer.GetCurrentCycles();
  emu->set_base_freq_hz(emu->base_freq_hz_);
  printThreadId();
  
  while (emu->state==1) {
    emu->Step();
  }
  //output_->Stop();
  //output_->Deinitialize(); 
  //SafeDelete(&output_);
  OutputDebugString("end of thread\n");
}
Exemplo n.º 4
0
bool PcapLiveDevice::startCapture(RawPacketVector& capturedPacketsVector)
{
	m_CapturedPackets = &capturedPacketsVector;
	m_CapturedPackets->clear();

	if (m_CaptureThreadStarted || m_PcapDescriptor == NULL)
	{
		LOG_ERROR("Device '%s' already capturing or not opened", m_Name);
		return false;
	}

	m_CaptureCallbackMode = false;
	int err = pthread_create(&(m_CaptureThread->pthread), NULL, getCaptureThreadStart(), (void*)this);
	if (err != 0)
	{
		LOG_ERROR("Cannot create LiveCapture thread for device '%s': [%s]", m_Name, strerror(err));
		return false;
	}
	m_CaptureThreadStarted = true;
	LOG_DEBUG("Successfully created capture thread for device '%s'. Thread id: %s", m_Name, printThreadId(m_CaptureThread).c_str());

	return true;
}
Exemplo n.º 5
0
bool PcapLiveDevice::startCapture(OnPacketArrivesCallback onPacketArrives, void* onPacketArrivesUserCookie, int intervalInSecondsToUpdateStats, OnStatsUpdateCallback onStatsUpdate, void* onStatsUpdateUserCookie)
{
	m_IntervalToUpdateStats = intervalInSecondsToUpdateStats;

	if (m_CaptureThreadStarted || m_PcapDescriptor == NULL)
	{
		LOG_ERROR("Device '%s' already capturing or not opened", m_Name);
		return false;
	}

	m_CaptureCallbackMode = true;
	m_cbOnPacketArrives = onPacketArrives;
	m_cbOnPacketArrivesUserCookie = onPacketArrivesUserCookie;
	int err = pthread_create(&(m_CaptureThread->pthread), NULL, getCaptureThreadStart(), (void*)this);
	if (err != 0)
	{
		LOG_ERROR("Cannot create LiveCapture thread for device '%s': [%s]", m_Name, strerror(err));
		return false;
	}
	m_CaptureThreadStarted = true;
	LOG_DEBUG("Successfully created capture thread for device '%s'. Thread id: %s", m_Name, printThreadId(m_CaptureThread).c_str());

	if (onStatsUpdate != NULL && intervalInSecondsToUpdateStats > 0)
	{
		m_cbOnStatsUpdate = onStatsUpdate;
		m_cbOnStatsUpdateUserCookie = onStatsUpdateUserCookie;
		int err = pthread_create(&(m_StatsThread->pthread), NULL, &statsThreadMain, (void*)this);
		if (err != 0)
		{
			LOG_ERROR("Cannot create LiveCapture Statistics thread for device '%s': [%s]", m_Name, strerror(err));
			return false;
		}
		m_StatsThreadStarted = true;
		LOG_DEBUG("Successfully created stats thread for device '%s'. Thread id: %s", m_Name, printThreadId(m_StatsThread).c_str());
	}

	return true;
}