Пример #1
0
int
master_exit(int retval)
{
	cleanup_memory();

#ifdef WIN32
	if ( NT_ServiceFlag == TRUE ) {
		terminate(retval);
	}
#endif

#if defined(WANT_CONTRIB) && defined(WITH_MANAGEMENT)
#if defined(HAVE_DLOPEN) || defined(WIN32)
	MasterPluginManager::Shutdown();
#endif
#endif

		// If we're positive that we are going to shut down,
		// we should clean out the shared port directory if
		// we created it.
	std::string dirname;
	if ( SharedPortEndpoint::CreatedSharedPortDirectory() &&
		 SharedPortEndpoint::GetDaemonSocketDir(dirname) ) {

		TemporaryPrivSentry tps(PRIV_CONDOR);
		Directory d(dirname.c_str());
		d.Remove_Entire_Directory();
		if (-1 == rmdir(dirname.c_str())) {
			dprintf(D_ALWAYS, "ERROR: failed to remove shared port temporary directory: %s (errno=%d).\n", strerror(errno), errno);
		}
	}

	DC_Exit(retval, shutdown_program );
	return 1;	// just to satisfy vc++
}
Пример #2
0
// 連携プログラム設定ボタン
void CRsfSimpleForm::OnButtonPrg() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	CString str;

	UpdateData(TRUE);	// DDX更新

	// 連携プログラムID
	CString strPrgId = m_aryPrgId.GetAt(m_idxPrg);

	/// プログラムCSVファイルの特定
	CTPsetup tps(theApp.m_strDataFolder);
	tps.SetCallerId(m_strSenderId);
	CString strFile = tps.RsfPrgFileName(_T("$$$$"), strPrgId);

	/// 画面の表示
	CComboBox *pcmb;
    pcmb = (CComboBox*)GetDlgItem(IDC_CMB_PRG);
	pcmb->GetLBText(m_idxPrg, str);
	CRsfPrgDialog dlg(this, str);
	dlg.SetFile(strFile);
	if (dlg.DoModal() == IDOK) {
		/// RSFファイルの更新
		if (!UpdateFile()) return;
		/// 画面の更新
		UpdateForm();
	}
}
void
SharedPortEndpoint::InitializeDaemonSocketDir()
{
	if ( m_initialized_socket_dir ) {
		return;
	}
	m_initialized_socket_dir = true;

	std::string result;
#ifdef USE_ABSTRACT_DOMAIN_SOCKET
		// Linux has some unique behavior.  We use a random cookie as a prefix to our
		// shared port "directory" in the abstract Unix namespace.
	char *keybuf = Condor_Crypt_Base::randomHexKey(32);
	if (keybuf == NULL) {
		EXCEPT("SharedPortEndpoint: Unable to create a secure shared port cookie.\n");
	}
	result = keybuf;
	free(keybuf);
	keybuf = NULL;
#elif defined(WIN32)
	return;
#else
	if( !param(result, "DAEMON_SOCKET_DIR") ) {
		EXCEPT("DAEMON_SOCKET_DIR must be defined");
	}
		// If set to "auto", we want to make sure that $(DAEMON_SOCKET_DIR)/collector or $(DAEMON_SOCKET_DIR)/15337_9022_123456 isn't more than 108 characters
		// Hence we assume the longest valid shared port ID is 18 characters.
	if (result == "auto") {
		struct sockaddr_un named_sock_addr;
		const unsigned max_len = sizeof(named_sock_addr.sun_path)-1;
		char * default_name = expand_param("$(LOCK)/daemon_sock");
		if (strlen(default_name) + 18 > max_len) {
			TemporaryPrivSentry tps(PRIV_CONDOR);
				// NOTE we force the use of /tmp here - not using the HTCondor library routines;
				// this is because HTCondor will look up the param TMP_DIR, which might also be
				// a long directory path.  We really want /tmp.
			char dirname_template[] = "/tmp/condor_shared_port_XXXXXX";
			const char *dirname = mkdtemp(dirname_template);
			if (dirname == NULL) {
				EXCEPT("SharedPortEndpoint: Failed to create shared port directory: %s (errno=%d)\n", strerror(errno), errno);
			}
			m_created_shared_port_dir = true;
			result = dirname;
			dprintf(D_ALWAYS, "Default DAEMON_SOCKET_DIR too long; using %s instead.  Please shorten the length of $(LOCK)\n", dirname);
		} else {
			result = default_name;
		}
		free( default_name );
	}
#endif
#ifndef WIN32
	setenv("CONDOR_PRIVATE_SHARED_PORT_COOKIE", result.c_str(), 1);
#endif
}
Пример #4
0
/**
	TestPageSpec::Test
	Tests functionality contained within the TPageSpec class.
	a TPageSpec object is streamed to & from a file store (via CDirectFileStore) & the results are compared. 
	Attributes such as Orientaton, Page Size are also tested
*/
void TestPageSpec::Test()
	{
	TPageSpec tps(iOrientation,iPortraitPageSize);
	iTest->TEST(tps.iOrientation==iOrientation);
	iTest->TEST(tps.iPortraitPageSize==iPortraitPageSize);
	if(iOrientation==TPageSpec::EPortrait)
		iTest->TEST(tps.OrientedPageSize()==iPortraitPageSize);
	else
		iTest->TEST(tps.OrientedPageSize()==TSize(iPortraitPageSize.iHeight,iPortraitPageSize.iWidth));
	TestStream();
	}
