From e0372cfee7cb9cc4fe95d605854a02b4feed28c2 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Fri, 17 May 2013 19:30:08 +0200 Subject: Fix deprecated INCLUDES variable in Makefile.am's. Add skeleton code for jackaudio output module. --- configure.in | 19 ++++++- drumgizmo/Makefile.am | 8 +-- drumgizmo/input/dummy/Makefile.am | 2 +- drumgizmo/input/jackmidi/Makefile.am | 8 ++- drumgizmo/input/jackmidi/jackclient.cc | 96 ---------------------------------- drumgizmo/input/jackmidi/jackclient.h | 64 ----------------------- drumgizmo/input/jackmidi/jackmidi.cc | 2 +- drumgizmo/input/midifile/Makefile.am | 2 +- drumgizmo/input/test/Makefile.am | 2 +- drumgizmo/jackclient.cc | 96 ++++++++++++++++++++++++++++++++++ drumgizmo/jackclient.h | 62 ++++++++++++++++++++++ drumgizmo/output/Makefile.am | 2 +- drumgizmo/output/alsa/Makefile.am | 2 +- drumgizmo/output/dummy/Makefile.am | 2 +- drumgizmo/output/wavfile/Makefile.am | 2 +- lv2/Makefile.am | 2 +- 16 files changed, 193 insertions(+), 178 deletions(-) delete mode 100644 drumgizmo/input/jackmidi/jackclient.cc delete mode 100644 drumgizmo/input/jackmidi/jackclient.h create mode 100644 drumgizmo/jackclient.cc create mode 100644 drumgizmo/jackclient.h diff --git a/configure.in b/configure.in index 32c1c1c..81025b2 100644 --- a/configure.in +++ b/configure.in @@ -172,6 +172,21 @@ if test "x$enable_cli" = "xyes"; then have_output_dummy=no fi + dnl *** Jackaudio + AC_ARG_ENABLE([output_jackaudio], + [ --disable-output-jackaudio Disable output jack plugin [default=enabled]],, + [enable_output_jackaudio="yes"]) + if test "x$enable_output_jackaudio" = "xyes"; then + have_output_jackaudio=yes + dnl ====================== + dnl Check for jack + dnl ====================== + PKG_CHECK_MODULES(JACK, jack >= 0.120.1) + else + AC_MSG_RESULT([*** output jack plugin disabled per user request ***]) + have_output_jackaudio=no + fi + dnl *** alsa AC_ARG_ENABLE([output_alsa], [ --disable-output-alsa Disable output alsa plugin [default=enabled]],, @@ -198,7 +213,7 @@ if test "x$enable_cli" = "xyes"; then have_output_wavfile=no fi - OUTPUT_PLUGINS="dummy alsa wavfile" + OUTPUT_PLUGINS="dummy alsa wavfile jackaudio" AC_SUBST(OUTPUT_PLUGINS) dnl @@ -228,6 +243,7 @@ AM_CONDITIONAL([HAVE_INPUT_MIDIFILE], [test "x$have_input_midifile" = "xyes"]) AM_CONDITIONAL([HAVE_OUTPUT_DUMMY], [test "x$have_output_dummy" = "xyes"]) AM_CONDITIONAL([HAVE_OUTPUT_ALSA], [test "x$have_output_alsa" = "xyes"]) AM_CONDITIONAL([HAVE_OUTPUT_WAVFILE], [test "x$have_output_wavfile" = "xyes"]) +AM_CONDITIONAL([HAVE_OUTPUT_JACKAUDIO], [test "x$have_output_jackaudio" = "xyes"]) AC_ARG_ENABLE([editor], @@ -346,6 +362,7 @@ AC_OUTPUT( drumgizmo/output/Makefile drumgizmo/output/dummy/Makefile drumgizmo/output/alsa/Makefile + drumgizmo/output/jackaudio/Makefile drumgizmo/output/wavfile/Makefile dgedit/Makefile) diff --git a/drumgizmo/Makefile.am b/drumgizmo/Makefile.am index d1c51ae..26aea90 100644 --- a/drumgizmo/Makefile.am +++ b/drumgizmo/Makefile.am @@ -8,21 +8,23 @@ SUBDIRS = input output bin_PROGRAMS = drumgizmo -drumgizmo_LDADD = $(DRUMGIZMO_LIBS) $(PTHREAD_LIBS) -ldl +drumgizmo_LDADD = $(DRUMGIZMO_LIBS) $(PTHREAD_LIBS) -ldl $(JACK_LIBS) drumgizmo_CXXFLAGS = $(SNDFILE_CXXFLAGS) $(PTHREAD_CFLAGS) $(EXPAT_CFLAGS) \ -I$(top_srcdir)/include -I$(top_srcdir)/src -DSSE -msse -msse2 -msse3 \ - -I$(top_srcdir)/hugin -DWITH_HUG_MUTEX + -I$(top_srcdir)/hugin -DWITH_HUG_MUTEX $(JACK_CFLAGS) drumgizmo_SOURCES = \ audioinputenginedl.cc \ audiooutputenginedl.cc \ drumgizmoc.cc \ + jackclient.cc \ $(DRUMGIZMO_SOURCES) \ $(top_srcdir)/hugin/hugin.c EXTRA_DIST = \ audioinputenginedl.h \ - audiooutputenginedl.h + audiooutputenginedl.h \ + jackclient.h endif \ No newline at end of file diff --git a/drumgizmo/input/dummy/Makefile.am b/drumgizmo/input/dummy/Makefile.am index 10bd70f..6c40eb9 100644 --- a/drumgizmo/input/dummy/Makefile.am +++ b/drumgizmo/input/dummy/Makefile.am @@ -20,7 +20,7 @@ lib_LTLIBRARIES = $(dummyltlibs) libdir = $(INPUT_PLUGIN_DIR) -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include libdummy_la_LDFLAGS = libdummy_la_LIBADD = libdummy_la_SOURCES = $(dummybuildsources) diff --git a/drumgizmo/input/jackmidi/Makefile.am b/drumgizmo/input/jackmidi/Makefile.am index f357b56..cd77a74 100644 --- a/drumgizmo/input/jackmidi/Makefile.am +++ b/drumgizmo/input/jackmidi/Makefile.am @@ -1,8 +1,6 @@ jackmidisources = \ - jackmidi.cc \ - jackclient.cc \ - jackclient.h + jackmidi.cc if HAVE_INPUT_JACKMIDI @@ -22,7 +20,7 @@ lib_LTLIBRARIES = $(jackmidiltlibs) libdir = $(INPUT_PLUGIN_DIR) -INCLUDES = -I$(top_srcdir)/include $(JACK_CFLAGS) -libjackmidi_la_LDFLAGS = $(JACK_LIBS) +AM_CPPFLAGS = -I$(top_srcdir)/include +libjackmidi_la_LDFLAGS = libjackmidi_la_LIBADD = libjackmidi_la_SOURCES = $(jackmidibuildsources) diff --git a/drumgizmo/input/jackmidi/jackclient.cc b/drumgizmo/input/jackmidi/jackclient.cc deleted file mode 100644 index 4fbafb5..0000000 --- a/drumgizmo/input/jackmidi/jackclient.cc +++ /dev/null @@ -1,96 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - * jackclient.cc - * - * Sun Jul 20 21:48:44 CEST 2008 - * Copyright 2008 Bent Bisballe Nyeng - * deva@aasimon.org - ****************************************************************************/ - -/* - * This file is part of DrumGizmo. - * - * DrumGizmo 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. - * - * DrumGizmo 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 DrumGizmo; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ -#include "jackclient.h" - -extern "C" -{ - int _wrap_jack_process(jack_nframes_t nframes, void *arg){ - return ((JackClient*)arg)->process(nframes);} -} // extern "C" - -JackClient::JackClient() - : refcnt(0) -{ - jack_status_t status; - - jack_client = jack_client_open("DrumGizmo", JackNullOption, &status); - - jack_set_process_callback(jack_client, _wrap_jack_process, this); -} - -JackClient::~JackClient() -{ - jack_client_close(jack_client); -} - -void JackClient::addJackProcess(JackProcess *process) -{ - jack_processes.insert(process); -} - -void JackClient::removeJackProcess(JackProcess *process) -{ - jack_processes.erase(process); -} - -void JackClient::activate() -{ - if(!active) jack_activate(jack_client); - active = true; -} - -int JackClient::process(jack_nframes_t nframes) -{ - std::set::iterator i = jack_processes.begin(); - while(i != jack_processes.end()) { - JackProcess *jp = *i; - jp->jack_process(nframes); - i++; - } - - return 0; -} - -JackClient *jackclient = NULL; - -JackClient *init_jack_client() -{ - if(jackclient == NULL) jackclient = new JackClient(); - jackclient->refcnt++; - return jackclient; - -} -void close_jack_client() -{ - if(jackclient) { - jackclient->refcnt--; - if(jackclient->refcnt == 0) { - delete jackclient; - jackclient = NULL; - } - } -} diff --git a/drumgizmo/input/jackmidi/jackclient.h b/drumgizmo/input/jackmidi/jackclient.h deleted file mode 100644 index 88e4bbf..0000000 --- a/drumgizmo/input/jackmidi/jackclient.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - * jackclient.h - * - * Sun Jul 20 21:48:44 CEST 2008 - * Copyright 2008 Bent Bisballe Nyeng - * deva@aasimon.org - ****************************************************************************/ - -/* - * This file is part of DrumGizmo. - * - * DrumGizmo 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. - * - * DrumGizmo 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 DrumGizmo; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ -#ifndef __DRUMGIZMO_JACKCLIENT_H__ -#define __DRUMGIZMO_JACKCLIENT_H__ - -#include -#include - -class JackProcess { -public: - virtual void jack_process(jack_nframes_t nframes) = 0; -}; - -class JackClient { -public: - JackClient(); - ~JackClient(); - - void addJackProcess(JackProcess *process); - void removeJackProcess(JackProcess *process); - - void activate(); - int process(jack_nframes_t nframes); - - jack_client_t *jack_client; - - // Sort of private... - int refcnt; - -private: - std::set jack_processes; - bool active; -}; - -extern JackClient *jackclient; - -JackClient *init_jack_client(); -void close_jack_client(); - -#endif/*__DRUMGIZMO_JACKCLIENT_H__*/ diff --git a/drumgizmo/input/jackmidi/jackmidi.cc b/drumgizmo/input/jackmidi/jackmidi.cc index 1e42468..7af257e 100644 --- a/drumgizmo/input/jackmidi/jackmidi.cc +++ b/drumgizmo/input/jackmidi/jackmidi.cc @@ -33,7 +33,7 @@ #define NOTE_ON 0x90 -#include "jackclient.h" +#include "../../jackclient.h" #include diff --git a/drumgizmo/input/midifile/Makefile.am b/drumgizmo/input/midifile/Makefile.am index 3e267e6..da87f93 100644 --- a/drumgizmo/input/midifile/Makefile.am +++ b/drumgizmo/input/midifile/Makefile.am @@ -25,7 +25,7 @@ lib_LTLIBRARIES = $(midifileltlibs) libdir = $(INPUT_PLUGIN_DIR) -INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/include $(SMF_CFLAGS) \ +AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include $(SMF_CFLAGS) \ $(EXPAT_CFLAGS) -I$(top_srcdir)/hugin -DWITH_HUG_MUTEX libmidifile_la_LDFLAGS = $(SMF_LIBS) $(EXPAT_LIBS) libmidifile_la_LIBADD = diff --git a/drumgizmo/input/test/Makefile.am b/drumgizmo/input/test/Makefile.am index ca45de0..0b65a67 100644 --- a/drumgizmo/input/test/Makefile.am +++ b/drumgizmo/input/test/Makefile.am @@ -20,7 +20,7 @@ lib_LTLIBRARIES = $(testltlibs) libdir = $(INPUT_PLUGIN_DIR) -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include libtest_la_LDFLAGS = libtest_la_LIBADD = libtest_la_SOURCES = $(testbuildsources) diff --git a/drumgizmo/jackclient.cc b/drumgizmo/jackclient.cc new file mode 100644 index 0000000..4fbafb5 --- /dev/null +++ b/drumgizmo/jackclient.cc @@ -0,0 +1,96 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + * jackclient.cc + * + * Sun Jul 20 21:48:44 CEST 2008 + * Copyright 2008 Bent Bisballe Nyeng + * deva@aasimon.org + ****************************************************************************/ + +/* + * This file is part of DrumGizmo. + * + * DrumGizmo 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. + * + * DrumGizmo 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 DrumGizmo; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ +#include "jackclient.h" + +extern "C" +{ + int _wrap_jack_process(jack_nframes_t nframes, void *arg){ + return ((JackClient*)arg)->process(nframes);} +} // extern "C" + +JackClient::JackClient() + : refcnt(0) +{ + jack_status_t status; + + jack_client = jack_client_open("DrumGizmo", JackNullOption, &status); + + jack_set_process_callback(jack_client, _wrap_jack_process, this); +} + +JackClient::~JackClient() +{ + jack_client_close(jack_client); +} + +void JackClient::addJackProcess(JackProcess *process) +{ + jack_processes.insert(process); +} + +void JackClient::removeJackProcess(JackProcess *process) +{ + jack_processes.erase(process); +} + +void JackClient::activate() +{ + if(!active) jack_activate(jack_client); + active = true; +} + +int JackClient::process(jack_nframes_t nframes) +{ + std::set::iterator i = jack_processes.begin(); + while(i != jack_processes.end()) { + JackProcess *jp = *i; + jp->jack_process(nframes); + i++; + } + + return 0; +} + +JackClient *jackclient = NULL; + +JackClient *init_jack_client() +{ + if(jackclient == NULL) jackclient = new JackClient(); + jackclient->refcnt++; + return jackclient; + +} +void close_jack_client() +{ + if(jackclient) { + jackclient->refcnt--; + if(jackclient->refcnt == 0) { + delete jackclient; + jackclient = NULL; + } + } +} diff --git a/drumgizmo/jackclient.h b/drumgizmo/jackclient.h new file mode 100644 index 0000000..636d4d0 --- /dev/null +++ b/drumgizmo/jackclient.h @@ -0,0 +1,62 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + * jackclient.h + * + * Sun Jul 20 21:48:44 CEST 2008 + * Copyright 2008 Bent Bisballe Nyeng + * deva@aasimon.org + ****************************************************************************/ + +/* + * This file is part of DrumGizmo. + * + * DrumGizmo 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. + * + * DrumGizmo 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 DrumGizmo; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ +#ifndef __DRUMGIZMO_JACKCLIENT_H__ +#define __DRUMGIZMO_JACKCLIENT_H__ + +#include +#include + +class JackProcess { +public: + virtual void jack_process(jack_nframes_t nframes) = 0; +}; + +class JackClient { +public: + JackClient(); + ~JackClient(); + + void addJackProcess(JackProcess *process); + void removeJackProcess(JackProcess *process); + + void activate(); + int process(jack_nframes_t nframes); + + jack_client_t *jack_client; + + // Sort of private... + int refcnt; + +private: + std::set jack_processes; + bool active; +}; + +JackClient *init_jack_client(); +void close_jack_client(); + +#endif/*__DRUMGIZMO_JACKCLIENT_H__*/ diff --git a/drumgizmo/output/Makefile.am b/drumgizmo/output/Makefile.am index 5733b7d..61b447a 100644 --- a/drumgizmo/output/Makefile.am +++ b/drumgizmo/output/Makefile.am @@ -1,2 +1,2 @@ -DISTDIRS = dummy alsa wavfile +DISTDIRS = dummy alsa wavfile jackaudio SUBDIRS = @OUTPUT_PLUGINS@ diff --git a/drumgizmo/output/alsa/Makefile.am b/drumgizmo/output/alsa/Makefile.am index d35cb21..6fff841 100644 --- a/drumgizmo/output/alsa/Makefile.am +++ b/drumgizmo/output/alsa/Makefile.am @@ -20,7 +20,7 @@ lib_LTLIBRARIES = $(alsaltlibs) libdir = $(OUTPUT_PLUGIN_DIR) -INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/include $(ALSA_CFLAGS) +AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include $(ALSA_CFLAGS) libalsa_la_LDFLAGS = $(ALSA_LIBS) libalsa_la_LIBADD = libalsa_la_SOURCES = $(alsabuildsources) diff --git a/drumgizmo/output/dummy/Makefile.am b/drumgizmo/output/dummy/Makefile.am index ff68319..3037c1c 100644 --- a/drumgizmo/output/dummy/Makefile.am +++ b/drumgizmo/output/dummy/Makefile.am @@ -20,7 +20,7 @@ lib_LTLIBRARIES = $(dummyltlibs) libdir = $(OUTPUT_PLUGIN_DIR) -INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include libdummy_la_LDFLAGS = libdummy_la_LIBADD = libdummy_la_SOURCES = $(dummybuildsources) diff --git a/drumgizmo/output/wavfile/Makefile.am b/drumgizmo/output/wavfile/Makefile.am index 14ffed3..732cc33 100644 --- a/drumgizmo/output/wavfile/Makefile.am +++ b/drumgizmo/output/wavfile/Makefile.am @@ -20,7 +20,7 @@ lib_LTLIBRARIES = $(wavfileltlibs) libdir = $(OUTPUT_PLUGIN_DIR) -INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/include $(SNDFILE_CFLAGS) +AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include $(SNDFILE_CFLAGS) libwavfile_la_LDFLAGS = $(SNDFILE_LIBS) libwavfile_la_LIBADD = libwavfile_la_SOURCES = $(wavfilebuildsources) diff --git a/lv2/Makefile.am b/lv2/Makefile.am index bb7cea1..b562bb1 100644 --- a/lv2/Makefile.am +++ b/lv2/Makefile.am @@ -3,7 +3,7 @@ if ENABLE_LV2 include $(top_srcdir)/plugingui/Makefile.am.plugingui include $(top_srcdir)/src/Makefile.am.drumgizmo -INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/plugingui \ +AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/plugingui \ -I$(top_srcdir)/include $(SNDFILE_CXXFLAGS) \ $(PTHREAD_CFLAGS) $(EXPAT_CFLAGS) $(LV2_CFLAGS) \ $(PLUGIN_GUI_CFLAGS) -DX11 -DSSE -msse -msse2 -msse3 \ -- cgit v1.2.3