From: Tim Mayberry Date: Sun, 15 Feb 2015 05:05:22 +0000 (+1000) Subject: Add TestUI class to properly handle EventLoop invalidation X-Git-Tag: 4.0-rc1~443 X-Git-Url: https://main.carlh.net/gitweb/?p=ardour.git;a=commitdiff_plain;h=2a04ff8641df26d5bdccb3061af3afea8f68fe23 Add TestUI class to properly handle EventLoop invalidation This fixes the programming error: Session RT event... warnings while running ardour tests --- diff --git a/libs/ardour/test/test_ui.cc b/libs/ardour/test/test_ui.cc new file mode 100644 index 0000000000..202c19a699 --- /dev/null +++ b/libs/ardour/test/test_ui.cc @@ -0,0 +1,66 @@ +/* + Copyright (C) 2015 Tim Mayberry + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "test_ui.h" + +#include + +#include "pbd/error.h" + +#include "ardour/session_event.h" +#include "ardour/rc_configuration.h" + +#include "pbd/abstract_ui.cc" // instantiate template + +using namespace ARDOUR; + +template class AbstractUI; + +TestUI::TestUI () + : AbstractUI ("test_ui") +{ + + pthread_set_name ("test_ui_thread"); + + run_loop_thread = Glib::Threads::Thread::self (); + + set_event_loop_for_thread (this); + + SessionEvent::create_per_thread_pool ("test", 512); + + m_test_receiver.listen_to (PBD::error); + m_test_receiver.listen_to (PBD::info); + m_test_receiver.listen_to (PBD::fatal); + m_test_receiver.listen_to (PBD::warning); + + /* We can't use VSTs here as we have a stub instead of the + required bits in gtk2_ardour. + */ + Config->set_use_lxvst (false); +} + +TestUI::~TestUI () +{ + m_test_receiver.hangup (); +} + +void +TestUI::do_request (TestUIRequest* req) +{ + +} diff --git a/libs/ardour/test/test_ui.h b/libs/ardour/test/test_ui.h new file mode 100644 index 0000000000..f62dcbc82f --- /dev/null +++ b/libs/ardour/test/test_ui.h @@ -0,0 +1,48 @@ +/* + Copyright (C) 2015 Tim Mayberry + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +//#ifndef ABSTRACT_UI_EXPORTS +//#define ABSTRACT_UI_EXPORTS +//#endif + +#include "pbd/abstract_ui.h" + +#include "test_receiver.h" + +class TestUIRequest : public BaseUI::BaseRequestObject +{ + +}; + +class TestUI : public AbstractUI +{ +public: // ctors + + TestUI (); + + ~TestUI (); + +public: // AbstractUI Interface + + virtual void do_request (TestUIRequest*); + +private: // member data + + TestReceiver m_test_receiver; + +}; diff --git a/libs/ardour/test/test_util.cc b/libs/ardour/test/test_util.cc index 3b95d1b708..9543bf58ae 100644 --- a/libs/ardour/test/test_util.cc +++ b/libs/ardour/test/test_util.cc @@ -29,7 +29,6 @@ #include "ardour/audioengine.h" #include "test_util.h" -#include "test_receiver.h" #include @@ -97,25 +96,6 @@ write_ref (XMLNode* node, string ref_file) return rv; } -TestReceiver test_receiver; - -bool -test_init () -{ - SessionEvent::create_per_thread_pool ("test", 512); - - test_receiver.listen_to (error); - test_receiver.listen_to (info); - test_receiver.listen_to (fatal); - test_receiver.listen_to (warning); - - /* We can't use VSTs here as we have a stub instead of the - required bits in gtk2_ardour. - */ - Config->set_use_lxvst (false); - return true; -} - void create_and_start_dummy_backend () { diff --git a/libs/ardour/test/test_util.h b/libs/ardour/test/test_util.h index fe8e9e9389..85041f441a 100644 --- a/libs/ardour/test/test_util.h +++ b/libs/ardour/test/test_util.h @@ -31,8 +31,6 @@ namespace ARDOUR { class Session; } -bool test_init (); - PBD::Searchpath test_search_path (); std::string new_test_output_dir (std::string prefix = ""); diff --git a/libs/ardour/test/testrunner.cc b/libs/ardour/test/testrunner.cc index 9fa8c82798..2d9a8fc39e 100644 --- a/libs/ardour/test/testrunner.cc +++ b/libs/ardour/test/testrunner.cc @@ -11,7 +11,7 @@ #include "pbd/debug.h" #include "ardour/ardour.h" -#include "test_util.h" +#include "test_ui.h" static const char* localedir = LOCALEDIR; @@ -51,8 +51,8 @@ main(int argc, char* argv[]) CPPUNIT_ASSERT (ARDOUR::init (false, true, localedir)); - CPPUNIT_ASSERT (test_init ()); - + TestUI* test_ui = new TestUI(); + CppUnit::TestResult testresult; CppUnit::TestResultCollector collectedresults; @@ -68,6 +68,8 @@ main(int argc, char* argv[]) CppUnit::CompilerOutputter compileroutputter (&collectedresults, std::cerr); compileroutputter.write (); + delete test_ui; + ARDOUR::cleanup (); return collectedresults.wasSuccessful () ? 0 : 1; diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 474ffdc6c1..9b2e9c4b2c 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -421,7 +421,7 @@ def build(bld): testcommon = bld(features = 'cxx') testcommon.includes = obj.includes + ['test', '../pbd', '..'] testcommon.source = ['test/testrunner.cc', 'test/test_needing_session.cc', - 'test/dummy_lxvst.cc', 'test/audio_region_test.cc', 'test/test_util.cc'] + 'test/dummy_lxvst.cc', 'test/audio_region_test.cc', 'test/test_util.cc', 'test/test_ui.cc'] testcommon.uselib = ['CPPUNIT','SIGCPP','GLIBMM','GTHREAD', 'SAMPLERATE','XML','LRDF','COREAUDIO','TAGLIB','VAMPSDK','VAMPHOSTSDK','RUBBERBAND'] testcommon.use = ['libpbd','libmidipp','libevoral',