コード例 #1
0
ファイル: inputdialog.cpp プロジェクト: Jakz/gambatte
void InputDialog::resetMapping() {
	{
		Mutual<KeyMapping>::Locked lkm(keyMapping_);
		lkm->map.clear();
		lkm->rapidvec.clear();

		for (std::size_t i = 0; i < config_.size(); ++i) {
			if (config_[i].event.value == InputBox::value_kbd) {
				lkm->map.insert(std::make_pair(
					config_[i].event.id,
					MappedKey(buttons_[i >> 1], config_[i].fpp)));
			}
		}
	}
コード例 #2
0
void
WFStartupUpgrade::EventCallback(int32 eventType, WFStartupEventCallbackParameter* param)
{
   if (param->m_type == SP_Upgrade) {
      if ( m_upgradeParams && param != m_upgradeParams ) {
         delete m_upgradeParams;
         m_upgradeParams = NULL;
      }
      m_upgradeParams = 
         static_cast<WFStartupEventUpgradeCallbackParameter*>(param);

      if ((m_upgradeParams->m_keyStr != NULL) &&
          (strlen(m_upgradeParams->m_keyStr) == 0)) {
         class WFStartupEventUpgradeFailedCallbackParameter* params =
            new WFStartupEventUpgradeFailedCallbackParameter(false, true, true, 
                  true, true);
         m_handler->TriggerEvent(SS_UpgradeFailed, params);
      } else if ((m_upgradeParams->m_phone != NULL) && (strlen(m_upgradeParams->m_phone) == 0)) {
         class WFStartupEventUpgradeFailedCallbackParameter* params =
            new WFStartupEventUpgradeFailedCallbackParameter(true, false, true, 
                  true, true);
         m_handler->TriggerEvent(SS_UpgradeFailed, params);
      } else if ((m_upgradeParams->m_name != NULL) && (strlen(m_upgradeParams->m_name) == 0)) {
         class WFStartupEventUpgradeFailedCallbackParameter* params =
            new WFStartupEventUpgradeFailedCallbackParameter(true, true, false, 
                  true, true);
         m_handler->TriggerEvent(SS_UpgradeFailed, params);
      } else if ((m_upgradeParams->m_email != NULL) && (strlen(m_upgradeParams->m_email) == 0)) {
         class WFStartupEventUpgradeFailedCallbackParameter* params =
            new WFStartupEventUpgradeFailedCallbackParameter(true, true, true, 
                  false, true);
         m_handler->TriggerEvent(SS_UpgradeFailed, params);
      } else {
         isab::LicenseKeyMess lkm(m_upgradeParams->m_keyStr,
               m_upgradeParams->m_phone, m_upgradeParams->m_name,
               m_upgradeParams->m_email, m_upgradeParams->m_optional,
               m_upgradeParams->m_countryId);
         m_sender->SendMessage(lkm, this);
         lkm.deleteMembers();
      }
   }
}
コード例 #3
0
ファイル: UDPWiimote.cpp プロジェクト: Bigorneau/dolphin
void UDPWiimote::mainThread()
{
	std::unique_lock<std::mutex> lk(d->termLock);

	Common::Timer time;
	fd_set fds;
	struct timeval timeout;
	timeout.tv_sec=0;
	timeout.tv_usec=0;
	time.Update();
	do
	{
		int maxfd=0;
		FD_ZERO(&fds);
		for (auto& fd : d->sockfds)
		{
			FD_SET(fd,&fds);
#ifndef _WIN32
			if (fd>=maxfd)
				maxfd=(fd)+1;
#endif
		}

		u64 tleft=timeout.tv_sec*1000+timeout.tv_usec/1000;
		u64 telapsed=time.GetTimeDifference();
		time.Update();
		if (tleft<=telapsed)
		{
			timeout.tv_sec=1;
			timeout.tv_usec=500000;
			broadcastPresence();
		}
		else
		{
			tleft-=telapsed;
			timeout.tv_sec=(long)(tleft/1000);
			timeout.tv_usec=(tleft%1000)*1000;
		}

		lk.unlock(); //VERY hacky. don't like it
		if (d->exit) return;
		int rt=select(maxfd,&fds,NULL,NULL,&timeout);
		if (d->exit) return;
		lk.lock();
		if (d->exit) return;

		if (rt)
		{
			for (sock_t fd : d->sockfds)
			{
				if (FD_ISSET(fd,&fds))
				{
					u8 bf[64];
					int size=60;
					size_t addr_len;
					struct sockaddr_storage their_addr;
					addr_len = sizeof their_addr;
					if ((size = recvfrom(fd,
										 (dataz)bf,
										 size , 0,(struct sockaddr *)&their_addr, (socklen_t*)&addr_len)) == -1)
					{
						ERROR_LOG(WIIMOTE,"UDPWii Packet error");
					}
					else
					{
						std::lock_guard<std::mutex> lkm(d->mutex);
						if (pharsePacket(bf,size)==0)
						{
							//NOTICE_LOG(WIIMOTE,"UDPWII New pack");
						}
						else
						{
							//NOTICE_LOG(WIIMOTE,"UDPWII Wrong pack format... ignoring");
						}
					}
				}
			}
		}
	} while (!(d->exit));
}