void initWaveAnalyzer(void) { #if EFI_WAVE_ANALYZER || defined(__DOXYGEN__) initLogging(&logger, "wave"); initWave(WA_CHANNEL_1, 0); initWave(WA_CHANNEL_2, 1); addTriggerEventListener(&waTriggerEventListener, "wave analyzer", (void*) NULL); addConsoleActionII("set_logic_input_mode", setWaveModeSilent); chThdCreateStatic(waThreadStack, sizeof(waThreadStack), NORMALPRIO, waThread, (void*) NULL); #else print("wave disabled\r\n"); #endif }
void initWaveAnalyzer(Logging *sharedLogger) { logger = sharedLogger; if (hasFirmwareError()) { return; } #if EFI_WAVE_ANALYZER initWave(WA_CHANNEL_1, 0); initWave(WA_CHANNEL_2, 1); addTriggerEventListener(waTriggerEventListener, "wave analyzer", engine); addConsoleAction("waveinfo", showWaveInfo); addConsoleActionII("set_logic_input_mode", setWaveModeSilent); chThdCreateStatic(waThreadStack, sizeof(waThreadStack), NORMALPRIO, (tfunc_t)waThread, NULL); #else print("wave disabled\r\n"); #endif }
int main( int argc, char **argv ) { ChangeList::setReadWriteDefault(); osgInit(argc,argv); _main_thread = Thread::getCurrent(); _sync_barrier = Barrier::get("RenderBarrier"); QApplication::setColorSpec( QApplication::CustomColor ); QApplication a( argc, argv ); if(!QGLFormat::hasOpenGL()) { qWarning( "This system has no OpenGL support. Exiting." ); return -1; } _render_widget = new OpenSGWidget(QGLFormat(QGL::DoubleBuffer | QGL::DepthBuffer | QGL::Rgba | QGL::DirectRendering)); NodePtr scene = makePlane(1.0, 1.0, 50, 50); MaterialChunkPtr matc = MaterialChunk::create(); beginEditCP(matc); matc->setAmbient(Color4f(0.3, 0.3, 0.3, 1.0)); matc->setDiffuse(Color4f(0.2, 0.2, 0.8, 1.0)); matc->setSpecular(Color4f(0.6, 0.6, 0.6, 1.0)); matc->setShininess(100); endEditCP(matc); ChunkMaterialPtr cmat = ChunkMaterial::create(); beginEditCP(cmat); cmat->addChunk(matc); endEditCP(cmat); _geo = GeometryPtr::dcast(scene->getCore()); beginEditCP(_geo); _geo->setDlistCache(false); _geo->setMaterial(cmat); endEditCP(_geo); initWave(); resetWave(); _render_widget->getManager()->setRoot(scene); _render_widget->getManager()->showAll(); _render_widget->getManager()->getNavigator()->setFrom(Pnt3f(1.0f, -1.0f, 1.0f)); _render_widget->getManager()->getNavigator()->setUp(Vec3f(0.0f, 0.0f, 1.0f)); _render_widget->show(); while(!_render_widget->isInitialized()) qApp->processEvents(); // The gl widget is initialized in the main thread! // Without the doneCurrent() the next makeCurrent() call in the render thread // doesn't work because qt thinks that the context is already current but this // was in the main thread ... _render_widget->doneCurrent(); // start render thread _render_thread = dynamic_cast<Thread *>(ThreadManager::the()->getThread("RenderThread")); _render_thread->runFunction(renderThread, 1, NULL); // main loop while(!_quit) { mainThread(); // sync _sync_barrier->enter(2); if(_do_quit) _quit = true; _sync_barrier->enter(2); _main_thread->getChangeList()->clearAll(); qApp->processEvents(); } Thread::join(_render_thread); return 0; }