Пример #5
0
void ToolUsingIGSTK::calculateTpsSlot()
{
	int tpsNr = 0;

	int numberOfTransformsToCheck = ((mPositionHistory->size() >= 10) ? 10 : mPositionHistory->size());
	if (	numberOfTransformsToCheck <= 1)
	{
		emit tps(0);
		return;
	}

	TimedTransformMap::reverse_iterator it = mPositionHistory->rbegin();
	double lastTransform = it->first;
	for (int i = 0; i < numberOfTransformsToCheck; ++i)
		++it;
	double firstTransform = it->first;
	double secondsPassed = (lastTransform - firstTransform) / 1000;

	if (!similar(secondsPassed, 0))
		tpsNr = (int) (numberOfTransformsToCheck / secondsPassed);

	emit tps(tpsNr);
}
Пример #6
0
void
TcpGate3Stats :: entry( void )
{
    int i = 0;
    while ( 1 )
    {
        printf( "bytes: %d\n", bytes );
        sleep( tps() );
        if ( ++i == 10 )
        {
            i = 0;
            th->printinfo();
        }
    }
}
Пример #7
0
 ScorerPtr PhraseWeight::scorer(IndexReaderPtr reader, bool scoreDocsInOrder, bool topScorer)
 {
     if (query->terms.empty()) // optimize zero-term case
         return ScorerPtr();
     
     Collection<TermPositionsPtr> tps(Collection<TermPositionsPtr>::newInstance(query->terms.size()));
     for (int32_t i = 0; i < tps.size(); ++i)
     {
         TermPositionsPtr p(reader->termPositions(query->terms[i]));
         if (!p)
             return ScorerPtr();
         tps[i] = p;
     }
     
     if (query->slop == 0) // optimize exact case
         return newLucene<ExactPhraseScorer>(shared_from_this(), tps, query->getPositions(), similarity, reader->norms(query->field));
     else
         return newLucene<SloppyPhraseScorer>(shared_from_this(), tps, query->getPositions(), similarity, query->slop, reader->norms(query->field));
 }
Пример #8
0
// ビデオ入力ボタン
void CRsfSimpleForm::OnButtonVideo() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

	/// ビデオファイルの特定
	CTPsetup tps(theApp.m_strDataFolder);
	tps.SetCallerId(m_strSenderId);
	CString strFile = tps.RsfVideoFileName(_T("$"));

	/// 画面の表示
	CRsfVideoDialog dlg;
	dlg.SetFile(strFile);
	if (dlg.DoModal() == IDOK) {
		/// RSFファイルの更新
		if (!UpdateFile()) return;
		/// 画面の更新
		UpdateForm();
	}
}
Пример #9
0
void TestPageSpec::TestStream()
	{
	TPageSpec tps(iOrientation,iPortraitPageSize);
	iTest->InitialiseWriteStream();
	TRAPD(ret,tps.ExternalizeL(writestrm));
	iTest->TEST2(ret, KErrNone);
	iTest->ResetWriteStream();
	TPageSpec tps2;
	iTest->InitialiseReadStream();
	TRAP(ret,tps2.InternalizeL(readstrm));
	iTest->TEST2(ret, KErrNone);
	iTest->ResetReadStream();
	TPageSpec::TPageOrientation tpo=tps.iOrientation;
	TPageSpec::TPageOrientation tpo2=tps2.iOrientation;
	iTest->TEST(tpo==tpo2);
	TSize tpss=tps.iPortraitPageSize;
	TSize tpss2=tps2.iPortraitPageSize;
	iTest->TEST(tpss==tpss2);
	}
