, _latency_flush_frames (0)
, _latency_signal_latency (0)
, _stopped_for_latency (false)
+ , _started_for_latency (false)
, _in_destructor (false)
, _hw_reset_event_thread(0)
, _hw_reset_request_count(0)
return _instance;
}
-void
-_thread_init_callback (void * /*arg*/)
-{
- /* make sure that anybody who needs to know about this thread
- knows about it.
- */
-
- pthread_set_name (X_("audioengine"));
-
- PBD::notify_gui_about_thread_creation ("gui", pthread_self(), X_("Audioengine"), 4096);
- PBD::notify_gui_about_thread_creation ("midiui", pthread_self(), X_("Audioengine"), 128);
-
- SessionEvent::create_per_thread_pool (X_("Audioengine"), 512);
-
- AsyncMIDIPort::set_process_thread (pthread_self());
-}
-
void
AudioEngine::split_cycle (pframes_t offset)
{
AudioBackendInfo*
AudioEngine::backend_discover (const string& path)
{
+#ifdef PLATFORM_WINDOWS
+ // do not show popup dialog (e.g. missing libjack.dll)
+ // win7+ should use SetThreadErrorMode()
+ SetErrorMode(SEM_FAILCRITICALERRORS);
+#endif
Glib::Module module (path);
+#ifdef PLATFORM_WINDOWS
+ SetErrorMode(0); // reset to system default
+#endif
AudioBackendInfo* info;
AudioBackendInfo* (*dfunc)(void);
void* func = 0;
error << Glib::Module::get_last_error() << endmsg;
return 0;
}
-
- module.make_resident ();
dfunc = (AudioBackendInfo* (*)(void))func;
info = dfunc();
+ if (!info->available()) {
+ return 0;
+ }
+
+ module.make_resident ();
return info;
}