From 8defdcb32f4421c9d124767d1c677c05791ead55 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 11 Oct 2007 02:31:34 +0000 Subject: Fix Gtk rendering corruption problems when running monolithic (internal engine). Reduce Gtk main loop overhead when running monolithic. Fix crash on importing certain Om patches. git-svn-id: http://svn.drobilla.net/lad/ingen@870 a436a847-0d15-0410-975c-d299462d15a1 --- src/libs/gui/ConnectWindow.cpp | 47 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 24 deletions(-) (limited to 'src/libs/gui/ConnectWindow.cpp') diff --git a/src/libs/gui/ConnectWindow.cpp b/src/libs/gui/ConnectWindow.cpp index e8f93354..25195f75 100644 --- a/src/libs/gui/ConnectWindow.cpp +++ b/src/libs/gui/ConnectWindow.cpp @@ -24,6 +24,7 @@ #include #include CONFIG_H_PATH #include "interface/EngineInterface.hpp" +#include "module/World.hpp" #include "engine/tuning.hpp" #include "engine/Engine.hpp" #include "engine/QueuedEngineInterface.hpp" @@ -107,9 +108,14 @@ ConnectWindow::ConnectWindow(BaseObjectType* cobject, const Glib::RefPtr engine, SharedPtr interface) { + if (engine) { + _engine = engine; + _mode = INTERNAL; + } + set_connected_to(interface); - show(); +#if 0 if (engine) { Glib::signal_timeout().connect( @@ -126,13 +132,10 @@ ConnectWindow::start(SharedPtr engine, SharedPtrget_text())); OSCSigEmitter* ose = new OSCSigEmitter(1024, 16181); // FIXME: args - SharedPtr client(ose); + SharedPtr client(ose); App::instance().attach(engine, client); Glib::signal_timeout().connect( @@ -224,7 +227,7 @@ ConnectWindow::connect() new OSCEngineSender(string("osc.udp://localhost:").append(port_str))); OSCSigEmitter* ose = new OSCSigEmitter(1024, 16181); // FIXME: args - SharedPtr client(ose); + SharedPtr client(ose); App::instance().attach(engine, client); Glib::signal_timeout().connect( @@ -240,26 +243,23 @@ ConnectWindow::connect() } else if (_mode == INTERNAL) { assert(_new_engine); _engine = SharedPtr(_new_engine(App::instance().world())); - - //_engine->start_jack_driver(); + App::instance().world()->local_engine = _engine.get(); SharedPtr engine_interface = _engine->new_queued_interface(); - ThreadedSigClientInterface* tsci = new ThreadedSigClientInterface(Ingen::event_queue_size); - SharedPtr client(tsci); + SharedPtr client( + new ThreadedSigClientInterface(Ingen::event_queue_size)); + + _engine->start_jack_driver(); + _engine->activate(1); // FIXME: parallelism App::instance().attach(engine_interface, client); - /*_engine->activate(1); // FIXME - Glib::signal_timeout().connect( - sigc::mem_fun(_engine.get(), &Ingen::Engine::main_iteration), 1000);*/ + sigc::mem_fun(App::instance(), &App::gtk_main_iteration), 100); Glib::signal_timeout().connect( sigc::mem_fun(this, &ConnectWindow::gtk_callback), 100); - - /*Glib::signal_timeout().connect( - sigc::mem_fun(tsci, &ThreadedSigClientInterface::emit_signals), 10, G_PRIORITY_HIGH_IDLE);*/ } } @@ -341,12 +341,11 @@ ConnectWindow::gtk_callback() /* Connecting to engine */ if (_connect_stage == 0) { - assert(!_attached); + _attached = false; + assert(App::instance().engine()); assert(App::instance().client()); - // FIXME - //assert(!App::instance().engine()->is_attached()); _progress_label->set_text("Connecting to engine..."); present(); @@ -381,7 +380,7 @@ ConnectWindow::gtk_callback() // FIXME //auto_ptr client(new ThreadedSigClientInterface(); // FIXME: client URI - App::instance().engine()->register_client(App::instance().client().get()); + //App::instance().engine()->register_client(App::instance().client().get()); App::instance().engine()->load_plugins(); ++_connect_stage; } else if (_connect_stage == 3) { -- cgit v1.2.1