Пример #10
0
void
MonitorThread :: entry( void )
{
    struct stat sb;
    FILE * fd;

    (void) unlink( fn );
    fd = fopen( fn, "w" );
    fprintf( fd, "%d", getpid() );
    fclose( fd );

    while ( num_tail_threads > 0 )
    {
        if ( stat( fn, &sb ) < 0 )
            break;
        sleep( tps() * 10 );
    }

    newtail_die = true;
}
Пример #11
0
bool CHHMRInst::CollectParametersForNewISO(CString& csNameOut)
{
//	TRACE("CHHMRInst::CollectParametersForNewISO()\n");

	//This ISO is temporary, instatiated solely for the
	//purpose of collecting data to put into the INI file so that
	//the main dialog can pick up the data in the INI file
	//and create an actual new ISO from that data.

	bool bReturn;

	//Collect the data for the new instrument.
	//
	CTPropertySheet tps("",m_iDlgCloseMilliseconds,this);

	CHHMRModParam modparam_page(IDD_HHMRMODPARAMS_PAGE,this,true);
	CHHMRConfig2 camera_page(IDD_HHMRCONFIG,this,true);

	modparam_page.SetPropertySheet(&tps);
	camera_page.SetPropertySheet(((CHHMRPropertySheet *)&tps),true);

	tps.AddPage(&modparam_page);
	tps.AddPage(&camera_page);
	tps.SetWizardMode();

	if (tps.DoModal()==ID_WIZFINISH)
	{
		//the new dialog changed the name - maybe.
		csNameOut = CString(m_pName);
		//add instrument name=typestring to inifile
		WritePrivateProfileString(INSTRUMENTS,m_pName,HHMR_DISCOVERY_TYPE,m_szIniFile);
		bReturn = true;
	}
	else
	{
		csNameOut.Empty();
		bReturn = false;
	}

	return bReturn;
}
Пример #12
0
// 画像入力ボタン
void CRsfSimpleForm::OnButtonImage() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

	/// 画像ファイルの特定
	CTPsetup tps(theApp.m_strDataFolder);
	tps.SetCallerId(m_strSenderId);
	CString strFile = tps.FindRsfImgFile(_T("$"));
	CString strTmp = tps.RsfImgFileName(_T("$"), _T(""));	// 拡張子なしファイル

	/// 画面の表示
	CRsfImgDialog dlg;
	dlg.SetFile(strFile);
	dlg.SetFileNoExt(strTmp);
	if (dlg.DoModal() == IDOK) {
		/// RSFファイルの更新
		if (!UpdateFile()) return;
		/// 画面の更新
		UpdateForm();
	}
}
Пример #13
0
int _tmainTS(int argc, _TCHAR* argv[])
{
	EdgeWeightedDigraph g(8);
	int E;
	cin >> E;
	for (int i = 0; i < E; i++)
	{
		int v, w;
		double we;
		cin >> v >> w >> we;
		Edge e(v, w, we);
		g.addEdge(e);
	}
	g.print();

	Topological tps(g);
	for (int i = 0; i < g.Vget(); i++)
		cout << tps.gTopoSort()[i] << "-->";
	system("pause");
	return 0;
}
Пример #14
0
int _tmain(int argc, _TCHAR* argv[])
{

	// load a nice picture
	cv::Mat img = cv::imread("C:\\lena512color.jpg");

	// generate some generic points
	// usually you would use a interest point detector such as SURF or SIFT
	std::vector<cv::Point> iP, iiP;

	// push some points into the vector for the source image
	iP.push_back(cv::Point(50,50));
	iP.push_back(cv::Point(400,50));
	iP.push_back(cv::Point(50,400));
	iP.push_back(cv::Point(400,400));
	iP.push_back(cv::Point(256,256));
	iP.push_back(cv::Point(150,256));

	// push some point into the vector for the dst image
	iiP.push_back(cv::Point(70,70));
	iiP.push_back(cv::Point(430,60));
	iiP.push_back(cv::Point(60,410));
	iiP.push_back(cv::Point(430,420));
	iiP.push_back(cv::Point(220,280));
	iiP.push_back(cv::Point(180,240));

	// create thin plate spline object and put the vectors into the constructor
	CThinPlateSpline tps(iP,iiP);
	
	// warp the image to dst
	Mat dst;
	tps.warpImage(img,dst,0.01,INTER_CUBIC,BACK_WARP);

	// show images
	cv::imshow("original",img);
	cv::imshow("distorted",dst);
	cv::waitKey(0);

	return 0;
}
Пример #15
0
/*
Removes a single directory passed in.
Returns true on success, false on failure.
On a failure, errno will be set (but may be of dubious quality)
and an error logged.
If the path does not exist, return immediately as success.
if the path exists, but is not a directory, the behavior is currently
to return immediately as success, but in the future might fail with
errno==ENOTDIR.

This assumes that the top level directory requires an euid of condor to
remove.
*/
static bool
remove_spool_directory(const char * dir)
{
	if ( ! IsDirectory(dir) ) { return true; }

	Directory spool_dir(dir);
	if( ! spool_dir.Remove_Entire_Directory() )
	{
		dprintf(D_ALWAYS,"Failed to remove %s\n", dir);
		errno = EPERM; // Wild guess.
		return false;
	}

	TemporaryPrivSentry tps(PRIV_CONDOR);
	if( rmdir(dir) == 0 ) { return true; }
	// Save errno in case dprintf mangles.
	int tmp_errno = errno;
	if( errno != ENOENT ) {
		dprintf(D_ALWAYS,"Failed to remove %s: %s (errno %d)\n",
			dir, strerror(errno), errno );
	}
	errno = tmp_errno;
	return false;
}
Пример #16
0
void
NewTailThread :: entry( void )
{
    while ( !newtail_die )
    {
        struct stat sb1, sb2;

        printf( "%s: opening\n", fn );

        if ( stat( fn, &sb1 ) < 0 )
        {
            printf( "%s: stat error: %s\n",
                    fn, strerror( errno ));
            break;
        }

        f = fopen( fn, "r" );

        if ( f == NULL )
        {
            printf( "%s: unable to fopen: %s\n",
                    fn, strerror( errno ));
            break;
        }

        while ( !newtail_die )
        {
            int c;

            while (( c = getc( f )) != EOF )
                add_char( c );

            if ( ferror( f ))
            {
                printf( "%s: error: %s\n",
                        fn, strerror( errno ));
                break;
            }
            else
                clearerr( f );

            sleep( tps() );

            if ( stat( fn, &sb2 ) < 0 )
            {
                printf( "%s: stat error: %s\n",
                        fn, strerror( errno ));
                break;
            }

            if ( sb1.st_ino != sb2.st_ino )
            {
                printf( "%s: inode # has changed\n" );
                break;
            }
        }

        printf( "%s: closing\n" );
        fclose( f );
    }
}
Пример #17
0
//
//  機能     : レジストリへ保存
//  
//  機能説明 : 
//  
//  返り値   : BOOL
//  
//  備考     : 
//  
void CSettingPubTab::Save() 
{
	// TODO: この位置にその他の検証用のコードを追加してください
	CString str;

	UpdateData(TRUE);	// DDX更新

	/// BEEP音声ファイルのコピー
	if (!m_strBeepFile.IsEmpty()) {
		/// 現在のBEEP音声ファイルのバックアップ
		CTPsetup tps(theApp.m_strDataFolder);
		CString strFile = tps.RsfBeepFileName();
		CString strTmpFile = tps.RsfTmpFileName(_T("wav"));
		CFileSpec fs(strFile);
		fs.FileCopy(strTmpFile, TRUE);
		/// BEEP音声ファイルのコピー(16KHzフォーマットへ変換)
		AUDIO_FORMAT fmt;
		fmt.nBits = 16;
		fmt.nChannels = 1;
		fmt.nFrequency = 16000;
		CAudio *pAudio = CAudio::Instance();
		if (pAudio->ChgWaveFormat(m_strBeepFile, strFile, fmt, 1)) {
			str = tps.RsfBeepFileName(_T("1"));
			fs.FileCopy(str, TRUE);
			str = tps.RsfBeepFileName(_T("2"));
			fs.FileCopy(str, TRUE);
		} else {
			str.LoadString(IDS_MSGBOX69);
			AfxMessageBox(str, MB_OK | MB_APPLMODAL | MB_ICONINFORMATION);
			//// バックアップファイルを戻す
			fs.SetFullSpec(strTmpFile);
			if (fs.Exist()) {
				fs.FileCopy(strFile, TRUE);
			}
		}
	}

	// レジストリ更新
	//// Startup
	if (m_blStartup) {
		// tapmgr.exeをスタートアップレジストリに登録
		CFileSpec fs(FS_APPDIR);
		fs.SetFileName(_T("tapmgr.exe"));
		m_rgStartup = fs.GetFullSpec();
	} else {
		// スタートアップレジストリを削除
		m_rgStartup.removeValue();
	}
	//// 起動時無効
	m_rgDisable = (m_blDisable) ? 1 : 0;
	//// 待機時間
	str = m_aryWaitAnswer.GetAt(m_idxWaitAnswer);
	m_rgWaitAnswer = (DWORD)_ttoi(str);
 	//// 録音時間
	str = m_aryMaxRecord .GetAt(m_idxMaxRecord);
	DWORD dw = (DWORD)_ttoi(str);
	dw *= 60;	// min -> sec
	m_rgMaxRecord = dw;
 	//// WAV or MP3
	CButton *rd_mp3 = (CButton *)GetDlgItem(IDC_RDO_MP3);
	if (rd_mp3->GetCheck()) {
		m_rgFormatType = 1;
	} else {
		m_rgFormatType = 0;
	}
 	//// MP3コーデック
	if (m_aryCodecName.GetCount() > 0) {
		str = m_aryCodecName.GetAt(m_idxCodecName);
		m_rgCodecName = str;
	}
 	//// MP3フォーマット
	if (m_aryFormatName.GetCount() > 0) {
		str = m_aryFormatName.GetAt(m_idxFormatName);
		m_rgFormatName = str;
	}
/*
	//// ショートカット
	m_rgShortCutTapur = (m_blShortCutTapur) ? 1 : 0;
	m_rgShortCutSkype = (m_blShortCutSkype) ? 1 : 0;
*/
}
Пример #18
0
	double computeMFLOPS(const dvector_t & tim, const double mflo, Tag::TimeSelect ts )
	{
		linbox_check(tim.size());
		switch (ts) {
		case (Tag::TimeSelect::average) :
			{
				double tps = 0 ;
				for (size_t i = 0 ; i < tim.size() ; ++i)
					tps += tim[i] ;
				return computeMFLOPS(tps,mflo,(size_t)tim.size());
			}
		case (Tag::TimeSelect::bestThree) :
			{
				if (tim.size() <4)
					return computeMFLOPS(tim,mflo,Tag::TimeSelect::average);

				dvector_t tps (3);
				double t1,t2 ;
				if (tim[0]<tim[1]) {
					t1 = tim[0];
					t2 = tim[1];
				}
				else {
					t1 = tim[1];
					t2 = tim[0];
				}
				if (tim[3] < t1) {
					tps[0] = tim[3] ;
					tps[1] = t1 ;
					tps[2] = t2 ;
				}
				else if (tim[2] < t1) {
					tps[0] = t1 ;
					tps[1] = tim[3] ;
					tps[2] = t2 ;
				}
				else {
					tps[0] = t1 ;
					tps[1] = t2;
					tps[2] = tim[3] ;
				}

				for (size_t i = 3 ; i < tim.size() ; ++i)
					insertTime(tps,tim[i]);

				return computeMFLOPS(tim,mflo,Tag::TimeSelect::average);

			}
		case (Tag::TimeSelect::bestOne) :
			{
				double t1 = tim[0] ;
				for (size_t i = 1 ; i < tim.size() ; ++i)
					if (tim[i] < t1)
						t1 = tim[i] ;
				return computeMFLOPS(t1,mflo,1);

			}
		case (Tag::TimeSelect::median) :
			{
				if (tim.size() == 1)
					return computeMFLOPS(tim[0],mflo,1) ;

				dvector_t tps (tim);
				std::sort(tps.begin(),tps.end());
				size_t mid = (size_t)tps.size()/2 ;
				double t1 ;
				if (isOdd((uint64_t)tps.size()))
					t1 = tps[mid] ;
				else
					t1 = (tps[mid-1]+tps[mid])/2;
				return computeMFLOPS(t1,mflo,1);
			}
		case (Tag::TimeSelect::medmean) :
			{
				if (tim.size() < 3)
					return computeMFLOPS(tim,mflo,Tag::TimeSelect::median); ;

				size_t q1 = (size_t)((double)tim.size()/(double)4) ;
				size_t q3 = (size_t)tim.size()-q1 ;
				dvector_t tps (tim);
				std::sort(tps.begin(),tps.end());
				dvector_t tps2 (tim.begin()+q1,tim.begin()+q3);
				return computeMFLOPS(tps2,mflo,Tag::TimeSelect::average);
			}

		default :
			{
				throw("not among tags");
			}

		} // switch(ts)
	}
