// This is it...
HRESULT DDVideo::Play(ZString& strPath, bool bWindowed)
{
	m_bWindowed = bWindowed;
    HRESULT hr;  
	if( FAILED( hr = InitDirectDraw() ) ) {
		ZDebugOutput("InitDirectDraw() failed\n");
		return hr;
	}

	m_pVideo=new CDShow();

	if (m_pVideo==NULL) 
		return FALSE;	                 
    	
	if(!( m_pVideo->Open(strPath,m_lpDD) ))
		{
	
		// remember to destroy DShow (pVideo) object to clean up after us.
		// Return FALSE to let caller know we failed.
			ZDebugOutput("m_pVideo->Open failed\n");
		return FALSE;
		}			
	else
		m_pVideo->Start();     

	return S_OK;
}
 void ZTraceImpl(const char* pcc)
 {
     if (g_bEnableTrace) {
         ZDebugOutput(ZString((float)g_line, 4, 0) + g_strSpaces + ZString(pcc) + "\n");
     }
     g_line++;
 }
bool Win32App::OnAssert(const char* psz, const char* pszFile, int line, const char* pszModule)
{
    ZDebugOutput(
          ZString("assertion failed: '")
        + psz
        + "' ("
        + pszFile
        + ":"
        + ZString(line)
        + ")\n"
    );

    //return _CrtDbgReport(_CRT_ASSERT, pszFile, line, pszModule, psz) == 1;
    return true;
}
예제 #4
0
/*-------------------------------------------------------------------------
 * SQLWhatsWrong
 *-------------------------------------------------------------------------
 * Purpose:
 *    Diagnostics for odbc calls
 * 
 * Side Effects:
 *    Breaks on anything but SQL_SUCCESS
 */
void SQLWhatsWrong(SQLSMALLINT ssiHandleType, SQLHANDLE sh)
{
  SQLCHAR scState[5];
  SQLINTEGER siNativeError;
  SQLCHAR scMsgText[512];
  SQLSMALLINT cbMsgText;
  SQLRETURN sqlret = SQLGetDiagRecA(ssiHandleType, sh, 1, scState, &siNativeError, 
      scMsgText, sizeof(scMsgText), &cbMsgText);
  ZDebugOutput((char *) scMsgText);

  // BIG hack to work with zone profile
  if (7312 == siNativeError)
    return;

  // If our query is deadlocked, let's try again
  if (1205 == siNativeError)
  {
    debugf("Query deadlocked. Retry #%d.", g_cSQLRetries);
    g_fSQLRetry = true;
    g_cSQLRetries++;
    SQLCloseCursor(g_hstmt_Last); // we get an invalid cursor state without this.
    Sleep(50 * g_cSQLRetries);
    return;
  }
  
  if(g_pSQLSite) // sometimes NULL because g_pSQLSite is sometimes constructed (and set to NULL) sometime after InitSql() has its way with it.
    g_pSQLSite->OnMessageBox((char *) scMsgText, "FedSrv SQL Error", MB_OK | MB_ICONINFORMATION);
  else 
  {
      debugf("SQL Error %s\n", scMsgText);
      printf("SQL Error %s\n", scMsgText);
  }
  // if we can't access the database, we're screwed, so give up.
  // TODO: Make the exit more graceful
  //assert(0); // let's at least break in debug build
  //exit(EXIT_FAILURE);
}
TRef<INameSpace> EffectApp::OptimizeThingGeo(const ZString& str, Geo* pgeo, Number* pnumber)
{
    //
    // Get the time value
    //

    TRef<INameSpace> pnsModel = GetModeler()->GetNameSpace("model");
    TRef<Number>     pnumberTime;
    CastTo(pnumberTime, pnsModel->FindMember("time"));

    //
    // we are going to create a namespace with all the stuff needed by a ThingGeo
    //

    TRef<INameSpace> pns = GetModeler()->CreateNameSpace(str, m_pns);

    if (pnumber != NULL) {
        pns->AddMember("frame", pnumber);
    }

    //
    // Wrap the Geo up so we don't lose the pointer as we do optimizations
    //

    TRef<WrapGeo> pwrap = new WrapGeo(pgeo);
    pwrap->Update();

    //
    // Add a LightsGeo to the Group
    //

    TRef<LightsGeo> plights = new LightsGeo(GetModeler(), pnumberTime);

    //
    // Add a list of frames
    //

    TRef<FrameDataListValue> pframes = new FrameDataListValue();

    //
    // Extract the lights and frames
    //

    ZDebugOutput("Before Callback: " + ZString(pwrap->GetGeo()->GetNodeCount()) + "\n");

    TRef<GroupGeoCallbackImpl> pcallback = new GroupGeoCallbackImpl(pframes, plights);
    pwrap->GetGeo()->CallGroupGeoCallback(Matrix::GetIdentity(), pcallback);

    //
    // If there are any lights or frames add them to the namespace
    //

    if (plights->GetCount() > 0) {
        pns->AddMember("lights", plights);
    }

    if (pframes->GetList().GetCount() > 0) {
        pns->AddMember("frames", pframes);
    }

    //
    // Optimize the geo
    //

    bool bAnyFold;
    TRef<Geo> pgeoFold;
    do {
        bAnyFold = false;
        ZDebugOutput("Before RemoveMaterial: " + ZString(pwrap->GetGeo()->GetNodeCount()) + "\n");

        pgeoFold = pwrap->GetGeo()->RemoveMaterial();

        if (pgeoFold) {
            bAnyFold = true;
            pwrap->SetGeo(pgeoFold);
            ZDebugOutput("Before           Fold: " + ZString(pwrap->GetGeo()->GetNodeCount()) + "\n");
            pwrap->GetGeo()->DoFold();
        }

        ZDebugOutput("Before    FoldTexture: " + ZString(pwrap->GetGeo()->GetNodeCount()) + "\n");
        pgeoFold = pwrap->GetGeo()->FoldTexture();

        if (pgeoFold) {
            bAnyFold = true;
            pwrap->SetGeo(pgeoFold);
            ZDebugOutput("Before           Fold: " + ZString(pwrap->GetGeo()->GetNodeCount()) + "\n");
            pwrap->GetGeo()->DoFold();
        }
        if (!bAnyFold) {
            ZDebugOutput("Before           Fold: " + ZString(pwrap->GetGeo()->GetNodeCount()) + "\n");
            bAnyFold = pwrap->GetGeo()->DoFold();
        }
    } while (bAnyFold);

    ZDebugOutput("After Optimization: " + ZString(pwrap->GetGeo()->GetNodeCount()) + "\n");

    //
    // We're done
    //

    pns->AddMember("object", pwrap->GetGeo());

    return pns;
}