Пример #19
0
void App::OnPaint()
{
  sScreenMode mode;
  Screen->GetMode(mode);

  if(mode.SizeX*mode.SizeY==0)
    return;

  if(mode.SizeX!=RtSizeX || mode.SizeY!=RtSizeY)
  {
    delete RtDepth;
    delete RtColor;
    for(sInt i=0;i<sCOUNTOF(RtWork);i++)
      delete RtWork[i];

    sResPara rp; 
    rp = sResPara(sRBM_ColorTarget|sRU_Gpu|sRM_Texture|sRBM_Shader|sRBM_Unordered,mode.ColorFormat,sRES_NoMipmaps,mode.SizeX,mode.SizeY);

    for(sInt i=0;i<sCOUNTOF(RtWork);i++)
      RtWork[i] = new sResource(Adapter,rp);
    rp.Mode = sRBM_ColorTarget|sRU_Gpu|sRM_Texture;
    Adapter->GetBestMultisampling(rp,rp.MSCount,rp.MSQuality);
    RtColor = new sResource(Adapter,rp);
    rp.Format = mode.DepthFormat;
    rp.Mode = sRBM_DepthTarget|sRU_Gpu|sRM_Texture,mode.ColorFormat;
    RtDepth = new sResource(Adapter,rp);
    RtSizeX = mode.SizeX;
    RtSizeY = mode.SizeY;
  }

  sF32 time = sGetTimeMS()*0.001f;
  sTargetPara tp(sTAR_ClearAll,0xff405060,RtColor,RtDepth);
  sViewport view;

  for(sInt i=0;i<1;i++)
  {
    {
      sGPU_ZONE("Cube",0xff00ff00);
      Context->BeginTarget(tp);

      view.Camera.k.w = -3;
      view.Model = sEulerXYZ(time*0.11f,time*0.13f,time*0.15f);
      view.ZoomX = 1/tp.Aspect;
      view.ZoomY = 1;
      view.Prepare(tp);

      sFixedMaterialLightPara lp;
      lp.LightDirWS[0].Set(0,0,-1);
      lp.LightColor[0] = 0xffffff;
      lp.AmbientColor = 0x202020;

      cbv0->Map();
      cbv0->Data->Set(view,lp);
      cbv0->Unmap();

      Context->Draw(sDrawPara(Geo,Mtrl,cbv0));

      Context->EndTarget();
    }

    {
      sGPU_ZONE("Resolve",0xff00c0c0);
      Context->Copy(sCopyTexturePara(0,RtWork[0],RtColor));
    }

    int curRT = 0;


    {
      sGPU_ZONE("Blur",0xffa0e000);

      sF32 rad = 100 * (sin(time) + 1);
      rad *= rad / 100;

      cbc0->Map();
      cbc0->Data->TextureSize[0] = RtSizeX;
      cbc0->Data->TextureSize[1] = RtSizeY;
      cbc0->Data->BlurRadius.x = rad;
      cbc0->Data->BlurRadius.y = rad;
      cbc0->Unmap();

      int passes = 3;

      for (int i = 0; i < passes; i++)
      {
          BlurX->SetTexture(sST_Compute, 0, RtWork[curRT], CsSampler);
          BlurX->SetUav(sST_Compute, 0, RtWork[1-curRT]);
          BlurX->Prepare(0);
          Context->Draw(sDrawPara((RtSizeX+255) / 256, 1, 1, BlurX, cbc0));
          curRT = 1 - curRT;
      }

      for (int j = 0; j < passes; j++)
      {
          BlurY->SetTexture(sST_Compute, 0, RtWork[curRT], CsSampler);
          BlurY->SetUav(sST_Compute, 0, RtWork[1-curRT]);
          BlurY->Prepare(0);
          Context->Draw(sDrawPara(1, (RtSizeY+255) / 256, 1, BlurY, cbc0));
          curRT = 1 - curRT;
      }

    }

    {
      sGPU_ZONE("Back Blit",0xff00c0c0);
      Context->Copy(sCopyTexturePara(0,Screen->GetScreenColor(),RtWork[curRT]));
    }
  }
  {
    sGPU_ZONE("Hud",0xff404040);
    sTargetPara tps(0,0,Screen->GetScreenColor(),0);
    Context->BeginTarget(tps);

    DPaint->PrintPerfMon();
    DPaint->PrintFPS();
    DPaint->PrintStats();

    DPaint->Draw(tps);

    Context->EndTarget();
  }
  
}
Пример #20
0
//
//  機能     : 画面の更新
//  
//  機能説明 : 
//  
//  返り値   : BOOL
//  
//  備考     : 
//  
BOOL CMsgForm::UpdateForm(BOOL blPlayStop) 
//BOOL CMsgForm::UpdateForm() 
{
	CFileSpec fs;
	CMainFrame *pFrame = (CMainFrame*)::AfxGetMainWnd();

	/// カレントレコード
	if (theApp.m_lngRdflId <= 0) return FALSE;

	/// 再生中のファイルを停止する(フォーカスが移動するので注意!)
//	PlayStop();
	if (blPlayStop) PlayStop();

	//// プログレスバークリア
	if (m_Prog) m_Prog.SetPos(0);	


	/// 初期設定
	m_lngPlayTime = 0;
	m_strAudioFile.Empty();
	m_strVideoFile.Empty();
	m_Play.EnableWindow(FALSE);
	m_Stop.EnableWindow(FALSE);
	m_Pause.EnableWindow(FALSE);
	m_File.EnableWindow(FALSE);
	m_VFile.EnableWindow(FALSE);
	m_AppPlay.EnableWindow(FALSE);
	m_AppVPlay.EnableWindow(FALSE);
	m_Time.SetWindowText(_T("[ 00:00 ]"));

	/// RDFLテーブル検索
	CTblRdfl tbl(theApp.m_strDBPath);
	if (tbl.SelectRec(theApp.m_lngRdflId) <= 0) {
		return FALSE;
	}

	/// [件名]取得
	m_EditTitle = tbl.strTitle;
	//// [送信者名]取得
	CString strSender;
	if (tbl.strSenderId == _T("0")) {
		//// 不明な発信者(SkypeIn)
		strSender.LoadString(IDS_MSG_DEF);
		m_SenderName.SetWindowText(strSender);
		m_SenderId.SetWindowText(_T(""));
	} else {
		m_SenderName.SetWindowText(tbl.strSenderName);
		m_SenderId.SetWindowText(tbl.strSenderId);
	}
	//// [日時]取得
	_TCHAR strDate[64];
	CnvDateString((LPCTSTR)tbl.dlngSystemNew, strDate);
	m_Date.SetWindowText(strDate);
	/// 音声/ビデオファイル名取得
	int intFormatType = 0;
	CTPsetup tps(theApp.m_strDataFolder);
	tps.SetCallerId(tbl.strSenderId);
	m_strVideoFile = tps.FindRdfVideoFileName(tbl.strRemarks1, tbl.dlngSystemNew, _T("$$"));
	m_strAudioFile = tps.FindRdfWavFileName(tbl.strRemarks1, tbl.dlngSystemNew, _T("$$"));
	if (m_strAudioFile.IsEmpty()) {
		m_strAudioFile = tps.FindRdfMp3FileName(tbl.strRemarks1, tbl.dlngSystemNew, _T("$$"));
		intFormatType = 1;
	}

	CString strBar;
	if (!m_strAudioFile.IsEmpty()) {
	/// 受信音声ファイルがある場合
		CString strTmp;
		//// STatusBar用文字列
		fs.SetFullSpec(m_strAudioFile);
		strBar = fs.GetFileName();
		/// 受信音声ファイルの時間表示
		float fTime = m_pAudio->GetPlaySize(m_strAudioFile);
		if (fTime < 0) {
			_stprintf_s(te.errstr, MAX_ERRSTR, _T("Audio file may be broken:%s"), m_strAudioFile);
			te.ErrorMessage(ERRTYPE_LOGONLY, _T(__FILE__), __LINE__, ERR_TAPUR, te.errstr);
			return FALSE;
		}
		m_lngPlayTime = (fTime > 0) ? (long)fTime : 1;	// 1秒以下は1秒とする
		strTmp.Format(_T("[ %02i:%02i ]"), (m_lngPlayTime/60), (m_lngPlayTime%60));
		m_Time.SetWindowText(strTmp);
		//// 再生・エクスポートボタンを有効
		m_Play.EnableWindow(TRUE);
		m_File.EnableWindow(TRUE);
		m_AppPlay.EnableWindow(TRUE);

	}
	if (!m_strVideoFile.IsEmpty()) {
	/// 受信ビデオファイルがある場合
		//// STatusBar用文字列
		if (strBar.GetLength() > 0) {
			strBar += _T("/avi");
		} else {
			fs.SetFullSpec(m_strVideoFile);
			strBar = fs.GetFileName();
		}
		//// エクスポートボタンを有効
		m_VFile.EnableWindow(TRUE);
		m_AppVPlay.EnableWindow(TRUE);
	}

	/// StatusBarにファイル名、データタイプ表示
	pFrame->SetStatusText(strBar);
	if (tbl.lngRespType == 0) {
		strBar = _T("REC");
		if (tbl.lngClsCode1 == 1 || tbl.lngClsCode1 == 3) {
			strBar += _T("/IN");
		} else if (tbl.lngClsCode1 == 2 || tbl.lngClsCode1 == 4) {
			strBar += _T("/OUT");
		}
	} else {
		strBar = _T("ANSWER");
	}
	pFrame->SetStatusText(strBar, 1);

	/// 再生ファイルが存在しない場合、表示のみで未再生リストを再生済みに変更
	if (m_strAudioFile.IsEmpty() && m_strVideoFile.IsEmpty() && tbl.lngViewFlag != 1) {
		// (???)ChgMsgMark()でテーブル更新すると、テーブルロックが解除されていないため、ここで更新する
		tbl.lngViewFlag = 1;
		tbl.UpdateRec(theApp.m_lngRdflId);
		CMsgList *pfview = (CMsgList *)pFrame->m_pMsgList->GetWnd();
		pfview->ChgMsgMark(FALSE);
	}

	UpdateData(FALSE);	// DDX更新

	return TRUE;
}
Пример #21
0
//
//  機能     : 画面の更新
//  
//  機能説明 : 
//  
//  返り値   : BOOL
//  
//  備考     : 
//  
BOOL CRsfSimpleForm::UpdateForm() 
{
	/// カレントレコード
	if (theApp.m_lngRsflId <= 0) return FALSE;

	/// 再生中のファイルを停止する
//	PlayStop();

	// StatusBarのクリア
	CMainFrame *pFrame = (CMainFrame*)::AfxGetMainWnd();
	pFrame->SetStatusText(_T(""), 0);
	pFrame->SetStatusText(_T(""), 1);

	// ラジオボタンの参照定義(DDXは扱いにくいので)
	// (クラスメンバーで宣言すると正常に動作しない)
	CButton *rd_rec = (CButton *)GetDlgItem(IDC_RDO_REC);
	CButton *rd_vrec = (CButton *)GetDlgItem(IDC_RDO_VREC);
	CButton *rd_discon = (CButton *)GetDlgItem(IDC_RDO_DISCONNECT);

	/// 初期設定
	m_blAudio = FALSE;
    m_blChat = FALSE;
    m_blVideo = FALSE;
    m_blImg = FALSE;
	m_blBeep = FALSE;
	m_blPrg = FALSE;
	rd_rec->SetCheck(0);
	rd_vrec->SetCheck(0);
	rd_discon->SetCheck(1);

	/// 応答設定テーブルを選択
	CTblRsfl tbl(theApp.m_strDBPath);
	CString strWhere;
	_TCHAR buf[64];
	strWhere.Empty();
	_ltot_s(theApp.m_lngRsflId, buf, sizeof(buf)/sizeof(buf[0]), 10);
	strWhere = strWhere + _T("ID") + _T("=") + buf;
	_ltot_s(RESPBASE_TYPE_SIMPLE, buf, sizeof(buf)/sizeof(buf[0]), 10);
	strWhere = strWhere + _T(" and ") + _T("lngRespType") + _T("=") + buf;
	if (tbl.SelectRec(strWhere) <= 0) {
		return FALSE;
	}

	/// 選択された応答設定RSFをロード
	CTPsetup tps(theApp.m_strDataFolder);
	if (tbl.lngDefaultFlag == 1) {
		m_strSenderId = _T("0");	// default setting
	} else {
		m_strSenderId = tbl.strSenderId;
	}
	tps.SetCallerId(m_strSenderId);
	UST_RSF *pst = tps.LoadRSF();
	if (pst == NULL) return FALSE;

	/// 選択された応答設定RSFを参照
	UST_RSF_RESP *pst_resp;
	for (int i = 0; i < pst->resp_cnt; i++) {
		pst_resp = pst->resp + i;
		//// BEEPのON/OFF
		if (pst_resp->beep > 0) {
			m_blBeep = TRUE;
		}
		switch(pst_resp->type) {
		case RESP_TYPE_PLAY:
			//// 再生内容のON/OFF
			if (pst_resp->play_type & RESP_PLAY_TYPE_AUDIO) {
				m_blAudio = TRUE;
			}
			if (pst_resp->play_type & RESP_PLAY_TYPE_VIDEO) {
				m_blVideo = TRUE;
			}
			if (pst_resp->play_type & RESP_PLAY_TYPE_IMAGE) {
				m_blImg = TRUE;
			}
			if (pst_resp->play_type & RESP_PLAY_TYPE_CHAT) {
				m_blChat = TRUE;
			}
			break;
		//// 録音内容のON/OFF
		case RESP_TYPE_RECORD:
			rd_rec->SetCheck(1);
			rd_vrec->SetCheck(0);
			rd_discon->SetCheck(0);
			break;
		case RESP_TYPE_VRECORD:
			rd_rec->SetCheck(0);
			rd_vrec->SetCheck(1);
			rd_discon->SetCheck(0);
			break;
		case RESP_TYPE_DISCONNECT:
			// 全ての設定で使用されるので、設定すべきことはない
			break;
		//// プログラム連携のON/OFF
		case RESP_TYPE_EXEC:
			m_blPrg = TRUE;
			break;
		default:
			break;
		}
	}

	/// 応答音声ファイルの時間表示
	CString strPlayFile;
	CString strSize;
	CFileSpec fs;
	strSize = _T("[ 00:00 ]");
	strPlayFile = tps.RsfAudioFileName(_T("$"));
	fs.SetFullSpec(strPlayFile);
	if (fs.Exist()) {
		CMainFrame *pFrame = (CMainFrame*)::AfxGetMainWnd();
		CAudio *pAudio = pFrame->m_pAudio;
		pAudio->m_PlayFile = strPlayFile;
		float fTime = pAudio->GetPlaySize();
		if (fTime > 0.0) {
			long lngTime = (long)(fTime+1);
			strSize.Format(_T("[ %02i:%02i ]"), (lngTime/60), (lngTime%60));
		}
	}
	m_lblAudioSize.SetText((LPCTSTR)strSize);

	/// 応答ビデオファイルの時間表示
	strSize = _T("[ 00:00 ]");
	strPlayFile = tps.RsfVideoFileName(_T("$"));
	fs.SetFullSpec(strPlayFile);
	if (fs.Exist()) {
		CMainFrame *pFrame = (CMainFrame*)::AfxGetMainWnd();
		CVideo *pVideo = pFrame->m_pVideo;
		pVideo->SetPlayFile(strPlayFile);
		float fTime = pVideo->GetPlaySize();
		if (fTime > 0.0) {
			long lngTime = (long)(fTime+1);
			strSize.Format(_T("[ %02i:%02i ]"), (lngTime/60), (lngTime%60));
		}
	}
	m_lblVideoSize.SetText((LPCTSTR)strSize);

	/// 画像ファイルのサイズ表示
	strSize = _T("[ 0 Kbytes ]");
	strPlayFile = tps.FindRsfImgFile(_T("$"));
	fs.SetFullSpec(strPlayFile);
	if (fs.Exist()) {
		strSize.Format(_T("[ %d Kbytes ]"), fs.FileSize()/1024);
	}
	m_lblImgSize.SetText((LPCTSTR)strSize);

	/// チャットテキストファイルのサイズ表示
	strSize = _T("[ 0 bytes ]");
	strPlayFile = tps.RsfChatFileName(_T("$"));
	fs.SetFullSpec(strPlayFile);
	if (fs.Exist()) {
		strSize.Format(_T("[ %d bytes ]"), fs.FileSize());
	}
	m_lblChatSize.SetText((LPCTSTR)strSize);

 	/// 連携プログラムコンボボックスを選択
	CString str, strPrgId;
	strPrgId.Format(_T("%d"), pst_resp->exec_id);
	int idx = 0;
	for(int i = 0; i <  m_aryPrgId.GetSize(); i++) {
		str = m_aryPrgId.GetAt(i);
		if (strPrgId == str) {
			idx = i;
			break;
		}
	}
	m_idxPrg = idx;

	/// 連携プログラムCSVファイルが存在しない場合、テンプレートCSVフォルダからコピー
	CString strBinDir, strFile;
	fs.SetFullSpec(FS_APPDIR);
	strBinDir = fs.GetFullSpec() + _T("bin");	// テンプレートCSVフォルダ
	for(int i = 0; i <  m_aryPrgId.GetSize(); i++) {
		strPrgId = m_aryPrgId.GetAt(i);
		strFile = tps.RsfPrgFileName(_T("$$$$"), strPrgId);	// 連携プログラムCSVファイル
		fs.SetFullSpec(strFile);
		if (!fs.Exist()) {
			fs.SetFullSpec(strBinDir + "\\" + strPrgId + ".csv");
			if (fs.Exist()) {
				fs.FileCopy(strFile, FALSE);	// 上書きはしない
			}
		}
	}

	UpdateData(FALSE);	// DDX更新

	return TRUE;
}
Пример #22
0
//
//  機能     : RSFファイルの更新
//  
//  機能説明 : 
//  
//  返り値   : BOOL
//  
//  備考     : 
//  
BOOL CRsfSimpleForm::UpdateFile() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	CString str;

	UpdateData(TRUE);	// DDX更新

	// ラジオボタンの参照定義(DDXは扱いにくいので)
	// (クラスメンバーで宣言すると正常に動作しない)
	CButton *rd_rec = (CButton *)GetDlgItem(IDC_RDO_REC);
	CButton *rd_vrec = (CButton *)GetDlgItem(IDC_RDO_VREC);
	CButton *rd_discon = (CButton *)GetDlgItem(IDC_RDO_DISCONNECT);

	/// 応答設定パラメータ作成
	CTPsetup tps(theApp.m_strDataFolder);
	tps.SetCallerId(m_strSenderId);
	CRsfPrm prm;
	CArray<CRsfPrm, CRsfPrm> prmArray;
	//// 応答メッセージ
	if (m_blAudio) {
		prm.type = RESP_TYPE_PLAY;
		prm.play_type |= RESP_PLAY_TYPE_AUDIO;
	}
	if (m_blChat) {
		prm.type = RESP_TYPE_PLAY;
		prm.play_type |= RESP_PLAY_TYPE_CHAT;
	}
	if (m_blVideo) {
		prm.type = RESP_TYPE_PLAY;
		prm.play_type |= RESP_PLAY_TYPE_VIDEO;
	}
	if (m_blImg) {
		prm.type = RESP_TYPE_PLAY;
		prm.play_type |= RESP_PLAY_TYPE_IMAGE;
		str = tps.FindRsfImgFile(_T("$"));
		str = str.Right(3);
		str.MakeLower();
		if (str == _T("bmp")) {
			prm.file_type = RESP_FILE_TYPE_BMP;
		} else if (str == _T("jpg")) {
			prm.file_type = RESP_FILE_TYPE_JPEG;
		} else if (str == _T("gif")) {
			prm.file_type = RESP_FILE_TYPE_GIF;
		}
	}
	if (prm.type == RESP_TYPE_PLAY) {
		prmArray.Add(prm);
	}
	//// 録音タイプ
	prm.Init();
	if (m_blBeep) {
		prm.beep = 1;
	}
	if (rd_rec->GetCheck()) {
		prm.type = RESP_TYPE_RECORD;
	} else if (rd_vrec->GetCheck()) {
		prm.type = RESP_TYPE_VRECORD;
	} else if (rd_discon->GetCheck()) {
		prm.type = RESP_TYPE_DISCONNECT;
	}
	prmArray.Add(prm);
	//// 終了
	if (prm.type != RESP_TYPE_DISCONNECT) {
		prm.Init();
		prm.type = RESP_TYPE_DISCONNECT;
		prmArray.Add(prm);
	}
	//// 連携プログラム
	if (m_blPrg) {
		prm.Init();
		prm.type = RESP_TYPE_EXEC;
		CString strPrgId = m_aryPrgId.GetAt(m_idxPrg);
		prm.exec_id = _ttoi(strPrgId);
		prmArray.Add(prm);
	}

	/// 応答設定ファイル再作成
	if (!tps.SaveRsfFile(prmArray)){
		return FALSE;
	}

	return TRUE;
}
Пример #23
0
int main(int argc, char *argv[])
{
    printf("%d ticks/second\n", tps());
    return 0;
}