diff -ruN beast-0.5.0/ChangeLog beast-0.5.1/ChangeLog --- beast-0.5.0/ChangeLog 2003-03-13 21:43:06.000000000 +0100 +++ beast-0.5.1/ChangeLog 2003-04-14 00:12:16.000000000 +0200 @@ -1,3 +1,136 @@ +Mon Apr 14 00:11:43 2003 Tim Janik + + * released beast-0.5.1.tar.gz. + +Sun Apr 13 22:56:09 2003 Tim Janik + + * beast-gtk/bstxxutils.{h|cc}: added a c++ object file so the main + program is able to load dynamic c++ plugins (required by gcc 3.2). + + * docs/faq.texi: fixed mime logo reference, adjusted hardware + recommendation. + + * TODO, README: miscellaneous release specific updates. + +Tue Apr 8 03:08:49 2003 Tim Janik + + * beast-gtk/bstapp.c (bst_update_can_operate): allow any kind of + widget being passed in. process updates at G_PRIORITY_DEFAULT, + to coalesce across resizes and redraws. + + * beast-gtk/bstitemview.c: queue operation state updates when we + got state change notifications from BSE. + +Sun Apr 6 20:04:29 2003 Tim Janik + + * beast-gtk/gxk/gxktexttools.c: add current vertical scroll position + to history list and restore it upon forward/backward moves. + +Sun Apr 6 15:57:24 2003 Tim Janik + + * update to libtool 1.4.3. + + * docs/quickstart.texi (Parts And Tracks): adapt this to the new + track roll display. + + * beast-gtk/bstpianorollctrl.c (controller_piano_drag): shut up debug + messages. + + * beast-gtk/bstrecords.sfidl: fix preference pspec groups. + + * beast-gtk/gxk/gxktexttools.c: cosmetic fixes to history stack code. + +Sun Apr 6 00:55:08 2003 Alper Ersoy + + * docs/generated/scandocs.pl: escape commas in macro parameters. + +Sun Apr 6 15:10:42 2003 Tim Janik + + * beast-gtk/bstsnetrouter.c (bst_snet_router_toggle_palette): add tool + selection menu popup facility to the palette. + + * beast-gtk/bstradiotools.c (bst_radio_tools_build_palette): added tool + name label. + + * beast-gtk/bstsnetrouter.c (bst_snet_router_build_tools): constrain + the categories that are added to the palette. + +Fri Apr 4 19:22:58 2003 Tim Janik + + * configure.in: version update to 0.5.1. + + * Makefile.am: install sfi.pc and bse.pc files. + + * configure.in: merged AC_GSL_REQUIREMENTS and AC_BSE_REQUIREMENTS + macros. use pkg-config to detect libmad. require ogg/vorbis >= 1.0.0rc4 + now. sort out library requirements to create sfi.pc and bse.pc. + +Fri Apr 4 09:55:42 2003 Tim Janik + + * bstmain.c: + * configure.in: + * Makefile.am: provide the beast prefix specific ladspa directory + as BSE_PATH_LADSPA. + +Thu Apr 3 11:03:08 2003 Tim Janik + + * beast-gtk/bstcanvassource.c (bst_canvas_icon_set): fixed ref-counting + bug. + +Tue Apr 1 06:45:33 2003 Tim Janik + + * beast-gtk/bstdefs.h: removed BST_TOOLTIPS, changed code to make + use of GXK_TOOLTIPS. + + * beast-gtk/bstutils.[hc]: removed outdated Gtk+ workarounds + and helper code. moved some things into gxkutils.[hc]. + fixed up BstGMask type usages. documented bst_gmask_*() functions. + + * beast-gtk/gxk/gxkutils.[hc]: don't redefine gtk functions. + document gxk_item_factory_get_item() and gxk_item_factory_get_widget(). + moved and renamed gxk_widget_proxy_requisition(), + gtk_notebook_current_widget() and gxk_file_selection_heal() from + bstutils.[hc] to here. + + * beast-gtk/*.c: miscellaneous adaptions according to the above changes. + +Mon Mar 31 12:05:07 2003 Tim Janik + + * beast-gtk/bstcanvassource.c: removed black text border. set text + sizes via gnome_canvas_text_set_zoom_size() so the text is zoomed + together with the rest of the canvas. + + * beast-gtk/gxk/gxkcanvas.[hc]: added gnome_canvas_set_zoom() and + gnome_canvas_text_set_zoom_size() to support zoomable text items. + + * beast-gtk/gxk/gxkutils.[hc]: added g_object_{get|set}_double(). + + * beast-gtk/bstsnetrouter.c (idle_zoom): use gnome_canvas_set_zoom() to + alter zoom factor. shut up debug messages. + + * beast-gtk/bstmenus.c (bst_menu_config_create_items): use + BST_PIXDATA_EMPTY1x1 as menu item image instead of pixdata + with invalid magic. + + * beast-gtk/bstutils.h: provide a serialized pixdata empty 1x1 + pixel image macro: BST_PIXDATA_EMPTY1x1. + +Wed Mar 19 17:56:09 2003 Tim Janik + + * README: + * docs/*.texi: announce new mailing list and change old adresses. + updated link sections. + +Mon Mar 17 07:05:04 2003 Tim Janik + + * beast-gtk/bstmain.c (main): use the new toyprof leak logger API. + + * beast-gtk/bstapp.c (bst_app_operate): remove toyprofiling hook. + +Thu Mar 13 22:38:28 2003 Tim Janik + + * docs/site-news.texi: announced release. + Thu Mar 13 21:42:45 2003 Tim Janik * configure.in: up version to 0.5.0, released beast-0.5.0.tar.gz. diff -ruN beast-0.5.0/Makefile.am beast-0.5.1/Makefile.am --- beast-0.5.0/Makefile.am 2003-03-10 09:35:05.000000000 +0100 +++ beast-0.5.1/Makefile.am 2003-04-04 18:06:46.000000000 +0200 @@ -24,6 +24,7 @@ && echo "/* Generated data from $< (by make $@) */" > xgen-pph \ && echo >> xgen-pph \ && echo "#define BSE_PATH_PLUGINS \"${bseplugindir}\"" >> xgen-pph \ + && echo "#define BSE_PATH_LADSPA \"${bseladspadir}\"" >> xgen-pph \ && echo "#define BSE_PATH_SCRIPTS \"${bsescriptdir}\"" >> xgen-pph \ && echo "#define BSE_PATH_BINARIES \"${bindir}\"" >> xgen-pph \ && echo "#define BST_PATH_DOCS \"${beastdocsdir}\"" >> xgen-pph \ @@ -41,8 +42,15 @@ CLEANFILES += PKG_paths.h -EXTRA_DIST += \ - TODO \ - COPYING.GPL \ - COPYING.LGPL \ - acbeast.m4 +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = sfi.pc bse.pc +$(pkgconfig_DATA): config.status + +EXTRA_DIST += $(strip \ + TODO \ + COPYING.GPL \ + COPYING.LGPL \ + acbeast.m4 \ + sfi.pc.in \ + bse.pc.in \ +) diff -ruN beast-0.5.0/Makefile.in beast-0.5.1/Makefile.in --- beast-0.5.0/Makefile.in 2003-03-13 22:09:30.000000000 +0100 +++ beast-0.5.1/Makefile.in 2003-04-14 00:12:32.000000000 +0200 @@ -75,6 +75,9 @@ BSE_MAJOR_VERSION = @BSE_MAJOR_VERSION@ BSE_MICRO_VERSION = @BSE_MICRO_VERSION@ BSE_MINOR_VERSION = @BSE_MINOR_VERSION@ +BSE_PC_CFLAGS = @BSE_PC_CFLAGS@ +BSE_PC_LIBS = @BSE_PC_LIBS@ +BSE_PC_REQUIRE = @BSE_PC_REQUIRE@ BSE_SHELL_CFLAGS = @BSE_SHELL_CFLAGS@ BSE_SHELL_LIBS = @BSE_SHELL_LIBS@ BSE_VERSION = @BSE_VERSION@ @@ -92,10 +95,7 @@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GROFF = @GROFF@ -GSL_CFLAGS = @GSL_CFLAGS@ GSL_HAVE_LIBMAD = @GSL_HAVE_LIBMAD@ -GSL_LIBS = @GSL_LIBS@ -GSL_OV_READ_FLOAT_ARGS = @GSL_OV_READ_FLOAT_ARGS@ GSL_SIZEOF_STD_INTMAX_T = @GSL_SIZEOF_STD_INTMAX_T@ GXK_CFLAGS = @GXK_CFLAGS@ GXK_LIBS = @GXK_LIBS@ @@ -131,6 +131,7 @@ beastdocsdir = @beastdocsdir@ beastimagesdir = @beastimagesdir@ beastsampledatadir = @beastsampledatadir@ +bseladspadir = @bseladspadir@ bseplugindir = @bseplugindir@ bsescriptdir = @bsescriptdir@ @@ -144,16 +145,21 @@ CLEANFILES = PKG_paths.h -EXTRA_DIST = TODO COPYING.GPL COPYING.LGPL acbeast.m4 +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = sfi.pc bse.pc + +EXTRA_DIST = $(strip TODO COPYING.GPL COPYING.LGPL acbeast.m4 sfi.pc.in bse.pc.in ) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = PKG_config.h -CONFIG_CLEAN_FILES = +CONFIG_CLEAN_FILES = sfi.pc bse.pc +DATA = $(pkgconfig_DATA) + DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \ Makefile.am Makefile.in NEWS PKG_config.h.in TODO acconfig.h aclocal.m4 \ -config.guess config.sub configure configure.in install-sh ltconfig \ -ltmain.sh missing mkinstalldirs +bse.pc.in config.guess config.sub configure configure.in install-sh \ +ltconfig ltmain.sh missing mkinstalldirs sfi.pc.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) @@ -199,6 +205,29 @@ -rm -f PKG_config.h maintainer-clean-hdr: +sfi.pc: $(top_builddir)/config.status sfi.pc.in + cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status +bse.pc: $(top_builddir)/config.status bse.pc.in + cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(pkgconfigdir) + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgconfigdir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgconfigdir)/$$p; \ + else if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(pkgconfigdir)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(pkgconfigdir)/$$p; \ + fi; fi; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + list='$(pkgconfig_DATA)'; for p in $$list; do \ + rm -f $(DESTDIR)$(pkgconfigdir)/$$p; \ + done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -361,20 +390,21 @@ install-exec-am: install-exec: install-exec-recursive -install-data-am: +install-data-am: install-pkgconfigDATA install-data: install-data-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-recursive -uninstall-am: +uninstall-am: uninstall-pkgconfigDATA uninstall: uninstall-recursive -all-am: Makefile PKG_config.h +all-am: Makefile $(DATA) PKG_config.h all-redirect: all-recursive-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: installdirs-recursive installdirs-am: + $(mkinstalldirs) $(DESTDIR)$(pkgconfigdir) mostlyclean-generic: @@ -410,7 +440,8 @@ -rm -f config.status .PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ -install-data-recursive uninstall-data-recursive install-exec-recursive \ +uninstall-pkgconfigDATA install-pkgconfigDATA install-data-recursive \ +uninstall-data-recursive install-exec-recursive \ uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ all-recursive check-recursive installcheck-recursive info-recursive \ dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ @@ -435,6 +466,7 @@ && echo "/* Generated data from $< (by make $@) */" > xgen-pph \ && echo >> xgen-pph \ && echo "#define BSE_PATH_PLUGINS \"${bseplugindir}\"" >> xgen-pph \ + && echo "#define BSE_PATH_LADSPA \"${bseladspadir}\"" >> xgen-pph \ && echo "#define BSE_PATH_SCRIPTS \"${bsescriptdir}\"" >> xgen-pph \ && echo "#define BSE_PATH_BINARIES \"${bindir}\"" >> xgen-pph \ && echo "#define BST_PATH_DOCS \"${beastdocsdir}\"" >> xgen-pph \ @@ -449,6 +481,7 @@ # always built PKG_paths.h and create links stamp-h: PKG_paths.h +$(pkgconfig_DATA): config.status # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -ruN beast-0.5.0/NEWS beast-0.5.1/NEWS --- beast-0.5.0/NEWS 2003-03-13 16:36:44.000000000 +0100 +++ beast-0.5.1/NEWS 2003-04-14 00:10:58.000000000 +0200 @@ -1,3 +1,11 @@ +Overview of Changes in BEAST/BSE 0.5.1: + +* Added support for LADSPA plugins +* Improved synthesis network router display +* Documentation fixes +* Added support for dsp[0-3] and midi[0-3] devices +* Fixed memory leaks during playback + Overview of Changes in BEAST/BSE 0.5.0: * Moved BSE into its own thread diff -ruN beast-0.5.0/README beast-0.5.1/README --- beast-0.5.0/README 2003-03-13 20:43:56.000000000 +0100 +++ beast-0.5.1/README 2003-04-13 17:25:49.000000000 +0200 @@ -19,7 +19,8 @@ of the Gtk+-2.0 based GnomeCanvas, Guile-1.4 and the Ogg/Vorbis Codec libraries. Though optional, it is a good idea to also have libmad (MPEG audio -decoder library) around when compiling BEAST. Most distributions +decoder library) around when compiling BEAST. +Most distributions already ship these packages, their sources can be found at: GnomeCanvas (GNOME-2.0): @@ -28,7 +29,7 @@ ftp://ftp.gtk.org/pub/gtk/v2.0/ Guile-1.4: http://www.gnu.org/software/guile/guile.html -Ogg/Vorbis (at least version 1.0rc3): +Ogg/Vorbis (at least version 1.0): http://www.xiph.org/ogg/vorbis/download/ MAD (BSE was developed against libmad-0.14.2): http://www.mars.org/home/rob/proj/mpeg/ @@ -39,9 +40,17 @@ The official web site for BEAST/BSE is: http://beast.gtk.org/ -And finally there's a mailing list as well: - beast@beast.gtk.org -send an email to timj@beast.gtk.org to get subscribed. +And finally there's a mailing list as well (beast@gnome.org): + http://mail.gnome.org/mailman/listinfo/beast/ + +BEAST also supports the LADSPA plugin API, so various kinds of third +party plugins can be loaded and executed by BEAST. LADSPA plugins are +available from: + http://www.ladspa.org +and places linked there from. BEAST will look for LADSPA plugins under +lib/ladspa/ of it's own installation prefix, and in the directories +listed in $LADSPA_PATH. + Installation ============ diff -ruN beast-0.5.0/TODO beast-0.5.1/TODO --- beast-0.5.0/TODO 2003-03-13 20:51:43.000000000 +0100 +++ beast-0.5.1/TODO 2003-04-13 23:49:18.000000000 +0200 @@ -1,17 +1,24 @@ FIXMES: +- fix gsl wave osc +- install bsw/* into bse/. +- remove SFI(signal): spurious unknown signal "release" on proxy (23) +- remove SFI(signal): spurious unknown signal "io_changed" on proxy (35) +- implement snet removal +- nuke SFI memblocks, malloc() is good enough +- GslModuleClass.free should be renamed free_user_data - add demo song - fix plugins in bsesh - fix engine deinitialization assertions in bseserver.c - default saving (SFI_PARAM_SKIP_DEFAULT) - match enum names on word boundaries only - master tune slider in preferences (kammer ton) -- bst_gmask should use typedef struct _BstGMask BstGMask; instead of gpointer - bsemididevice-oss throws warnings when compiled without midi support - MidiEvent (serialization) - make bst_catalog_get_action() always return an action, so callers don't need to check - gxk_toolbar_append_stock() and bst_radio_tools_add_stock_tool() need context help id - open() may return -EINVAL (e.g. for non-readable cards), we shouldn't map that onto BSE_ERROR_INTERNAL +- create modules via category identifier, not type name - fix piano roll [VH]PANEL_BG_GC() usage and GDK_Escape (ala trackroll) - add IDs to part links in tracks - alow snet flagging as aggregate @@ -25,6 +32,7 @@ - merge snet specifics down to super - registering the same script function twice triggers GType assertion - fix procbrowser +- fix bseplugin.c:bse_plugin_use():need_reinit - fix uses of gsl_engine_tick_stamp_from_systime() in bstwaveeditor.c - handle non-validated sequences and records in generation code (things can be demarshalled in non-validated form after incompatible changes) @@ -59,6 +67,8 @@ apropriate functions [alper] - the beast site is unusable under IE [alper] - nroff files need another build step to get final page numbers [alper] +- the html description for @func from bstutils.c:bst_gmask_foreach() + is messed up [alper] General BSE: - level-o-meter visualizer at links (adjustable?) diff -ruN beast-0.5.0/aclocal.m4 beast-0.5.1/aclocal.m4 --- beast-0.5.0/aclocal.m4 2003-03-13 20:56:36.000000000 +0100 +++ beast-0.5.1/aclocal.m4 2003-04-13 22:13:45.000000000 +0200 @@ -447,6 +447,9 @@ irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; solaris* | sysv5*) symcode='[[BDT]]' ;; @@ -543,7 +546,7 @@ save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" - if AC_TRY_EVAL(ac_link) && test -s conftest; then + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS="$save_LIBS" @@ -1661,10 +1664,12 @@ # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + case $ld_flag in + *-brtl*) aix_use_runtimelinking=yes break - fi + ;; + esac done esac @@ -1736,7 +1741,7 @@ allow_undefined_flag='${wl}-berok' # This is a bit strange, but is similar to how AIX traditionally builds # it's shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; @@ -1780,7 +1785,7 @@ # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. Also zsh mangles # `"' quotes if we put them in here... so don't! - archive_cmds='$nonopt $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' + archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)' # We need to add '_' to the symbols in $export_symbols first #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' hardcode_direct=yes @@ -1835,10 +1840,11 @@ irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='-rpath $libdir' fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; @@ -1866,7 +1872,7 @@ hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else @@ -1876,7 +1882,7 @@ hardcode_libdir_flag_spec='-R$libdir' ;; *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac @@ -2145,6 +2151,9 @@ aix4* | aix5*) version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' @@ -2183,6 +2192,7 @@ fi shlibpath_var=LIBPATH fi + hardcode_into_libs=yes ;; amigaos*) @@ -2262,6 +2272,18 @@ dynamic_linker=no ;; +freebsd*-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU/FreeBSD ld.so' + ;; + freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat @@ -2427,11 +2449,13 @@ osf3* | osf4* | osf5*) version_type=osf need_version=no - soname_spec='${libname}${release}.so' - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_lib_prefix=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + hardcode_into_libs=yes ;; sco3.2v5*) @@ -3828,7 +3852,7 @@ # Check for GNU sed and select it if it is found. if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then lt_cv_path_SED=${_sed} - break; + break fi while true; do cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp" diff -ruN beast-0.5.0/beast-gtk/Makefile.am beast-0.5.1/beast-gtk/Makefile.am --- beast-0.5.0/beast-gtk/Makefile.am 2003-03-11 07:19:07.000000000 +0100 +++ beast-0.5.1/beast-gtk/Makefile.am 2003-04-13 22:50:36.000000000 +0200 @@ -34,7 +34,7 @@ beast_headers = $(strip \ bstcanvassource.h bstapp.h bstasciipixbuf.h bstcanvaslink.h \ bstsampleeditor.h bstsequence.h bstservermonitor.h bstsnetshell.h \ - bsttrackroll.h bstcluehunter.h bstprojectctrl.h bstdial.h \ + bsttrackroll.h bstcluehunter.h bstprojectctrl.h bstxxutils.h \ bstfreeradiobutton.h bstdragutils.h bstfiledialog.h bstgconfig.h \ bstlogadjustment.h bstitemview.h bstmarker.h bstknob.h \ bstparamview.h bstmenus.h bstparam.h bstpartdialog.h \ @@ -45,13 +45,13 @@ bstusermessage.h bstutils.h bstwavedialog.h bstwaveeditor.h \ bstwavereposhell.h bstwaveview.h bstsongshell.h bstxkb.h \ bstzoomedwindow.h glewidgets.h bsttrackrollctrl.h bstxframe.h \ - bstcatalog.h bstdefs.h bstmarshal.h \ + bstcatalog.h bstdial.h bstdefs.h bstmarshal.h \ ) # BEAST c sources to build the program from beast_sources = $(strip \ bstcanvassource.c bstapp.c bstasciipixbuf.c bstcanvaslink.c \ bstsampleeditor.c bstsequence.c bstservermonitor.c bstsnetshell.c \ - bsttrackroll.c bstcluehunter.c bstprojectctrl.c bstdial.c \ + bsttrackroll.c bstcluehunter.c bstprojectctrl.c bstxxutils.cc \ bstfreeradiobutton.c bstdragutils.c bstfiledialog.c bstgconfig.c \ bstlogadjustment.c bstitemview.c bstmarker.c bstknob.c \ bstparamview.c bstmenus.c bstparam.c bstpartdialog.c \ @@ -62,7 +62,7 @@ bstusermessage.c bstutils.c bstwavedialog.c bstwaveeditor.c \ bstwavereposhell.c bstwaveview.c bstsongshell.c bstxkb.c \ bstzoomedwindow.c glewidgets.c bsttrackrollctrl.c bstxframe.c \ - bstcatalog.c $(PROFILE_SOURCE) \ + bstcatalog.c bstdial.c $(PROFILE_SOURCE) \ ) # BEAST sources that get included (don't have own .lo rules) beast_extra_sources = $(strip \ diff -ruN beast-0.5.0/beast-gtk/Makefile.in beast-0.5.1/beast-gtk/Makefile.in --- beast-0.5.0/beast-gtk/Makefile.in 2003-03-13 22:09:45.000000000 +0100 +++ beast-0.5.1/beast-gtk/Makefile.in 2003-04-14 00:12:35.000000000 +0200 @@ -73,6 +73,9 @@ BSE_MAJOR_VERSION = @BSE_MAJOR_VERSION@ BSE_MICRO_VERSION = @BSE_MICRO_VERSION@ BSE_MINOR_VERSION = @BSE_MINOR_VERSION@ +BSE_PC_CFLAGS = @BSE_PC_CFLAGS@ +BSE_PC_LIBS = @BSE_PC_LIBS@ +BSE_PC_REQUIRE = @BSE_PC_REQUIRE@ BSE_SHELL_CFLAGS = @BSE_SHELL_CFLAGS@ BSE_SHELL_LIBS = @BSE_SHELL_LIBS@ BSE_VERSION = @BSE_VERSION@ @@ -89,10 +92,7 @@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GROFF = @GROFF@ -GSL_CFLAGS = @GSL_CFLAGS@ GSL_HAVE_LIBMAD = @GSL_HAVE_LIBMAD@ -GSL_LIBS = @GSL_LIBS@ -GSL_OV_READ_FLOAT_ARGS = @GSL_OV_READ_FLOAT_ARGS@ GSL_SIZEOF_STD_INTMAX_T = @GSL_SIZEOF_STD_INTMAX_T@ GXK_CFLAGS = @GXK_CFLAGS@ GXK_LIBS = @GXK_LIBS@ @@ -128,6 +128,7 @@ beastdocsdir = @beastdocsdir@ beastimagesdir = @beastimagesdir@ beastsampledatadir = @beastsampledatadir@ +bseladspadir = @bseladspadir@ bseplugindir = @bseplugindir@ bsescriptdir = @bsescriptdir@ @@ -153,10 +154,10 @@ # setup source file variables # # BEAST header files that don't get installed -beast_headers = $(strip bstcanvassource.h bstapp.h bstasciipixbuf.h bstcanvaslink.h bstsampleeditor.h bstsequence.h bstservermonitor.h bstsnetshell.h bsttrackroll.h bstcluehunter.h bstprojectctrl.h bstdial.h bstfreeradiobutton.h bstdragutils.h bstfiledialog.h bstgconfig.h bstlogadjustment.h bstitemview.h bstmarker.h bstknob.h bstparamview.h bstmenus.h bstparam.h bstpartdialog.h bstpianorollctrl.h bstpartview.h bstpianoroll.h bstplayback.h bstprocbrowser.h bstqsampler.h bstpreferences.h bstprocedure.h bstrackeditor.h bstrackitem.h bstracktable.h bstradiotools.h bstsnetrouter.h bstsplash.h bsttrackview.h bstsupershell.h bstusermessage.h bstutils.h bstwavedialog.h bstwaveeditor.h bstwavereposhell.h bstwaveview.h bstsongshell.h bstxkb.h bstzoomedwindow.h glewidgets.h bsttrackrollctrl.h bstxframe.h bstcatalog.h bstdefs.h bstmarshal.h ) +beast_headers = $(strip bstcanvassource.h bstapp.h bstasciipixbuf.h bstcanvaslink.h bstsampleeditor.h bstsequence.h bstservermonitor.h bstsnetshell.h bsttrackroll.h bstcluehunter.h bstprojectctrl.h bstxxutils.h bstfreeradiobutton.h bstdragutils.h bstfiledialog.h bstgconfig.h bstlogadjustment.h bstitemview.h bstmarker.h bstknob.h bstparamview.h bstmenus.h bstparam.h bstpartdialog.h bstpianorollctrl.h bstpartview.h bstpianoroll.h bstplayback.h bstprocbrowser.h bstqsampler.h bstpreferences.h bstprocedure.h bstrackeditor.h bstrackitem.h bstracktable.h bstradiotools.h bstsnetrouter.h bstsplash.h bsttrackview.h bstsupershell.h bstusermessage.h bstutils.h bstwavedialog.h bstwaveeditor.h bstwavereposhell.h bstwaveview.h bstsongshell.h bstxkb.h bstzoomedwindow.h glewidgets.h bsttrackrollctrl.h bstxframe.h bstcatalog.h bstdial.h bstdefs.h bstmarshal.h ) # BEAST c sources to build the program from -beast_sources = $(strip bstcanvassource.c bstapp.c bstasciipixbuf.c bstcanvaslink.c bstsampleeditor.c bstsequence.c bstservermonitor.c bstsnetshell.c bsttrackroll.c bstcluehunter.c bstprojectctrl.c bstdial.c bstfreeradiobutton.c bstdragutils.c bstfiledialog.c bstgconfig.c bstlogadjustment.c bstitemview.c bstmarker.c bstknob.c bstparamview.c bstmenus.c bstparam.c bstpartdialog.c bstpianorollctrl.c bstpartview.c bstpianoroll.c bstplayback.c bstprocbrowser.c bstqsampler.c bstpreferences.c bstprocedure.c bstrackeditor.c bstrackitem.c bstracktable.c bstradiotools.c bstsnetrouter.c bstsplash.c bsttrackview.c bstsupershell.c bstusermessage.c bstutils.c bstwavedialog.c bstwaveeditor.c bstwavereposhell.c bstwaveview.c bstsongshell.c bstxkb.c bstzoomedwindow.c glewidgets.c bsttrackrollctrl.c bstxframe.c bstcatalog.c $(PROFILE_SOURCE) ) +beast_sources = $(strip bstcanvassource.c bstapp.c bstasciipixbuf.c bstcanvaslink.c bstsampleeditor.c bstsequence.c bstservermonitor.c bstsnetshell.c bsttrackroll.c bstcluehunter.c bstprojectctrl.c bstxxutils.cc bstfreeradiobutton.c bstdragutils.c bstfiledialog.c bstgconfig.c bstlogadjustment.c bstitemview.c bstmarker.c bstknob.c bstparamview.c bstmenus.c bstparam.c bstpartdialog.c bstpianorollctrl.c bstpartview.c bstpianoroll.c bstplayback.c bstprocbrowser.c bstqsampler.c bstpreferences.c bstprocedure.c bstrackeditor.c bstrackitem.c bstracktable.c bstradiotools.c bstsnetrouter.c bstsplash.c bsttrackview.c bstsupershell.c bstusermessage.c bstutils.c bstwavedialog.c bstwaveeditor.c bstwavereposhell.c bstwaveview.c bstsongshell.c bstxkb.c bstzoomedwindow.c glewidgets.c bsttrackrollctrl.c bstxframe.c bstcatalog.c bstdial.c $(PROFILE_SOURCE) ) # BEAST sources that get included (don't have own .lo rules) beast_extra_sources = $(strip bstparam-label.c bstparam-toggle.c bstparam-spinner.c bstparam-scale.c bstparam-choice.c bstparam-note-sequence.c bstparam-entry.c bstparam-strnum.c bstparam-note-spinner.c bstparam-proxy.c bstrackeditor-covers.c bstmarshal.c ) @@ -210,11 +211,11 @@ bstsampleeditor.$(OBJEXT) bstsequence.$(OBJEXT) \ bstservermonitor.$(OBJEXT) bstsnetshell.$(OBJEXT) \ bsttrackroll.$(OBJEXT) bstcluehunter.$(OBJEXT) bstprojectctrl.$(OBJEXT) \ -bstdial.$(OBJEXT) bstfreeradiobutton.$(OBJEXT) bstdragutils.$(OBJEXT) \ -bstfiledialog.$(OBJEXT) bstgconfig.$(OBJEXT) bstlogadjustment.$(OBJEXT) \ -bstitemview.$(OBJEXT) bstmarker.$(OBJEXT) bstknob.$(OBJEXT) \ -bstparamview.$(OBJEXT) bstmenus.$(OBJEXT) bstparam.$(OBJEXT) \ -bstpartdialog.$(OBJEXT) bstpianorollctrl.$(OBJEXT) \ +bstxxutils.$(OBJEXT) bstfreeradiobutton.$(OBJEXT) \ +bstdragutils.$(OBJEXT) bstfiledialog.$(OBJEXT) bstgconfig.$(OBJEXT) \ +bstlogadjustment.$(OBJEXT) bstitemview.$(OBJEXT) bstmarker.$(OBJEXT) \ +bstknob.$(OBJEXT) bstparamview.$(OBJEXT) bstmenus.$(OBJEXT) \ +bstparam.$(OBJEXT) bstpartdialog.$(OBJEXT) bstpianorollctrl.$(OBJEXT) \ bstpartview.$(OBJEXT) bstpianoroll.$(OBJEXT) bstplayback.$(OBJEXT) \ bstprocbrowser.$(OBJEXT) bstqsampler.$(OBJEXT) bstpreferences.$(OBJEXT) \ bstprocedure.$(OBJEXT) bstrackeditor.$(OBJEXT) bstrackitem.$(OBJEXT) \ @@ -224,7 +225,8 @@ bstwaveeditor.$(OBJEXT) bstwavereposhell.$(OBJEXT) \ bstwaveview.$(OBJEXT) bstsongshell.$(OBJEXT) bstxkb.$(OBJEXT) \ bstzoomedwindow.$(OBJEXT) glewidgets.$(OBJEXT) \ -bsttrackrollctrl.$(OBJEXT) bstxframe.$(OBJEXT) bstcatalog.$(OBJEXT) +bsttrackrollctrl.$(OBJEXT) bstxframe.$(OBJEXT) bstcatalog.$(OBJEXT) \ +bstdial.$(OBJEXT) beast_LDFLAGS = bststest_OBJECTS = bststest.$(OBJEXT) bstutils.$(OBJEXT) \ bstqsampler.$(OBJEXT) @@ -242,6 +244,11 @@ $(top_builddir)/bsw/libbsw.la $(top_builddir)/bse/libbse.la \ $(top_builddir)/sfi/libsfi.la ) scankeys_LDFLAGS = +CXXFLAGS = @CXXFLAGS@ +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -258,7 +265,7 @@ all: all-redirect .SUFFIXES: -.SUFFIXES: .S .c .lo .o .obj .s +.SUFFIXES: .S .c .cc .lo .o .obj .s $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps beast-gtk/Makefile @@ -347,7 +354,7 @@ beast$(EXEEXT): $(beast_OBJECTS) $(beast_DEPENDENCIES) @rm -f beast$(EXEEXT) - $(LINK) $(beast_LDFLAGS) $(beast_OBJECTS) $(beast_LDADD) $(LIBS) + $(CXXLINK) $(beast_LDFLAGS) $(beast_OBJECTS) $(beast_LDADD) $(LIBS) bststest$(EXEEXT): $(bststest_OBJECTS) $(bststest_DEPENDENCIES) @rm -f bststest$(EXEEXT) @@ -360,6 +367,12 @@ scankeys$(EXEEXT): $(scankeys_OBJECTS) $(scankeys_DEPENDENCIES) @rm -f scankeys$(EXEEXT) $(LINK) $(scankeys_LDFLAGS) $(scankeys_OBJECTS) $(scankeys_LDADD) $(LIBS) +.cc.o: + $(CXXCOMPILE) -c $< +.cc.obj: + $(CXXCOMPILE) -c `cygpath -w $<` +.cc.lo: + $(LTCXXCOMPILE) -c $< # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -497,7 +510,7 @@ bstwavereposhell.h bstwaveview.h bstsnetshell.h bstfiledialog.h \ bstgconfig.h bstpreferences.h bstprocbrowser.h \ bstservermonitor.h bstrackeditor.h bstracktable.h bstmenus.h \ - bstprocedure.h bstprojectctrl.h ../sfi/toyprof-mem.h + bstprocedure.h bstprojectctrl.h bstasciipixbuf.o: bstasciipixbuf.c bstasciipixbuf.h bstcanvaslink.o: bstcanvaslink.c bstcanvaslink.h bstutils.h ../bsw/bsw.h \ ../bsw/bswproxy.h ../bse/bse.h ../sfi/sfi.h ../sfi/sficomport.h \ @@ -1263,6 +1276,21 @@ bstzoomedwindow.h bstfreeradiobutton.h bstcluehunter.h \ bstgentypes.h bstmarshal.h icons/bst-stock-gen.h bstxframe.h bstxkb.o: bstxkb.c bstxkb.h ../PKG_config.h ../PKG_paths.h +bstxxutils.o: bstxxutils.cc bstxxutils.h bstutils.h ../bsw/bsw.h \ + ../bsw/bswproxy.h ../bse/bse.h ../sfi/sfi.h ../sfi/sficomport.h \ + ../sfi/sfithreads.h ../sfi/sfitypes.h ../sfi/glib-extra.h \ + ../sfi/sficonfig.h ../sfi/sfiglue.h ../sfi/sfiprimitives.h \ + ../sfi/sfivalues.h ../sfi/sfiparams.h ../sfi/sfigluecodec.h \ + ../sfi/sfiglueproxy.h ../sfi/sfilog.h ../sfi/sfimemory.h \ + ../sfi/sfinote.h ../sfi/sfiserial.h ../sfi/sfitime.h \ + ../sfi/sfiustore.h ../sfi/sfivmarshal.h ../bse/bseconfig.h \ + ../bsw/bswgenapi.h bstdefs.h gxk/gxk.h gxk/gxkcanvas.h \ + gxk/gxkglobals.h gxk/gxkcellrendererpopup.h gxk/gxkdialog.h \ + gxk/gxkutils.h gxk/gxkgentypes.h gxk/gxkmarshal.h gxk/gxkled.h \ + gxk/gxklistwrapper.h gxk/gxkpolygon.h gxk/gxkstatusbar.h \ + gxk/gxkstock.h gxk/gxktexttools.h gxk/gxktoolbar.h glewidgets.h \ + bstzoomedwindow.h bstfreeradiobutton.h bstcluehunter.h \ + bstgentypes.h bstmarshal.h icons/bst-stock-gen.h bstzoomedwindow.o: bstzoomedwindow.c bstutils.h ../bsw/bsw.h \ ../bsw/bswproxy.h ../bse/bse.h ../sfi/sfi.h ../sfi/sficomport.h \ ../sfi/sfithreads.h ../sfi/sfitypes.h ../sfi/glib-extra.h \ diff -ruN beast-0.5.0/beast-gtk/bstapp.c beast-0.5.1/beast-gtk/bstapp.c --- beast-0.5.0/beast-gtk/bstapp.c 2003-03-13 20:37:43.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstapp.c 2003-04-12 22:53:17.000000000 +0200 @@ -31,7 +31,6 @@ #include "bstmenus.h" #include "bstprocedure.h" #include "bstprojectctrl.h" -#include "sfi/toyprof-mem.h" /* --- prototypes --- */ @@ -497,20 +496,20 @@ return; shell = bst_app_get_current_shell (app); - widget = gtk_item_factory_get_item (bst_app_menu_factory (app), "/Song"); + widget = gxk_item_factory_get_item (bst_app_menu_factory (app), "/Song"); if (widget) gtk_widget_set_sensitive (widget, BST_IS_SONG_SHELL (shell)); - widget = gtk_item_factory_get_item (bst_app_menu_factory (app), "/Waves"); + widget = gxk_item_factory_get_item (bst_app_menu_factory (app), "/Waves"); if (widget) gtk_widget_set_sensitive (widget, BST_IS_WAVE_REPO_SHELL (shell)); - widget = gtk_item_factory_get_item (bst_app_menu_factory (app), "/File/Save"); // FIXME: hack + widget = gxk_item_factory_get_item (bst_app_menu_factory (app), "/File/Save"); // FIXME: hack if (widget) gtk_widget_set_sensitive (widget, BST_IS_SONG_SHELL (shell)); - widget = gtk_item_factory_get_item (bst_app_menu_factory (app), "/Edit/Undo"); // FIXME: hack + widget = gxk_item_factory_get_item (bst_app_menu_factory (app), "/Edit/Undo"); // FIXME: hack if (widget) gtk_widget_set_sensitive (widget, BST_IS_SONG_SHELL (shell)); - widget = gtk_item_factory_get_item (bst_app_menu_factory (app), "/Edit/Redo"); // FIXME: hack + widget = gxk_item_factory_get_item (bst_app_menu_factory (app), "/Edit/Redo"); // FIXME: hack if (widget) gtk_widget_set_sensitive (widget, BST_IS_SONG_SHELL (shell)); @@ -731,7 +730,6 @@ any); gtk_widget_show (any); sfi_alloc_report (); - toyprof_report_mem (); #if 0 // FIXME { GSList *slist, *olist = g_object_debug_list(); @@ -926,10 +924,10 @@ /* figure toplevel app, and update it */ widget = gtk_widget_get_ancestor (widget, BST_TYPE_APP); - g_return_if_fail (BST_IS_APP (widget)); - - op_update_list = g_slist_prepend (op_update_list, g_object_ref (widget)); - - if (!op_update_id) - op_update_id = g_idle_add_full (-1000, op_update_handler, NULL, NULL); + if (BST_IS_APP (widget) && !g_slist_find (op_update_list, widget)) + { + op_update_list = g_slist_prepend (op_update_list, g_object_ref (widget)); + if (!op_update_id) + op_update_id = g_idle_add_full (G_PRIORITY_DEFAULT, op_update_handler, NULL, NULL); + } } diff -ruN beast-0.5.0/beast-gtk/bstcanvassource.c beast-0.5.1/beast-gtk/bstcanvassource.c --- beast-0.5.0/beast-gtk/bstcanvassource.c 2003-03-13 15:32:36.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstcanvassource.c 2003-04-05 16:26:18.000000000 +0200 @@ -39,10 +39,13 @@ #define ICHANNEL_Y ((gdouble) 0) #define OCHANNEL_Y ((gdouble) 0) #define TOTAL_WIDTH ((gdouble) CHANNEL_WIDTH + ICON_WIDTH + CHANNEL_WIDTH) -#define TOTAL_HEIGHT ((gdouble) ICON_HEIGHT + TEXT_HEIGHT) -#define TEXT_X ((gdouble) CHANNEL_WIDTH + ICON_WIDTH / 2) /* anchor: north */ -#define TEXT_Y ((gdouble) ICON_HEIGHT) -#define TEXT_HEIGHT ((gdouble) 13) +#define TOTAL_HEIGHT ((gdouble) ICON_HEIGHT) +#define TEXT_X ((gdouble) CHANNEL_WIDTH + ICON_WIDTH / 2) /* for anchor: center */ +#define TEXT_Y ((gdouble) ICON_HEIGHT) /* for anchor: north */ +#define TEXT_HEIGHT ((gdouble) FONT_HEIGHT + 2) +#define CHANNEL_FONT ("Sans") +#define TEXT_FONT ("Serif") +#define FONT_HEIGHT ((gdouble) 12) #define RGBA_BLACK (0x000000ff) @@ -367,7 +370,7 @@ string = bse_source_ichannel_blurb (csource->source, i); gxk_scroll_text_aprintf (text, "%s[%s]%s\n", bse_source_ichannel_name (csource->source, i), - bse_source_ichannel_cname (csource->source, i), + bse_source_ichannel_ident (csource->source, i), string ? ":" : ""); if (string) { @@ -390,7 +393,7 @@ string = bse_source_ochannel_blurb (csource->source, i); gxk_scroll_text_aprintf (text, "%s[%s]%s\n", bse_source_ochannel_name (csource->source, i), - bse_source_ochannel_cname (csource->source, i), + bse_source_ochannel_ident (csource->source, i), string ? ":" : ""); if (string) { @@ -580,6 +583,7 @@ BseIcon *icon) { GdkPixbuf *pixbuf; + gboolean need_unref = FALSE; if (icon && icon->pixels->bytes) { @@ -588,10 +592,11 @@ 8, icon->width, icon->height, icon->width * icon->bytes_per_pixel, NULL, NULL); - gtk_object_set_data_full (GTK_OBJECT (item), - "BseIcon", - icon, - (GtkDestroyNotify) bse_icon_free); + g_object_set_data_full (G_OBJECT (pixbuf), + "BseIcon", + icon, + (GtkDestroyNotify) bse_icon_free); + need_unref = TRUE; } else pixbuf = bst_pixbuf_no_icon (); @@ -602,8 +607,8 @@ "y_in_pixels", FALSE, "anchor", GTK_ANCHOR_NORTH_WEST, NULL); - if (icon) - gdk_pixbuf_unref (pixbuf); + if (need_unref) + g_object_unref (pixbuf); } static void @@ -707,18 +712,20 @@ NULL); csource->channel_items = g_slist_prepend (csource->channel_items, item); - item = g_object_connect (gnome_canvas_item_new (group, - GNOME_TYPE_CANVAS_TEXT, - "fill_color_rgba", (0x000000 << 8) | 0x80, - "anchor", east_channel ? GTK_ANCHOR_WEST : GTK_ANCHOR_EAST, - "justification", GTK_JUSTIFY_RIGHT, - "x", east_channel ? TOTAL_WIDTH + BORDER_PAD * 2. : -BORDER_PAD, - "y", (y1 + y2) / 2., - "font", "Serif 10", - "text", csource->show_hints ? name : "", - NULL), + item = gnome_canvas_item_new (group, + GNOME_TYPE_CANVAS_TEXT, + "fill_color_rgba", (0x000000 << 8) | 0x80, + "anchor", east_channel ? GTK_ANCHOR_WEST : GTK_ANCHOR_EAST, + "justification", GTK_JUSTIFY_RIGHT, + "x", east_channel ? TOTAL_WIDTH + BORDER_PAD * 2. : -BORDER_PAD, + "y", (y1 + y2) / 2., + "font", CHANNEL_FONT, + "text", csource->show_hints ? name : "", + NULL); + item = g_object_connect (item, "swapped_signal::destroy", channel_name_remove, csource, NULL); + gnome_canvas_text_set_zoom_size (GNOME_CANVAS_TEXT (item), FONT_HEIGHT); g_object_set_data_full (G_OBJECT (item), "hint_text", g_strdup (name), g_free); csource->channel_hints = g_slist_prepend (csource->channel_hints, item); @@ -753,19 +760,20 @@ /* add text item, invoke name_changed callback to setup the text value */ - csource->text = g_object_connect (gnome_canvas_item_new (group, - GNOME_TYPE_CANVAS_TEXT, - "fill_color", "black", - "anchor", GTK_ANCHOR_NORTH, - "justification", GTK_JUSTIFY_CENTER, - "x", TEXT_X, - "y", TEXT_Y, - "font", "Serif 10", - // "font", "Sans 12", - NULL), - "signal::destroy", gtk_widget_destroyed, &csource->text, - "swapped_signal::event", bst_canvas_source_child_event, csource, - NULL); + csource->text = gnome_canvas_item_new (group, + GNOME_TYPE_CANVAS_TEXT, + "fill_color", "black", + "anchor", GTK_ANCHOR_NORTH, + "justification", GTK_JUSTIFY_CENTER, + "x", TEXT_X, + "y", TEXT_Y, + "font", TEXT_FONT, + NULL); + g_object_connect (csource->text, + "signal::destroy", gtk_widget_destroyed, &csource->text, + "swapped_signal::event", bst_canvas_source_child_event, csource, + NULL); + gnome_canvas_text_set_zoom_size (GNOME_CANVAS_TEXT (csource->text), FONT_HEIGHT); source_name_changed (csource); /* add input and output channel items @@ -807,12 +815,14 @@ gnome_canvas_points_free (gpoints); } +#if 0 +#define ICON_BOTTOM ((gdouble) ICON_Y + ICON_HEIGHT) /* put a line at the bottom (ontop of the text) to close * text bounding rectangle */ gpoints = gnome_canvas_points_newv (2, - CHANNEL_WIDTH, TEXT_Y, - CHANNEL_WIDTH + ICON_WIDTH, TEXT_Y); + CHANNEL_WIDTH, ICON_BOTTOM, + CHANNEL_WIDTH + ICON_WIDTH, ICON_BOTTOM); item = g_object_connect (gnome_canvas_item_new (group, GNOME_TYPE_CANVAS_LINE, "fill_color_rgba", RGBA_BLACK, @@ -821,7 +831,8 @@ "swapped_signal::event", bst_canvas_source_child_event, csource, NULL); gnome_canvas_points_free (gpoints); - +#endif + /* put an outer rectangle, make it transparent in aa mode, * so we can receive mouse events everywhere */ @@ -902,7 +913,7 @@ if (channel != ~0) { name = bse_source_ichannel_name (csource->source, channel); - cname = bse_source_ichannel_cname (csource->source, channel); + cname = bse_source_ichannel_ident (csource->source, channel); prefix = "Input"; } else @@ -911,7 +922,7 @@ if (channel != ~0) { name = bse_source_ochannel_name (csource->source, channel); - cname = bse_source_ochannel_cname (csource->source, channel); + cname = bse_source_ochannel_ident (csource->source, channel); prefix = "Output"; } } diff -ruN beast-0.5.0/beast-gtk/bstdebugkeys.defs beast-0.5.1/beast-gtk/bstdebugkeys.defs --- beast-0.5.0/beast-gtk/bstdebugkeys.defs 2003-03-13 21:45:21.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstdebugkeys.defs 2003-04-14 00:09:09.000000000 +0200 @@ -10,8 +10,10 @@ "osc", \ "pcm", \ "engine", \ + "waveosc", \ "comport", \ "procs", \ "sched", \ "leaks", \ + "pcmmodule", \ diff -ruN beast-0.5.0/beast-gtk/bstdefs.h beast-0.5.1/beast-gtk/bstdefs.h --- beast-0.5.0/beast-gtk/bstdefs.h 2003-03-10 05:39:58.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstdefs.h 2003-04-01 06:45:51.000000000 +0200 @@ -117,7 +117,6 @@ /* --- miscellaneous --- */ -#define BST_TOOLTIPS (GXK_TOOLTIPS) #define BST_DVL_HINTS (bst_developer_hints != FALSE) #define BST_DVL_EXT (bst_developer_extensions != FALSE) #define BST_MAIN_LOOP_QUIT() do { bst_main_loop_running = FALSE; } while (0) diff -ruN beast-0.5.0/beast-gtk/bstenum_arrays.c beast-0.5.1/beast-gtk/bstenum_arrays.c --- beast-0.5.0/beast-gtk/bstenum_arrays.c 2003-03-13 21:14:03.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstenum_arrays.c 2003-04-13 22:55:42.000000000 +0200 @@ -71,7 +71,7 @@ /* BstRadioToolsFlags */ static GFlagsValue bst_radio_tools_flags_values[] = { - { BST_RADIO_TOOLS_DEFAULT, "BST_RADIO_TOOLS_DEFAULT", "default" }, + { BST_RADIO_TOOLS_NONE, "BST_RADIO_TOOLS_NONE", "none" }, { BST_RADIO_TOOLS_TOOLBAR, "BST_RADIO_TOOLS_TOOLBAR", "toolbar" }, { BST_RADIO_TOOLS_PALETTE, "BST_RADIO_TOOLS_PALETTE", "palette" }, { 0, NULL, NULL } diff -ruN beast-0.5.0/beast-gtk/bstfiledialog.c beast-0.5.1/beast-gtk/bstfiledialog.c --- beast-0.5.0/beast-gtk/bstfiledialog.c 2003-03-10 05:39:58.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstfiledialog.c 2003-04-01 05:00:27.000000000 +0200 @@ -71,7 +71,7 @@ "window_position", GTK_WIN_POS_MOUSE, NULL); - gtk_file_selection_heal (GTK_FILE_SELECTION (fd)); + gxk_file_selection_heal (GTK_FILE_SELECTION (fd)); } static void diff -ruN beast-0.5.0/beast-gtk/bstgentypes.c beast-0.5.1/beast-gtk/bstgentypes.c --- beast-0.5.0/beast-gtk/bstgentypes.c 2003-03-13 21:14:04.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstgentypes.c 2003-04-06 16:09:21.000000000 +0200 @@ -115,9 +115,9 @@ _bst_init_idl (void) { bst_gconfig_field[0] = sfidl_pspec_String (NULL,"rc_version",NULL , "Release counter" , NULL , SFI_PARAM_STORAGE); - bst_gconfig_field[1] = sfidl_pspec_Bool ("Synthesis","snet_anti_aliased","Anti-Alias" , "Draw synthesis networks anti-aliased?" , TRUE , SFI_PARAM_DEFAULT); - bst_gconfig_field[2] = sfidl_pspec_Bool ("Synthesis","snet_edit_fallback","Single Edit" , "Fallback into Edit mode after creating synthesis modules?" , TRUE , SFI_PARAM_DEFAULT); - bst_gconfig_field[3] = sfidl_pspec_Bool ("Synthesis","snet_swap_io_channels","Swap IO" , "Swap input with output channels when displaying synthesis modules?" , FALSE , SFI_PARAM_DEFAULT); + bst_gconfig_field[1] = sfidl_pspec_Bool ("Synthesis Networks","snet_anti_aliased","Anti-Alias" , "Draw synthesis networks anti-aliased?" , TRUE , SFI_PARAM_DEFAULT); + bst_gconfig_field[2] = sfidl_pspec_Bool ("Synthesis Networks","snet_edit_fallback","Single Edit" , "Fallback into Edit mode after creating synthesis modules?" , TRUE , SFI_PARAM_DEFAULT); + bst_gconfig_field[3] = sfidl_pspec_Bool ("Synthesis Networks","snet_swap_io_channels","Swap IO" , "Swap input with output channels when displaying synthesis modules?" , FALSE , SFI_PARAM_DEFAULT); bst_gconfig_field[4] = sfidl_pspec_Int ("Misc","tab_width","Tab Width" , "Specify project tab width in pixels" , 0 , 0 , 5000 , 5 , SFI_PARAM_DEFAULT); } diff -ruN beast-0.5.0/beast-gtk/bstitemview.c beast-0.5.1/beast-gtk/bstitemview.c --- beast-0.5.0/beast-gtk/bstitemview.c 2003-03-10 05:39:58.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstitemview.c 2003-04-08 12:46:06.000000000 +0200 @@ -314,6 +314,7 @@ /* make widgets visible */ gtk_widget_show_all (scwin); + bst_update_can_operate (GTK_WIDGET (self)); } static void @@ -322,6 +323,7 @@ if (self->pview) bst_param_view_set_item (BST_PARAM_VIEW (self->pview), bst_item_view_get_current (self)); + bst_update_can_operate (GTK_WIDGET (self)); } static void @@ -375,6 +377,7 @@ { gint row = bse_item_get_seqid (item) - 1; gxk_list_wrapper_notify_change (GXK_LIST_WRAPPER (self->wlist), row); + bst_update_can_operate (GTK_WIDGET (self)); } } @@ -415,7 +418,7 @@ gint row = bse_item_get_seqid (item) - 1; gxk_list_wrapper_notify_insert (self->wlist, row); BST_ITEM_VIEW_GET_CLASS (self)->listen_on (self, item); - bst_item_view_can_operate (self, 0); + bst_update_can_operate (GTK_WIDGET (self)); } } @@ -480,6 +483,7 @@ gxk_list_wrapper_notify_append (self->wlist, 1); } } + bst_update_can_operate (GTK_WIDGET (self)); } void diff -ruN beast-0.5.0/beast-gtk/bstmain.c beast-0.5.1/beast-gtk/bstmain.c --- beast-0.5.0/beast-gtk/bstmain.c 2003-03-10 11:05:44.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstmain.c 2003-04-03 18:46:37.000000000 +0200 @@ -88,9 +88,9 @@ GSource *source; guint i; - /* nitialize GLib guts */ - if (toyprof_mem_table && 0) - g_mem_set_vtable (toyprof_mem_table); + /* initialize GLib guts */ + if (0) + toyprof_init_glib_memtable ("/tmp/beast-leak.debug", 10 /* SIGUSR1 */); g_thread_init (NULL); g_type_init (); @@ -497,6 +497,8 @@ g_print ("%s\n", BST_PATH_IMAGES); else if (strcmp (arg, "plugins") == 0) g_print ("%s\n", BSE_PATH_PLUGINS); + else if (strcmp (arg, "ladspa") == 0) + g_print ("%s\n", BSE_PATH_LADSPA); else if (strcmp (arg, "scripts") == 0) g_print ("%s\n", BSE_PATH_SCRIPTS); else if (strcmp (arg, "samples") == 0) @@ -552,6 +554,7 @@ g_print ("Plugin Path: %s\n", BSE_PATH_PLUGINS); g_print ("Script Path: %s\n", BSE_PATH_SCRIPTS); g_print ("Sample Path: %s\n", BST_PATH_DATA_SAMPLES); + g_print ("LADSPA Path: %s:$LADSPA_PATH\n", BSE_PATH_LADSPA); g_print ("\n"); g_print ("BEAST comes with ABSOLUTELY NO WARRANTY.\n"); g_print ("You may redistribute copies of BEAST under the terms of\n"); diff -ruN beast-0.5.0/beast-gtk/bstmenus.c beast-0.5.1/beast-gtk/bstmenus.c --- beast-0.5.0/beast-gtk/bstmenus.c 2003-03-10 05:39:59.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstmenus.c 2003-04-01 04:41:25.000000000 +0200 @@ -243,10 +243,10 @@ { ife.item_type = ""; /* we want an image menu item without an image, which gtk - * doesn't properly support, so we just provide an invalid - * serialized pixbuf (via magic mismatch) + * doesn't properly support, so we just provide an empty + * serialized pixbuf */ - ife.extra_data = "!Pix"; + ife.extra_data = BST_PIXDATA_EMPTY1x1; } else { @@ -254,7 +254,7 @@ ife.extra_data = e->extra_data; } gtk_item_factory_create_items (ifactory, 1, &ife, NULL); - item = gtk_item_factory_get_item (ifactory, ife.path); + item = gxk_item_factory_get_item (ifactory, ife.path); /* connect callback */ if (e->callback) diff -ruN beast-0.5.0/beast-gtk/bstparam.c beast-0.5.1/beast-gtk/bstparam.c --- beast-0.5.0/beast-gtk/bstparam.c 2003-03-10 05:39:59.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstparam.c 2003-04-01 06:41:06.000000000 +0200 @@ -239,7 +239,7 @@ if (!container || !GTK_IS_CONTAINER (container)) { GtkWidget *any; - container = bst_gmask_container_create (GXK_TOOLTIPS, quark_group ? 5 : 0, FALSE); + container = bst_gmask_container_create (quark_group ? 5 : 0, FALSE); if (quark_group) any = gtk_widget_new (GTK_TYPE_FRAME, "visible", TRUE, @@ -612,6 +612,7 @@ goto skip_duplicate; names[k++] = impls[i]->name; skip_duplicate: + ; } names[k] = NULL; n = k; diff -ruN beast-0.5.0/beast-gtk/bstparamview.c beast-0.5.1/beast-gtk/bstparamview.c --- beast-0.5.0/beast-gtk/bstparamview.c 2003-03-10 05:39:59.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstparamview.c 2003-04-01 04:52:31.000000000 +0200 @@ -293,7 +293,7 @@ "vadjustment", gtk_scrolled_window_get_vadjustment (scrolled_window), "parent", scrolled_window, NULL); - bst_widget_request_aux_info (viewport); + gxk_widget_proxy_requisition (viewport); g_object_set (gcontainer, "visible", TRUE, "homogeneous", FALSE, diff -ruN beast-0.5.0/beast-gtk/bstpianorollctrl.c beast-0.5.1/beast-gtk/bstpianorollctrl.c --- beast-0.5.0/beast-gtk/bstpianorollctrl.c 2003-03-10 05:40:00.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstpianorollctrl.c 2003-04-06 15:57:07.000000000 +0200 @@ -667,7 +667,7 @@ SfiProxy project = song ? bse_item_get_parent (song) : 0; SfiProxy track = song ? bse_song_find_track_for_part (song, part) : 0; - sfi_debug ("piano drag event, note=%d (valid=%d)", drag->current_note, drag->current_valid); + // sfi_debug ("piano drag event, note=%d (valid=%d)", drag->current_note, drag->current_valid); if (project && track) { diff -ruN beast-0.5.0/beast-gtk/bstpreferences.c beast-0.5.1/beast-gtk/bstpreferences.c --- beast-0.5.0/beast-gtk/bstpreferences.c 2003-03-10 05:40:00.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstpreferences.c 2003-04-01 06:45:14.000000000 +0200 @@ -261,7 +261,7 @@ "swapped_signal::clicked", bst_preferences_save, prefs, "swapped_signal::destroy", g_nullify_pointer, &prefs->apply, NULL); - gtk_tooltips_set_tip (BST_TOOLTIPS, prefs->apply, + gtk_tooltips_set_tip (GXK_TOOLTIPS, prefs->apply, "Apply and save the preference values. Some values may only take effect after " "restart while others can be locked against modifcation during " "playback.", @@ -270,21 +270,21 @@ /* Revert */ widget = gxk_dialog_action_swapped (dialog, BST_STOCK_REVERT, bst_preferences_revert, prefs); - gtk_tooltips_set_tip (BST_TOOLTIPS, widget, + gtk_tooltips_set_tip (GXK_TOOLTIPS, widget, "Revert to the currently active values.", NULL); /* Default Revert */ widget = gxk_dialog_action_swapped (dialog, BST_STOCK_DEFAULT_REVERT, bst_preferences_default_revert, prefs); - gtk_tooltips_set_tip (BST_TOOLTIPS, widget, + gtk_tooltips_set_tip (GXK_TOOLTIPS, widget, "Revert to hardcoded default values (factory settings).", NULL); /* Close */ widget = gxk_dialog_action (dialog, BST_STOCK_CLOSE, gxk_toplevel_delete, NULL); - gtk_tooltips_set_tip (BST_TOOLTIPS, widget, + gtk_tooltips_set_tip (GXK_TOOLTIPS, widget, "Discard changes and close dialog.", NULL); } diff -ruN beast-0.5.0/beast-gtk/bstprocbrowser.c beast-0.5.1/beast-gtk/bstprocbrowser.c --- beast-0.5.0/beast-gtk/bstprocbrowser.c 2003-03-10 05:40:00.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstprocbrowser.c 2003-04-01 06:45:14.000000000 +0200 @@ -264,7 +264,7 @@ "swapped_signal::clicked", bst_proc_browser_execute, self, "swapped_signal::destroy", g_nullify_pointer, &self->execute, NULL); - gtk_tooltips_set_tip (BST_TOOLTIPS, self->execute, + gtk_tooltips_set_tip (GXK_TOOLTIPS, self->execute, "Execute the current line.", NULL); } diff -ruN beast-0.5.0/beast-gtk/bstradiotools.c beast-0.5.1/beast-gtk/bstradiotools.c --- beast-0.5.0/beast-gtk/bstradiotools.c 2003-03-13 15:34:28.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstradiotools.c 2003-04-06 15:05:05.000000000 +0200 @@ -199,22 +199,6 @@ g_return_if_fail (BST_IS_RADIO_TOOLS (rtools)); g_return_if_fail (category != NULL); - g_return_if_fail (flags != 0); - -#if 0 - guint i, next_uc = 0; - - /* strip first namespace prefix from type name */ - name = g_type_name (category->type); - for (i = 0; name[i] != 0; i++) - if (i && toupper (name[i]) == name[i]) - { - next_uc = i; - break; - } - if (toupper (name[0]) == name[0] && next_uc > 0) - name += next_uc; -#endif tip = g_strconcat (category->category + category->lindex + 1, " [", category->type, "]", @@ -242,8 +226,6 @@ { guint i; - if (flags == BST_RADIO_TOOLS_DEFAULT) - flags = BST_RADIO_TOOLS_EVERYWHERE; if (!tool_tip) tool_tip = tool_name; if (!tool_blurb) @@ -274,9 +256,6 @@ BstCatalogTool dummy = { 0, }; guint i; - if (flags == BST_RADIO_TOOLS_DEFAULT) - flags = BST_RADIO_TOOLS_EVERYWHERE; - tool = bst_catalog_get_tool (cat_key); if (tool) flags &= ~BST_RADIO_TOOLS_FREE_FLAG; @@ -320,7 +299,6 @@ { g_return_if_fail (BST_IS_RADIO_TOOLS (self)); g_return_if_fail (tool_name != NULL); - g_return_if_fail (flags != 0); bst_radio_tools_add_tool_generic (self, tool_id, tool_name, NULL, NULL, tool_tip, tool_blurb, tool_icon, flags); } @@ -519,30 +497,42 @@ } static void -toggle_apply_blurb (GtkToggleButton *toggle, - GtkWidget *text) +tool2text (BstRadioTools *self, + guint tool_id, + GtkWidget *text) { - gpointer tool_id = gtk_object_get_data (GTK_OBJECT (toggle), "user_data"); - gpointer blurb_id = gtk_object_get_data (GTK_OBJECT (text), "user_data"); - - if (tool_id == blurb_id && !toggle->active) - { - gxk_scroll_text_set (text, NULL); - g_object_set_data (G_OBJECT (text), "user_data", GUINT_TO_POINTER (~0)); - } - else if (toggle->active && tool_id != blurb_id) - { - gxk_scroll_text_set (text, gtk_object_get_data (GTK_OBJECT (toggle), "blurb")); - g_object_set_data (G_OBJECT (text), "user_data", tool_id); - } + guint i; + gxk_scroll_text_set (text, NULL); + for (i = 0; i < self->n_tools; i++) + if (self->tools[i].tool_id == tool_id) + { + gxk_scroll_text_set (text, self->tools[i].tool.blurb); + break; + } +} + +static void +tool2label (BstRadioTools *self, + guint tool_id, + GtkWidget *label) +{ + guint i; + gtk_label_set (GTK_LABEL (label), NULL); + for (i = 0; i < self->n_tools; i++) + if (self->tools[i].tool_id == tool_id) + { + gtk_label_set (GTK_LABEL (label), self->tools[i].tool.name); + break; + } } GtkWidget* bst_radio_tools_build_palette (BstRadioTools *self, + GtkWidget *selector, gboolean show_descriptions, GtkReliefStyle relief) { - GtkWidget *vbox, *table, *text = NULL; + GtkWidget *vbox, *table, *hbox, *label, *text = NULL; guint i, n = 0, column = 5; g_return_val_if_fail (BST_IS_RADIO_TOOLS (self), NULL); @@ -550,19 +540,37 @@ vbox = gtk_widget_new (GTK_TYPE_VBOX, "visible", TRUE, "homogeneous", FALSE, - "resize_mode", GTK_RESIZE_QUEUE, + "spacing", 3, NULL); table = gtk_widget_new (GTK_TYPE_TABLE, "visible", TRUE, "homogeneous", TRUE, NULL); gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, TRUE, 0); + /* add tool name label */ + hbox = gtk_widget_new (GTK_TYPE_HBOX, + "visible", TRUE, + "homogeneous", FALSE, + "spacing", 3, + NULL); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); + if (selector) + gtk_box_pack_start (GTK_BOX (hbox), selector, FALSE, TRUE, 0); + label = gtk_widget_new (GTK_TYPE_LABEL, + "visible", TRUE, + "parent", hbox, + "width_request", 1, /* packed auto-expand */ + NULL); + g_signal_connect_object (self, "set_tool", G_CALLBACK (tool2label), label, G_CONNECT_AFTER); + tool2label (self, self->tool_id, label); + /* create description view */ if (show_descriptions) { text = gxk_scroll_text_create (GXK_SCROLL_TEXT_WIDGET_LOOK, NULL); - g_object_set_data (G_OBJECT (text), "user_data", GUINT_TO_POINTER (~0)); gtk_widget_ref (text); gtk_object_sink (GTK_OBJECT (text)); + g_signal_connect_object (self, "set_tool", G_CALLBACK (tool2text), text, G_CONNECT_AFTER); + tool2text (self, self->tool_id, text); } for (i = 0; i < self->n_tools; i++) @@ -587,7 +595,6 @@ NULL), "swapped_signal::toggled", rtools_toggle_toggled, self, "swapped_signal::destroy", rtools_widget_destroyed, self, - text ? "signal_after::toggled" : NULL, toggle_apply_blurb, text, NULL); if (self->tools[i].tool.accelerator) { @@ -598,7 +605,7 @@ gtk_widget_add_accelerator (button, "clicked", self->accel_group, accelerator_key, accelerator_mods, GTK_ACCEL_VISIBLE); } - gtk_tooltips_set_tip (BST_TOOLTIPS, button, self->tools[i].tool.tooltip, NULL); + gtk_tooltips_set_tip (GXK_TOOLTIPS, button, self->tools[i].tool.tooltip, NULL); gtk_object_set_data_full (GTK_OBJECT (button), "blurb", g_strdup (self->tools[i].tool.blurb), g_free); self->widgets = g_slist_prepend (self->widgets, button); gtk_table_attach (GTK_TABLE (table), diff -ruN beast-0.5.0/beast-gtk/bstradiotools.h beast-0.5.1/beast-gtk/bstradiotools.h --- beast-0.5.0/beast-gtk/bstradiotools.h 2003-03-10 05:40:01.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstradiotools.h 2003-04-06 15:04:32.000000000 +0200 @@ -36,11 +36,10 @@ /* --- structures & typedefs --- */ typedef enum { - BST_RADIO_TOOLS_DEFAULT = 0, + BST_RADIO_TOOLS_NONE = 0, BST_RADIO_TOOLS_TOOLBAR = 1 << 0, BST_RADIO_TOOLS_PALETTE = 1 << 1, - /* FIXME: compat flag */ -#define BST_RADIO_TOOLS_EVERYWHERE BST_RADIO_TOOLS_TOOLBAR|BST_RADIO_TOOLS_PALETTE +#define BST_RADIO_TOOLS_EVERYWHERE (BST_RADIO_TOOLS_TOOLBAR | BST_RADIO_TOOLS_PALETTE) } BstRadioToolsFlags; typedef struct _BstRadioToolEntry BstRadioToolEntry; typedef struct _BstRadioTools BstRadioTools; @@ -61,7 +60,7 @@ { GObjectClass parent_class; - void (*set_tool) (BstRadioTools* rtools, + void (*set_tool) (BstRadioTools *rtools, guint tool_id); }; @@ -108,6 +107,7 @@ void bst_radio_tools_build_menu (BstRadioTools *rtools, GtkMenu *menu); GtkWidget* bst_radio_tools_build_palette (BstRadioTools *rtools, + GtkWidget *selector, gboolean show_descriptions, GtkReliefStyle relief); diff -ruN beast-0.5.0/beast-gtk/bstrecords.sfidl beast-0.5.1/beast-gtk/bstrecords.sfidl --- beast-0.5.0/beast-gtk/bstrecords.sfidl 2003-03-10 05:40:01.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstrecords.sfidl 2003-04-06 16:09:14.000000000 +0200 @@ -20,7 +20,7 @@ /* BEAST Global Config */ record GConfig { String rc_version @= (NULL, "Release counter", NULL, SFI_PARAM_STORAGE); - group: "Synthesis"; + group: "Synthesis Networks"; Bool snet_anti_aliased @= ("Anti-Alias", "Draw synthesis networks anti-aliased?", TRUE, SFI_PARAM_DEFAULT); Bool snet_edit_fallback @= ("Single Edit", "Fallback into Edit mode after creating synthesis modules?", diff -ruN beast-0.5.0/beast-gtk/bstsampleeditor.c beast-0.5.1/beast-gtk/bstsampleeditor.c --- beast-0.5.0/beast-gtk/bstsampleeditor.c 2003-03-10 05:40:01.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstsampleeditor.c 2003-04-01 06:41:05.000000000 +0200 @@ -461,7 +461,7 @@ /* setup qsampler zoom and vscale */ - mask_parent = bst_gmask_container_create (BST_TOOLTIPS, 5, TRUE); + mask_parent = bst_gmask_container_create (5, TRUE); gtk_box_pack_start (GTK_BOX (editor->main_vbox), mask_parent, FALSE, TRUE, 0); editor->zoom_adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (100, 1e-16, 1e+16, 0.1, 10, 0)); g_object_connect (editor->zoom_adjustment, diff -ruN beast-0.5.0/beast-gtk/bstsnetrouter.c beast-0.5.1/beast-gtk/bstsnetrouter.c --- beast-0.5.0/beast-gtk/bstsnetrouter.c 2003-03-10 05:40:01.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstsnetrouter.c 2003-04-06 15:02:53.000000000 +0200 @@ -65,7 +65,7 @@ { "/_Other Sources", NULL, NULL, 0, "", 0 }, { "/_Routing", NULL, NULL, 0, "", 0 }, { "/_Filters", NULL, NULL, 0, "", 0 }, - { "/_Enhance", NULL, NULL, 0, "", 0 }, + // { "/_Enhance", NULL, NULL, 0, "", 0 }, { "/_Distortion", NULL, NULL, 0, "", 0 }, { "/_Input & Output", NULL, NULL, 0, "", 0 }, { "/_MIDI", NULL, NULL, 0, "", 0 }, @@ -288,8 +288,6 @@ } if (snet) { - gfloat zoom; - router->snet = snet; bse_item_unuse (router->snet); @@ -299,10 +297,9 @@ bst_snet_router_rebuild (BST_SNET_ROUTER (router)); #if 0 + gfloat zoom; if (bse_parasite_get_floats (router->snet, "BstRouterZoom", 1, &zoom) == 1) gtk_adjustment_set_value (router->adjustment, zoom); -#else - g_message ("%s: fix parasites", G_STRLOC); #endif } } @@ -335,25 +332,55 @@ bst_radio_tools_set_tool (router->rtools, 0); } -void -bst_snet_router_toggle_palette (BstSNetRouter *router) +static gboolean +palette_ebox_button (BstSNetRouter *self, + GdkEventButton *event) { - g_return_if_fail (BST_IS_SNET_ROUTER (router)); + GtkItemFactory *popup_factory = BST_SNET_ROUTER_GET_CLASS (self)->popup_factory; + + bst_menu_popup (popup_factory, + self, + NULL, NULL, + event->x_root, event->y_root, + event->button, event->time); + return TRUE; +} - if (!router->palette || !GTK_WIDGET_VISIBLE (router->palette)) +void +bst_snet_router_toggle_palette (BstSNetRouter *self) +{ + g_return_if_fail (BST_IS_SNET_ROUTER (self)); + + if (!self->palette || !GTK_WIDGET_VISIBLE (self->palette)) { - if (!router->palette) - router->palette = g_object_connect (gxk_dialog_new (&router->palette, - GTK_OBJECT (router), + if (!self->palette) + { + GtkWidget *ebox = g_object_new (GTK_TYPE_EVENT_BOX, + "visible", TRUE, + "child", g_object_new (GTK_TYPE_FRAME, + "visible", TRUE, + "shadow_type", GTK_SHADOW_OUT, + "child", g_object_new (GTK_TYPE_ARROW, + "visible", TRUE, + "arrow_type", GTK_ARROW_RIGHT, + "shadow_type", GTK_SHADOW_OUT, + NULL), + NULL), + NULL); + g_object_connect (ebox, "swapped_signal::button_press_event", palette_ebox_button, self, NULL); + self->palette = g_object_connect (gxk_dialog_new (&self->palette, + GTK_OBJECT (self), GXK_DIALOG_HIDE_ON_DELETE, "Palette", - bst_radio_tools_build_palette (router->rtools, TRUE, GTK_RELIEF_NORMAL)), - "swapped_signal::hide", palette_reset, router, + bst_radio_tools_build_palette (self->rtools, ebox, + TRUE, GTK_RELIEF_NORMAL)), + "swapped_signal::hide", palette_reset, self, NULL); - gxk_widget_showraise (router->palette); + } + gxk_widget_showraise (self->palette); } else - gtk_widget_hide (router->palette); + gtk_widget_hide (self->palette); } static void @@ -442,7 +469,7 @@ d = gtk_object_get_data (GTK_OBJECT (canvas), "zoom_d"); if (EPSILON < fabs (canvas->pixels_per_unit - *d)) - gnome_canvas_set_pixels_per_unit (canvas, *d); + gnome_canvas_set_zoom (canvas, *d); gtk_object_remove_data (GTK_OBJECT (canvas), "zoom_d"); @@ -459,12 +486,9 @@ if (router->snet) { - gfloat zoom = router->adjustment->value; - #if 0 + gfloat zoom = router->adjustment->value; bse_parasite_set_floats (router->snet, "BstRouterZoom", 1, &zoom); -#else - g_message ("%s: fix parasites", G_STRLOC); #endif } @@ -514,27 +538,42 @@ cseq = bse_categories_match ("/Modules/*"); for (i = 0; i < cseq->n_cats; i++) { - static struct { gchar *type, *name, *tip; } toolbar_cats[] = { + static struct { gchar *type, *name, *tip; } toolbar_types[] = { { "BsePcmOutput", "Output", "PCM Output" }, { "BseAmplifier", "DCA", "Amplifier" }, { "BseSnooper", "Snoop", "Signal Debugging Tool" }, { "BsePcmInput", "Input", "PCM Input" }, }; - guint n; - - for (n = 0; n < G_N_ELEMENTS (toolbar_cats); n++) - if (strcmp (toolbar_cats[n].type, cseq->cats[i]->type) == 0) + static const gchar *palette_cats[] = { + "/Modules/Audio Sources/", "/Modules/Filters/", + "/Modules/Input & Output/", "/Modules/MIDI/", + "/Modules/Other Sources/", "/Modules/Routing/", + "/Modules/Virtualization/", "/Modules/Distortion/", + }; + guint n, is_palette = 0; + + /* decide whether this tool is displayed in the palette */ + for (n = 0; n < G_N_ELEMENTS (palette_cats); n++) + if (strncmp (palette_cats[n], cseq->cats[i]->category, strlen (palette_cats[n])) == 0) { - bst_radio_tools_add_tool (self->rtools, cseq->cats[i]->category_id, - toolbar_cats[n].name, - toolbar_cats[n].tip, NULL, - cseq->cats[i]->icon, BST_RADIO_TOOLS_TOOLBAR); + is_palette = TRUE; break; } + /* add (all) tools */ bst_radio_tools_add_category (self->rtools, cseq->cats[i]->category_id, cseq->cats[i], - BST_RADIO_TOOLS_PALETTE); + is_palette ? BST_RADIO_TOOLS_PALETTE : BST_RADIO_TOOLS_NONE); + /* add toolbar variants */ + for (n = 0; n < G_N_ELEMENTS (toolbar_types); n++) + if (strcmp (toolbar_types[n].type, cseq->cats[i]->type) == 0) + { + bst_radio_tools_add_tool (self->rtools, cseq->cats[i]->category_id, + toolbar_types[n].name, + toolbar_types[n].tip, NULL, + cseq->cats[i]->icon, BST_RADIO_TOOLS_TOOLBAR); + break; + } } /* create toolbar diff -ruN beast-0.5.0/beast-gtk/bsttrackrollctrl.c beast-0.5.1/beast-gtk/bsttrackrollctrl.c --- beast-0.5.0/beast-gtk/bsttrackrollctrl.c 2003-03-10 05:40:02.000000000 +0100 +++ beast-0.5.1/beast-gtk/bsttrackrollctrl.c 2003-04-06 14:37:58.000000000 +0200 @@ -65,10 +65,10 @@ NULL); { BstTool radio_tools[] = { - { CKEY ("TrackRoll/Insert"), BST_TRACK_ROLL_TOOL_INSERT, BST_RADIO_TOOLS_DEFAULT }, - { CKEY ("TrackRoll/Link"), BST_TRACK_ROLL_TOOL_LINK, BST_RADIO_TOOLS_DEFAULT }, - { CKEY ("TrackRoll/Delete"), BST_TRACK_ROLL_TOOL_DELETE, BST_RADIO_TOOLS_DEFAULT }, - { CKEY ("TrackRoll/Editor"), BST_TRACK_ROLL_TOOL_EDITOR_ONCE, BST_RADIO_TOOLS_DEFAULT }, + { CKEY ("TrackRoll/Insert"), BST_TRACK_ROLL_TOOL_INSERT, BST_RADIO_TOOLS_EVERYWHERE }, + { CKEY ("TrackRoll/Link"), BST_TRACK_ROLL_TOOL_LINK, BST_RADIO_TOOLS_EVERYWHERE }, + { CKEY ("TrackRoll/Delete"), BST_TRACK_ROLL_TOOL_DELETE, BST_RADIO_TOOLS_EVERYWHERE }, + { CKEY ("TrackRoll/Editor"), BST_TRACK_ROLL_TOOL_EDITOR_ONCE, BST_RADIO_TOOLS_EVERYWHERE }, }; bst_radio_tools_add_tools (self->canvas_rtools, G_N_ELEMENTS (radio_tools), radio_tools); bst_radio_tools_set_tool (self->canvas_rtools, BST_TRACK_ROLL_TOOL_INSERT); @@ -80,9 +80,9 @@ NULL); { BstTool radio_tools[] = { - { CKEY ("TrackRoll/TickLeft"), BST_TRACK_ROLL_TOOL_MOVE_TICK_LEFT, BST_RADIO_TOOLS_DEFAULT }, - { CKEY ("TrackRoll/TickPos"), BST_TRACK_ROLL_TOOL_MOVE_TICK_POINTER, BST_RADIO_TOOLS_DEFAULT }, - { CKEY ("TrackRoll/TickRight"), BST_TRACK_ROLL_TOOL_MOVE_TICK_RIGHT, BST_RADIO_TOOLS_DEFAULT }, + { CKEY ("TrackRoll/TickLeft"), BST_TRACK_ROLL_TOOL_MOVE_TICK_LEFT, BST_RADIO_TOOLS_EVERYWHERE }, + { CKEY ("TrackRoll/TickPos"), BST_TRACK_ROLL_TOOL_MOVE_TICK_POINTER, BST_RADIO_TOOLS_EVERYWHERE }, + { CKEY ("TrackRoll/TickRight"), BST_TRACK_ROLL_TOOL_MOVE_TICK_RIGHT, BST_RADIO_TOOLS_EVERYWHERE }, }; bst_radio_tools_add_tools (self->hpanel_rtools, G_N_ELEMENTS (radio_tools), radio_tools); bst_radio_tools_set_tool (self->hpanel_rtools, BST_TRACK_ROLL_TOOL_MOVE_TICK_POINTER); @@ -91,13 +91,13 @@ self->quant_rtools = bst_radio_tools_new (); { BstTool radio_tools[] = { - { CKEY ("Quant/Tact"), BST_QUANTIZE_TACT, BST_RADIO_TOOLS_DEFAULT }, - { CKEY ("Quant/None"), BST_QUANTIZE_NONE, BST_RADIO_TOOLS_DEFAULT }, - { CKEY ("Quant/1"), BST_QUANTIZE_NOTE_1, BST_RADIO_TOOLS_DEFAULT }, - { CKEY ("Quant/2"), BST_QUANTIZE_NOTE_2, BST_RADIO_TOOLS_DEFAULT }, - { CKEY ("Quant/4"), BST_QUANTIZE_NOTE_4, BST_RADIO_TOOLS_DEFAULT }, - { CKEY ("Quant/8"), BST_QUANTIZE_NOTE_8, BST_RADIO_TOOLS_DEFAULT }, - { CKEY ("Quant/16"), BST_QUANTIZE_NOTE_16, BST_RADIO_TOOLS_DEFAULT }, + { CKEY ("Quant/Tact"), BST_QUANTIZE_TACT, BST_RADIO_TOOLS_EVERYWHERE }, + { CKEY ("Quant/None"), BST_QUANTIZE_NONE, BST_RADIO_TOOLS_EVERYWHERE }, + { CKEY ("Quant/1"), BST_QUANTIZE_NOTE_1, BST_RADIO_TOOLS_EVERYWHERE }, + { CKEY ("Quant/2"), BST_QUANTIZE_NOTE_2, BST_RADIO_TOOLS_EVERYWHERE }, + { CKEY ("Quant/4"), BST_QUANTIZE_NOTE_4, BST_RADIO_TOOLS_EVERYWHERE }, + { CKEY ("Quant/8"), BST_QUANTIZE_NOTE_8, BST_RADIO_TOOLS_EVERYWHERE }, + { CKEY ("Quant/16"), BST_QUANTIZE_NOTE_16, BST_RADIO_TOOLS_EVERYWHERE }, }; bst_radio_tools_add_tools (self->quant_rtools, G_N_ELEMENTS (radio_tools), radio_tools); bst_radio_tools_set_tool (self->quant_rtools, BST_QUANTIZE_TACT); diff -ruN beast-0.5.0/beast-gtk/bstusermessage.c beast-0.5.1/beast-gtk/bstusermessage.c --- beast-0.5.0/beast-gtk/bstusermessage.c 2003-03-13 15:34:27.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstusermessage.c 2003-04-01 06:45:13.000000000 +0200 @@ -166,7 +166,7 @@ janitor_action, (gpointer) janitor, action, GXK_DIALOG_MULTI_SWAPPED); g_object_set_data_full (G_OBJECT (button), "user_data", g_strdup (action), g_free); - gtk_tooltips_set_tip (BST_TOOLTIPS, button, blurb, NULL); + gtk_tooltips_set_tip (GXK_TOOLTIPS, button, blurb, NULL); } } gxk_dialog_action (dialog, BST_STOCK_CANCEL, gxk_toplevel_delete, NULL); diff -ruN beast-0.5.0/beast-gtk/bstutils.c beast-0.5.1/beast-gtk/bstutils.c --- beast-0.5.0/beast-gtk/bstutils.c 2003-03-10 11:05:51.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstutils.c 2003-04-01 06:47:50.000000000 +0200 @@ -1,5 +1,5 @@ /* BEAST - Bedevilled Audio System - * Copyright (C) 1998-2002 Tim Janik and Red Hat, Inc. + * Copyright (C) 1998-2003 Tim Janik * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -267,118 +267,10 @@ return TRUE; } -static void -requisition_to_aux_info (GtkWidget *widget, - GtkRequisition *requisition) -{ - guint width = requisition->width; - guint height = requisition->height; - - /* we don't want the requisition to get too big */ - width = MIN (width, gdk_screen_width () / 2); - height = MIN (height, gdk_screen_height () / 2); - - gtk_widget_set_size_request (widget, width, height); -} - -void -bst_widget_request_aux_info (GtkWidget *widget) -{ - g_return_if_fail (GTK_IS_WIDGET (widget)); - - g_signal_handlers_disconnect_by_func (widget, requisition_to_aux_info, NULL); - g_signal_connect_after (widget, "size_request", G_CALLBACK (requisition_to_aux_info), NULL); -} - -void -gtk_file_selection_heal (GtkFileSelection *fs) -{ - GtkWidget *main_vbox; - GtkWidget *hbox; - GtkWidget *any; - - g_return_if_fail (fs != NULL); - g_return_if_fail (GTK_IS_FILE_SELECTION (fs)); - - /* button placement - */ - gtk_container_set_border_width (GTK_CONTAINER (fs), 0); - gtk_file_selection_hide_fileop_buttons (fs); - gtk_widget_ref (fs->main_vbox); - gtk_container_remove (GTK_CONTAINER (fs), fs->main_vbox); - gtk_box_set_spacing (GTK_BOX (fs->main_vbox), 0); - gtk_container_set_border_width (GTK_CONTAINER (fs->main_vbox), 5); - main_vbox = gtk_widget_new (GTK_TYPE_VBOX, - "homogeneous", FALSE, - "spacing", 0, - "border_width", 0, - "parent", fs, - "visible", TRUE, - NULL); - gtk_box_pack_start (GTK_BOX (main_vbox), fs->main_vbox, TRUE, TRUE, 0); - gtk_widget_unref (fs->main_vbox); - gtk_widget_hide (fs->ok_button->parent); - hbox = gtk_widget_new (GTK_TYPE_HBOX, - "homogeneous", TRUE, - "spacing", 0, - "border_width", 5, - "visible", TRUE, - NULL); - gtk_box_pack_end (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0); - gtk_widget_reparent (fs->ok_button, hbox); - gtk_widget_reparent (fs->cancel_button, hbox); - gtk_widget_grab_default (fs->ok_button); - // gtk_label_set_text (GTK_LABEL (GTK_BIN (fs->ok_button)->child), "Ok"); - // gtk_label_set_text (GTK_LABEL (GTK_BIN (fs->cancel_button)->child), "Cancel"); - - /* heal the action_area packing so we can customize children - */ - gtk_box_set_child_packing (GTK_BOX (fs->action_area->parent), - fs->action_area, - FALSE, TRUE, - 5, GTK_PACK_START); - - any = gtk_widget_new (GTK_TYPE_HSEPARATOR, - "visible", TRUE, - NULL); - gtk_box_pack_end (GTK_BOX (main_vbox), any, FALSE, TRUE, 0); - gtk_widget_grab_focus (fs->selection_entry); -} - -void -gtk_clist_moveto_selection (GtkCList *clist) -{ - g_return_if_fail (GTK_IS_CLIST (clist)); - - if (GTK_WIDGET_DRAWABLE (clist) && clist->selection) - { - gint row = GPOINTER_TO_INT (clist->selection->data); - - if (gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_FULL) - gtk_clist_moveto (clist, row, -1, 0.5, 0); - } -} - -gpointer -gtk_clist_get_selection_data (GtkCList *clist, - guint index) -{ - GList *list; - gint row; - - g_return_val_if_fail (GTK_IS_CLIST (clist), NULL); - - list = g_list_nth (clist->selection, index); - row = list ? GPOINTER_TO_INT (list->data) : -1; - - return row >= 0 ? gtk_clist_get_row_data (clist, row) : NULL; -} - /* --- field mask --- */ static GQuark gmask_quark = 0; typedef struct { - GtkTooltips *tooltips; GtkWidget *parent; GtkWidget *prompt; GtkWidget *aux1; @@ -398,8 +290,6 @@ { GMask *gmask = data; - if (gmask->tooltips) - g_object_unref (gmask->tooltips); if (gmask->parent) g_object_unref (gmask->parent); if (gmask->prompt) @@ -441,24 +331,25 @@ gmask->action = action; gpack = CLAMP (gpack, BST_GMASK_FIT, BST_GMASK_BIG); gmask->gpack = gpack; - gmask->tooltips = g_object_get_data (G_OBJECT (parent), "GMask-tooltips"); - if (gmask->tooltips) - g_object_ref (gmask->tooltips); return action; } /** * bst_gmask_container_create - * @tooltips: Tooltip widget * @border_width: Border width of this GUI mask * @dislodge_columns: Provide expandable space between columns + * @RETURNS: GUI field mask container * - * Create the container for a new GUI field mask. + * Create a container capable to hold GUI field masks. + * This is the container to be passed into bst_gmask_form(). + * In case multiple field mask columns are packed into the + * container (by using bst_gmask_set_column() on the filed + * masks), @dislodge_columns specifies whether the field + * mask columns are to be closely aligned. */ GtkWidget* -bst_gmask_container_create (gpointer tooltips, - guint border_width, +bst_gmask_container_create (guint border_width, gboolean dislodge_columns) { GtkWidget *container = gtk_widget_new (GTK_TYPE_TABLE, @@ -467,19 +358,39 @@ "n_columns", 2, "border_width", border_width, NULL); - if (tooltips) - { - g_return_val_if_fail (GTK_IS_TOOLTIPS (tooltips), container); - - g_object_set_data_full (G_OBJECT (container), "GMask-tooltips", g_object_ref (tooltips), g_object_unref); - } if (dislodge_columns) g_object_set_data (G_OBJECT (container), "GMask-dislodge", GUINT_TO_POINTER (TRUE)); return container; } -gpointer +/** + * bst_gmask_form + * @gmask_container: container created with bst_gmask_container_create() + * @action: valid #GtkWidget + * @gpack: #BstGMaskPack packing type + * @RETURNS: a new GUI field mask + * + * Create a new GUI field mask with @action as action widget. + * Each GUI field mask consists of an action widget which may + * be neighboured by pre and post action widgets, the action + * widget is usually something like a #GtkEntry input widget. + * Also, most field masks have a prompt widget, usually a + * #GtkLabel, labeling the field mask with a name. + * Optionally, up to three auxillary widgets are supported + * per field mask, layed out between the prompt and the + * action widgets. + * The second auxillary widget will expand if additional + * space is available. Other layout details are configured + * through the @gpack packing type: + @* %BST_GMASK_FIT - the action widget is not expanded, + @* %BST_GMASK_FILL - the action widget can expand within the action column, + @* %BST_GMASK_INTERLEAVE - allow the action widget to expand across auxillary + * columns if it requests that much space, + @* %BST_GMASK_BIG - force expansion of the action widget across all possible + * columns up to the prompt. + */ +BstGMask* bst_gmask_form (GtkWidget *gmask_container, GtkWidget *action, BstGMaskPack gpack) @@ -487,8 +398,15 @@ return gmask_form (gmask_container, action, gpack); } +/** + * bst_gmask_set_tip + * @mask: valid #BstGMask + * @tip_text: tooltip text + * + * Set the tooltip text of this GUI field @mask. + */ void -bst_gmask_set_tip (gpointer mask, +bst_gmask_set_tip (BstGMask *mask, const gchar *tip_text) { GMask *gmask; @@ -501,9 +419,16 @@ gmask->tip = g_strdup (tip_text); } +/** + * bst_gmask_set_prompt + * @mask: valid #BstGMask + * @widget: valid #GtkWidget + * + * Set the prompt widget of this GUI field @mask. + */ void -bst_gmask_set_prompt (gpointer mask, - gpointer widget) +bst_gmask_set_prompt (BstGMask *mask, + gpointer widget) { GMask *gmask; @@ -518,9 +443,16 @@ gtk_object_sink (GTK_OBJECT (widget)); } +/** + * bst_gmask_set_aux1 + * @mask: valid #BstGMask + * @widget: valid #GtkWidget + * + * Set the first auxillary widget of this GUI field @mask. + */ void -bst_gmask_set_aux1 (gpointer mask, - gpointer widget) +bst_gmask_set_aux1 (BstGMask *mask, + gpointer widget) { GMask *gmask; @@ -535,9 +467,18 @@ gtk_object_sink (GTK_OBJECT (widget)); } +/** + * bst_gmask_set_aux2 + * @mask: valid #BstGMask + * @widget: valid #GtkWidget + * + * Set the second auxillary widget of this GUI field @mask. + * In contrast to the first and third auxillary widget, this + * one is expanded if extra space is available. + */ void -bst_gmask_set_aux2 (gpointer mask, - gpointer widget) +bst_gmask_set_aux2 (BstGMask *mask, + gpointer widget) { GMask *gmask; @@ -552,9 +493,16 @@ gtk_object_sink (GTK_OBJECT (widget)); } +/** + * bst_gmask_set_aux3 + * @mask: valid #BstGMask + * @widget: valid #GtkWidget + * + * Set the third auxillary widget of this GUI field @mask. + */ void -bst_gmask_set_aux3 (gpointer mask, - gpointer widget) +bst_gmask_set_aux3 (BstGMask *mask, + gpointer widget) { GMask *gmask; @@ -569,9 +517,16 @@ gtk_object_sink (GTK_OBJECT (widget)); } +/** + * bst_gmask_set_ahead + * @mask: valid #BstGMask + * @widget: valid #GtkWidget + * + * Set the pre action widget of this GUI field @mask. + */ void -bst_gmask_set_ahead (gpointer mask, - gpointer widget) +bst_gmask_set_ahead (BstGMask *mask, + gpointer widget) { GMask *gmask; @@ -586,9 +541,16 @@ gtk_object_sink (GTK_OBJECT (widget)); } +/** + * bst_gmask_set_atail + * @mask: valid #BstGMask + * @widget: valid #GtkWidget + * + * Set the post action widget of this GUI field @mask. + */ void -bst_gmask_set_atail (gpointer mask, - gpointer widget) +bst_gmask_set_atail (BstGMask *mask, + gpointer widget) { GMask *gmask; @@ -603,9 +565,17 @@ gtk_object_sink (GTK_OBJECT (widget)); } +/** + * bst_gmask_set_column + * @mask: valid #BstGMask + * @column: column number + * + * Set the field mask column. By default all field masks are + * packed into column 0, so that only vertical packing occours. + */ void -bst_gmask_set_column (gpointer mask, - guint column) +bst_gmask_set_column (BstGMask *mask, + guint column) { GMask *gmask; @@ -616,8 +586,15 @@ gmask->column = column; } +/** + * bst_gmask_get_prompt + * @mask: valid #BstGMask + * @RETURNS: the requested #GtkWidget or %NULL + * + * Retrieve the prompt widget of this GUI field @mask. + */ GtkWidget* -bst_gmask_get_prompt (gpointer mask) +bst_gmask_get_prompt (BstGMask *mask) { GMask *gmask; @@ -628,8 +605,15 @@ return gmask->prompt; } +/** + * bst_gmask_get_aux1 + * @mask: valid #BstGMask + * @RETURNS: the requested #GtkWidget or %NULL + * + * Retrieve the first auxillary widget of this GUI field @mask. + */ GtkWidget* -bst_gmask_get_aux1 (gpointer mask) +bst_gmask_get_aux1 (BstGMask *mask) { GMask *gmask; @@ -640,8 +624,15 @@ return gmask->aux1; } +/** + * bst_gmask_get_aux2 + * @mask: valid #BstGMask + * @RETURNS: the requested #GtkWidget or %NULL + * + * Retrieve the second auxillary widget of this GUI field @mask. + */ GtkWidget* -bst_gmask_get_aux2 (gpointer mask) +bst_gmask_get_aux2 (BstGMask *mask) { GMask *gmask; @@ -652,8 +643,15 @@ return gmask->aux2; } +/** + * bst_gmask_get_aux3 + * @mask: valid #BstGMask + * @RETURNS: the requested #GtkWidget or %NULL + * + * Retrieve the third auxillary widget of this GUI field @mask. + */ GtkWidget* -bst_gmask_get_aux3 (gpointer mask) +bst_gmask_get_aux3 (BstGMask *mask) { GMask *gmask; @@ -664,8 +662,15 @@ return gmask->aux3; } +/** + * bst_gmask_get_ahead + * @mask: valid #BstGMask + * @RETURNS: the requested #GtkWidget or %NULL + * + * Retrieve the pre action widget of this GUI field @mask. + */ GtkWidget* -bst_gmask_get_ahead (gpointer mask) +bst_gmask_get_ahead (BstGMask *mask) { GMask *gmask; @@ -676,8 +681,15 @@ return gmask->ahead; } +/** + * bst_gmask_get_action + * @mask: valid #BstGMask + * @RETURNS: the requested #GtkWidget or %NULL + * + * Retrieve the action widget of this GUI field @mask. + */ GtkWidget* -bst_gmask_get_action (gpointer mask) +bst_gmask_get_action (BstGMask *mask) { GMask *gmask; @@ -688,8 +700,15 @@ return gmask->action; } +/** + * bst_gmask_get_atail + * @mask: valid #BstGMask + * @RETURNS: the requested #GtkWidget or %NULL + * + * Retrieve the post action widget of this GUI field @mask. + */ GtkWidget* -bst_gmask_get_atail (gpointer mask) +bst_gmask_get_atail (BstGMask *mask) { GMask *gmask; @@ -700,10 +719,19 @@ return gmask->atail; } +/** + * bst_gmask_foreach + * @mask: valid #BstGMask + * @func: foreach function as: void func(GtkWidget*, gpointer data); + * @data: data passed in to @func + * + * Invoke @func() with each of the widgets set for this + * field mask. + */ void -bst_gmask_foreach (gpointer mask, - gpointer func, - gpointer data) +bst_gmask_foreach (BstGMask *mask, + gpointer func, + gpointer data) { GMask *gmask; GtkCallback callback = func; @@ -778,34 +806,44 @@ return max_bottom; } -/* GUI mask layout: - * row: |Prompt|Aux1| Aux2 |Aux3| PreAction#Action#PostAction| - * FILL: allocate all possible (Pre/Post)Action space to the action widget - * INTERLEAVE: allow the action widget to facilitate unused Aux2/Aux3 space - * BIG: allocate maximum (left extendeded) possible space to Action - * Aux2 expands automatically +/** + * bst_gmask_pack + * @mask: valid #BstGMask + * + * After the GUI field mask is fully configured, by setting + * all associated widgets on it, column tooltip text, etc., + * this function actually packs it into its container. The + * field mask setters shouldn't be used after this point. */ void -bst_gmask_pack (gpointer mask) +bst_gmask_pack (BstGMask *mask) { GtkWidget *prompt, *aux1, *aux2, *aux3, *ahead, *action, *atail; GtkTable *table; gboolean dummy_aux2 = FALSE; guint row, n, c, dislodge_columns; GMask *gmask; - + g_return_if_fail (GTK_IS_WIDGET (mask)); gmask = GMASK_GET (mask); g_return_if_fail (gmask != NULL); - + + /* GUI mask layout: + * row: |Prompt|Aux1| Aux2 |Aux3| PreAction#Action#PostAction| + * FILL: allocate all possible (Pre/Post)Action space to the action widget + * INTERLEAVE: allow the action widget to facilitate unused Aux2/Aux3 space + * BIG: allocate maximum (left extendeded) possible space to Action + * Aux2 expands automatically + */ + /* retrieve children and set tips */ - prompt = get_toplevel_and_set_tip (gmask->prompt, gmask->tooltips, gmask->tip); - aux1 = get_toplevel_and_set_tip (gmask->aux1, gmask->tooltips, gmask->tip); - aux2 = get_toplevel_and_set_tip (gmask->aux2, gmask->tooltips, gmask->tip); - aux3 = get_toplevel_and_set_tip (gmask->aux3, gmask->tooltips, gmask->tip); - ahead = get_toplevel_and_set_tip (gmask->ahead, gmask->tooltips, gmask->tip); - action = get_toplevel_and_set_tip (gmask->action, gmask->tooltips, gmask->tip); - atail = get_toplevel_and_set_tip (gmask->atail, gmask->tooltips, gmask->tip); + prompt = get_toplevel_and_set_tip (gmask->prompt, GXK_TOOLTIPS, gmask->tip); + aux1 = get_toplevel_and_set_tip (gmask->aux1, GXK_TOOLTIPS, gmask->tip); + aux2 = get_toplevel_and_set_tip (gmask->aux2, GXK_TOOLTIPS, gmask->tip); + aux3 = get_toplevel_and_set_tip (gmask->aux3, GXK_TOOLTIPS, gmask->tip); + ahead = get_toplevel_and_set_tip (gmask->ahead, GXK_TOOLTIPS, gmask->tip); + action = get_toplevel_and_set_tip (gmask->action, GXK_TOOLTIPS, gmask->tip); + atail = get_toplevel_and_set_tip (gmask->atail, GXK_TOOLTIPS, gmask->tip); dislodge_columns = g_object_get_data (G_OBJECT (gmask->parent), "GMask-dislodge") != NULL; table = GTK_TABLE (gmask->parent); @@ -922,14 +960,28 @@ gtk_table_set_col_spacing (table, c - 1, 5); /* spacing between columns */ } -gpointer +/** + * bst_gmask_quick + * @gmask_container: container created with bst_gmask_container_create() + * @column: column number for bst_gmask_set_column() + * @prompt: valid #GtkWidget for bst_gmask_set_prompt() + * @action: valid #GtkWidget as with bst_gmask_form() + * @tip_text: text for bst_gmask_set_tip() + * @RETURNS: an already packed GUI field mask + * + * Shorthand to form a GUI field mask in @column of type %BST_GMASK_FILL, + * with @prompt and @tip_text. Note that this function already calls + * bst_gmask_pack(), so the returned field mask already can't be modified + * anymore. + */ +BstGMask* bst_gmask_quick (GtkWidget *gmask_container, guint column, const gchar *prompt, - gpointer action_widget, + gpointer action, const gchar *tip_text) { - gpointer mask = bst_gmask_form (gmask_container, action_widget, BST_GMASK_FILL); + gpointer mask = bst_gmask_form (gmask_container, action, BST_GMASK_FILL); if (prompt) bst_gmask_set_prompt (mask, g_object_new (GTK_TYPE_LABEL, @@ -945,55 +997,6 @@ } -/* --- BEAST utilities --- */ -guint -bst_container_get_insertion_position (GtkContainer *container, - gboolean scan_horizontally, - gint xy, /* relative to container->allocation */ - GtkWidget *ignore_child, - gint *ignore_child_position) -{ - GList *list, *children; - GtkWidget *widget; - guint position = 0; - - g_return_val_if_fail (GTK_IS_CONTAINER (container), -1); - - widget = GTK_WIDGET (container); - - if (ignore_child_position) - *ignore_child_position = -1; - - if (GTK_WIDGET_NO_WINDOW (container)) - xy += scan_horizontally ? widget->allocation.x : widget->allocation.y; - - children = gtk_container_children (container); - for (list = children; list; list = list->next) - { - GtkWidget *child = list->data; - - if (child == ignore_child) - { - if (ignore_child_position) - *ignore_child_position = position; - continue; - } -#if 0 - if (!GTK_WIDGET_VISIBLE (child)) - continue; -#endif - if (scan_horizontally && xy < child->allocation.x + child->allocation.width / 2) - break; - else if (!scan_horizontally && xy < child->allocation.y + child->allocation.height / 2) - break; - position++; - } - g_list_free (children); - - return position; -} - - /* --- named children --- */ static GQuark quark_container_named_children = 0; typedef struct { diff -ruN beast-0.5.0/beast-gtk/bstutils.h beast-0.5.1/beast-gtk/bstutils.h --- beast-0.5.0/beast-gtk/bstutils.h 2003-03-10 11:05:51.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstutils.h 2003-04-01 06:47:40.000000000 +0200 @@ -1,5 +1,5 @@ /* BEAST - Bedevilled Audio System - * Copyright (C) 1998-2002 Tim Janik and Red Hat, Inc. + * Copyright (C) 1998-2003 Tim Janik * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -24,9 +24,7 @@ #include "bstdefs.h" #include "bstcluehunter.h" -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ +G_BEGIN_DECLS /* --- generated includes --- */ /* type IDs */ @@ -86,7 +84,7 @@ /* --- pixbuf shortcuts --- */ #define bst_pixbuf_no_icon() gxk_stock_fallback_pixbuf (BST_STOCK_NO_ICON) #define bst_pixbuf_knob() gxk_stock_fallback_pixbuf (BST_STOCK_KNOB) - +#define BST_PIXDATA_EMPTY1x1 "GdkP\0\0\0\34\1\1\0\2\0\0\0\4\0\0\0\1\0\0\0\1\0\0\0\0" /* retrieve static icons (no reference count needs) */ GtkWidget* bst_image_from_icon (BseIcon *icon, @@ -104,24 +102,13 @@ /* --- Gtk+ utilities & workarounds --- */ -#define GTK_TYPE_VPANED (gtk_vpaned_get_type ()) -#define GTK_TYPE_HPANED (gtk_hpaned_get_type ()) gboolean gtk_widget_viewable (GtkWidget *widget); -void bst_widget_request_aux_info (GtkWidget *viewport); -void gtk_file_selection_heal (GtkFileSelection *fs); -void gtk_clist_moveto_selection (GtkCList *clist); -gpointer gtk_clist_get_selection_data (GtkCList *clist, - guint index); void gtk_widget_viewable_changed (GtkWidget *widget); -#define gtk_notebook_current_widget(n) \ - gtk_notebook_get_nth_page ((n), gtk_notebook_get_current_page ((n))) - /* --- GUI field mask --- */ typedef struct _BstGMask BstGMask; -GtkWidget* bst_gmask_container_create (gpointer tooltips, - guint border_width, +GtkWidget* bst_gmask_container_create (guint border_width, gboolean dislodge_columns); typedef enum /*< skip >*/ { @@ -130,41 +117,41 @@ BST_GMASK_INTERLEAVE, /* stretch */ BST_GMASK_BIG } BstGMaskPack; -gpointer bst_gmask_form (GtkWidget *gmask_container, +BstGMask* bst_gmask_form (GtkWidget *gmask_container, GtkWidget *action, BstGMaskPack gpack); #define bst_gmask_form_big(c,a) bst_gmask_form ((c), (a), BST_GMASK_BIG) -void bst_gmask_set_tip (gpointer mask, +void bst_gmask_set_tip (BstGMask *mask, const gchar *tip_text); -void bst_gmask_set_prompt (gpointer mask, +void bst_gmask_set_prompt (BstGMask *mask, gpointer widget); -void bst_gmask_set_aux1 (gpointer mask, +void bst_gmask_set_aux1 (BstGMask *mask, gpointer widget); -void bst_gmask_set_aux2 (gpointer mask, +void bst_gmask_set_aux2 (BstGMask *mask, gpointer widget); -void bst_gmask_set_aux3 (gpointer mask, +void bst_gmask_set_aux3 (BstGMask *mask, gpointer widget); -void bst_gmask_set_ahead (gpointer mask, +void bst_gmask_set_ahead (BstGMask *mask, gpointer widget); -void bst_gmask_set_atail (gpointer mask, +void bst_gmask_set_atail (BstGMask *mask, gpointer widget); -void bst_gmask_set_column (gpointer mask, +void bst_gmask_set_column (BstGMask *mask, guint column); -GtkWidget* bst_gmask_get_prompt (gpointer mask); -GtkWidget* bst_gmask_get_aux1 (gpointer mask); -GtkWidget* bst_gmask_get_aux2 (gpointer mask); -GtkWidget* bst_gmask_get_aux3 (gpointer mask); -GtkWidget* bst_gmask_get_ahead (gpointer mask); -GtkWidget* bst_gmask_get_action (gpointer mask); -GtkWidget* bst_gmask_get_atail (gpointer mask); -void bst_gmask_foreach (gpointer mask, +GtkWidget* bst_gmask_get_prompt (BstGMask *mask); +GtkWidget* bst_gmask_get_aux1 (BstGMask *mask); +GtkWidget* bst_gmask_get_aux2 (BstGMask *mask); +GtkWidget* bst_gmask_get_aux3 (BstGMask *mask); +GtkWidget* bst_gmask_get_ahead (BstGMask *mask); +GtkWidget* bst_gmask_get_action (BstGMask *mask); +GtkWidget* bst_gmask_get_atail (BstGMask *mask); +void bst_gmask_foreach (BstGMask *mask, gpointer func, gpointer data); -void bst_gmask_pack (gpointer mask); -gpointer bst_gmask_quick (GtkWidget *gmask_container, +void bst_gmask_pack (BstGMask *mask); +BstGMask* bst_gmask_quick (GtkWidget *gmask_container, guint column, const gchar *prompt, - gpointer action_widget, + gpointer action, const gchar *tip_text); #define bst_gmask_set_sensitive(mask, sensitive) \ bst_gmask_foreach ((mask), \ @@ -177,11 +164,6 @@ /* --- BEAST utilities --- */ -guint bst_container_get_insertion_position (GtkContainer *container, - gboolean scan_horizontally, - gint xy, - GtkWidget *ignore_child, - gint *ignore_child_position); void bst_container_set_named_child (GtkWidget *container, GQuark qname, GtkWidget *child); @@ -194,12 +176,6 @@ /* --- internal --- */ void _bst_init_utils (void); - - - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ +G_END_DECLS #endif /* __BST_UTILS_H__ */ diff -ruN beast-0.5.0/beast-gtk/bstwavedialog.c beast-0.5.1/beast-gtk/bstwavedialog.c --- beast-0.5.0/beast-gtk/bstwavedialog.c 2003-03-10 05:40:02.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstwavedialog.c 2003-04-01 05:00:26.000000000 +0200 @@ -82,7 +82,7 @@ "signal::delete_event", gtk_widget_hide_on_delete, NULL, NULL); - gtk_file_selection_heal (GTK_FILE_SELECTION (wd)); + gxk_file_selection_heal (GTK_FILE_SELECTION (wd)); } static void diff -ruN beast-0.5.0/beast-gtk/bstwaveeditor.c beast-0.5.1/beast-gtk/bstwaveeditor.c --- beast-0.5.0/beast-gtk/bstwaveeditor.c 2003-03-10 11:28:36.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstwaveeditor.c 2003-04-01 06:41:05.000000000 +0200 @@ -186,7 +186,7 @@ gtk_paned_pack2 (GTK_PANED (paned), self->qsampler_parent, TRUE, TRUE); /* GUI mask container */ - self->gmask_parent = bst_gmask_container_create (BST_TOOLTIPS, 5, TRUE); + self->gmask_parent = bst_gmask_container_create (5, TRUE); gxk_nullify_on_destroy (self->gmask_parent, &self->gmask_parent); gtk_box_pack_start (GTK_BOX (self->main_vbox), self->gmask_parent, FALSE, TRUE, 0); diff -ruN beast-0.5.0/beast-gtk/bstxxutils.cc beast-0.5.1/beast-gtk/bstxxutils.cc --- beast-0.5.0/beast-gtk/bstxxutils.cc 1970-01-01 01:00:00.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstxxutils.cc 2003-04-13 22:54:44.000000000 +0200 @@ -0,0 +1,19 @@ +/* BEAST - Bedevilled Audio System + * Copyright (C) 2003 Tim Janik + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this program; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + */ +#include "bstxxutils.h" diff -ruN beast-0.5.0/beast-gtk/bstxxutils.h beast-0.5.1/beast-gtk/bstxxutils.h --- beast-0.5.0/beast-gtk/bstxxutils.h 1970-01-01 01:00:00.000000000 +0100 +++ beast-0.5.1/beast-gtk/bstxxutils.h 2003-04-13 22:54:22.000000000 +0200 @@ -0,0 +1,29 @@ +/* BEAST - Bedevilled Audio System + * Copyright (C) 2003 Tim Janik + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this program; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + */ +#ifndef __BST_XXUTILS_H__ +#define __BST_XXUTILS_H__ + +#include "bstutils.h" + +G_BEGIN_DECLS + + +G_END_DECLS + +#endif /* __BST_XXUTILS_H__ */ diff -ruN beast-0.5.0/beast-gtk/gxk/Makefile.am beast-0.5.1/beast-gtk/gxk/Makefile.am --- beast-0.5.0/beast-gtk/gxk/Makefile.am 2003-03-10 11:05:55.000000000 +0100 +++ beast-0.5.1/beast-gtk/gxk/Makefile.am 2003-03-31 12:09:33.000000000 +0200 @@ -16,13 +16,13 @@ noinst_LIBRARIES = libgxk.a gxk_headers = $(strip \ - gxkled.h gxkcanvas.h gxkdialog.h gxkglobals.h \ + gxkled.h gxkcanvas.h gxkdialog.h gxkglobals.h \ gxkstatusbar.h gxkstock.h gxktexttools.h gxklistwrapper.h \ gxktoolbar.h gxkutils.h gxkpolygon.h gxkcellrendererpopup.h \ gxk.h \ ) gxk_c_sources = $(strip \ - gxkled.c gxkcanvas.c gxkdialog.c gxkglobals.c \ + gxkled.c gxkcanvas.c gxkdialog.c gxkglobals.c \ gxkstatusbar.c gxkstock.c gxktexttools.c gxklistwrapper.c \ gxktoolbar.c gxkutils.c gxkpolygon.c gxkcellrendererpopup.c \ ) diff -ruN beast-0.5.0/beast-gtk/gxk/Makefile.in beast-0.5.1/beast-gtk/gxk/Makefile.in --- beast-0.5.0/beast-gtk/gxk/Makefile.in 2003-03-13 22:09:47.000000000 +0100 +++ beast-0.5.1/beast-gtk/gxk/Makefile.in 2003-04-14 00:12:35.000000000 +0200 @@ -73,6 +73,9 @@ BSE_MAJOR_VERSION = @BSE_MAJOR_VERSION@ BSE_MICRO_VERSION = @BSE_MICRO_VERSION@ BSE_MINOR_VERSION = @BSE_MINOR_VERSION@ +BSE_PC_CFLAGS = @BSE_PC_CFLAGS@ +BSE_PC_LIBS = @BSE_PC_LIBS@ +BSE_PC_REQUIRE = @BSE_PC_REQUIRE@ BSE_SHELL_CFLAGS = @BSE_SHELL_CFLAGS@ BSE_SHELL_LIBS = @BSE_SHELL_LIBS@ BSE_VERSION = @BSE_VERSION@ @@ -90,10 +93,7 @@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GROFF = @GROFF@ -GSL_CFLAGS = @GSL_CFLAGS@ GSL_HAVE_LIBMAD = @GSL_HAVE_LIBMAD@ -GSL_LIBS = @GSL_LIBS@ -GSL_OV_READ_FLOAT_ARGS = @GSL_OV_READ_FLOAT_ARGS@ GSL_SIZEOF_STD_INTMAX_T = @GSL_SIZEOF_STD_INTMAX_T@ GXK_CFLAGS = @GXK_CFLAGS@ GXK_LIBS = @GXK_LIBS@ @@ -129,6 +129,7 @@ beastdocsdir = @beastdocsdir@ beastimagesdir = @beastimagesdir@ beastsampledatadir = @beastsampledatadir@ +bseladspadir = @bseladspadir@ bseplugindir = @bseplugindir@ bsescriptdir = @bsescriptdir@ @@ -142,9 +143,9 @@ noinst_LIBRARIES = libgxk.a -gxk_headers = $(strip gxkled.h gxkcanvas.h gxkdialog.h gxkglobals.h gxkstatusbar.h gxkstock.h gxktexttools.h gxklistwrapper.h gxktoolbar.h gxkutils.h gxkpolygon.h gxkcellrendererpopup.h gxk.h ) +gxk_headers = $(strip gxkled.h gxkcanvas.h gxkdialog.h gxkglobals.h gxkstatusbar.h gxkstock.h gxktexttools.h gxklistwrapper.h gxktoolbar.h gxkutils.h gxkpolygon.h gxkcellrendererpopup.h gxk.h ) -gxk_c_sources = $(strip gxkled.c gxkcanvas.c gxkdialog.c gxkglobals.c gxkstatusbar.c gxkstock.c gxktexttools.c gxklistwrapper.c gxktoolbar.c gxkutils.c gxkpolygon.c gxkcellrendererpopup.c ) +gxk_c_sources = $(strip gxkled.c gxkcanvas.c gxkdialog.c gxkglobals.c gxkstatusbar.c gxkstock.c gxktexttools.c gxklistwrapper.c gxktoolbar.c gxkutils.c gxkpolygon.c gxkcellrendererpopup.c ) gxk_extra_sources = $(strip gxkmarshal.list ) @@ -396,7 +397,10 @@ || exit 1; \ fi; \ done -gxkcanvas.o: gxkcanvas.c gxkcanvas.h gxkglobals.h ../../sfi/glib-extra.h +gnome-canvas-pitbuf.o: gnome-canvas-pitbuf.c ../../config.h \ + gnome-canvas-pitbuf.h +gxkcanvas.o: gxkcanvas.c gxkcanvas.h gxkglobals.h ../../sfi/glib-extra.h \ + gxkutils.h gxkgentypes.h gxkmarshal.h gxkcellrendererpopup.o: gxkcellrendererpopup.c gxkcellrendererpopup.h gxkdialog.o: gxkdialog.c gxkdialog.h gxkutils.h gxkglobals.h \ ../../sfi/glib-extra.h gxkgentypes.h gxkmarshal.h gxkstock.h \ diff -ruN beast-0.5.0/beast-gtk/gxk/gxkcanvas.c beast-0.5.1/beast-gtk/gxk/gxkcanvas.c --- beast-0.5.0/beast-gtk/gxk/gxkcanvas.c 2003-03-10 05:40:03.000000000 +0100 +++ beast-0.5.1/beast-gtk/gxk/gxkcanvas.c 2003-03-31 11:58:21.000000000 +0200 @@ -17,6 +17,7 @@ * Boston, MA 02111-1307, USA. */ #include "gxkcanvas.h" +#include "gxkutils.h" /* --- functions --- */ @@ -154,6 +155,66 @@ } } +/** + * gnome_canvas_text_set_zoom_size + * @item: canvas text item + * @pixels: default font size + * + * Set the default font size in pixels of a canvas text + * item. The size will be adjusted when the canvas zoomed + * via gnome_canvas_set_zoom(). + */ +void +gnome_canvas_text_set_zoom_size (GnomeCanvasText *item, + gdouble pixels) +{ + g_return_if_fail (GNOME_IS_CANVAS_TEXT (item)); + + g_object_set (item, "size_points", pixels, NULL); + g_object_set_double (item, "zoom_size", pixels); +} + +static void +canvas_adjust_text_zoom (GnomeCanvasGroup *group, + gdouble pixels_per_unit) +{ + GList *list; + for (list = group->item_list; list; list = list->next) + { + GnomeCanvasItem *item = list->data; + if (GNOME_IS_CANVAS_TEXT (item)) + { + gdouble zoom_size = g_object_get_double (item, "zoom_size"); + if (zoom_size != 0) + g_object_set (item, "size_points", zoom_size * pixels_per_unit, NULL); + } + else if (GNOME_IS_CANVAS_GROUP (item)) + canvas_adjust_text_zoom (GNOME_CANVAS_GROUP (item), pixels_per_unit); + } +} + +/** + * gnome_canvas_set_zoom + * @canvas: valid #GnomeCanvas + * @pixels_per_unit: zoom factor (defaults to 1.0) + * + * This function calls gnome_canvas_set_pixels_per_unit() + * with its arguments and in addition adjusts the font sizes + * of all canvas text items where gnome_canvas_text_set_zoom_size() + * was used before. + */ +void +gnome_canvas_set_zoom (GnomeCanvas *canvas, + gdouble pixels_per_unit) +{ + g_return_if_fail (GNOME_IS_CANVAS (canvas)); + + /* adjust all text items */ + canvas_adjust_text_zoom (GNOME_CANVAS_GROUP (canvas->root), pixels_per_unit); + /* perform the actual zoom */ + gnome_canvas_set_pixels_per_unit (canvas, pixels_per_unit); +} + void gnome_canvas_FIXME_hard_update (GnomeCanvas *canvas) { diff -ruN beast-0.5.0/beast-gtk/gxk/gxkcanvas.h beast-0.5.1/beast-gtk/gxk/gxkcanvas.h --- beast-0.5.0/beast-gtk/gxk/gxkcanvas.h 2003-03-10 05:40:03.000000000 +0100 +++ beast-0.5.1/beast-gtk/gxk/gxkcanvas.h 2003-03-31 11:31:30.000000000 +0200 @@ -32,14 +32,18 @@ GtkType item_type, gdouble world_x, gdouble world_y); -guint gnome_canvas_item_get_stacking (GnomeCanvasItem *item); -void gnome_canvas_item_keep_between (GnomeCanvasItem *between, +guint gnome_canvas_item_get_stacking (GnomeCanvasItem *item); +void gnome_canvas_item_keep_between (GnomeCanvasItem *between, GnomeCanvasItem *item1, GnomeCanvasItem *item2); -void gnome_canvas_item_keep_above (GnomeCanvasItem *above, +void gnome_canvas_item_keep_above (GnomeCanvasItem *above, GnomeCanvasItem *item1, GnomeCanvasItem *item2); -void gnome_canvas_FIXME_hard_update (GnomeCanvas *canvas); +void gnome_canvas_text_set_zoom_size (GnomeCanvasText *item, + gdouble pixels); +void gnome_canvas_set_zoom (GnomeCanvas *canvas, + gdouble pixels_per_unit); +void gnome_canvas_FIXME_hard_update (GnomeCanvas *canvas); G_END_DECLS diff -ruN beast-0.5.0/beast-gtk/gxk/gxktexttools.c beast-0.5.1/beast-gtk/gxk/gxktexttools.c --- beast-0.5.0/beast-gtk/gxk/gxktexttools.c 2003-03-13 21:45:03.000000000 +0100 +++ beast-0.5.1/beast-gtk/gxk/gxktexttools.c 2003-04-06 20:06:53.000000000 +0200 @@ -30,6 +30,10 @@ #define GXK_IS_SCROLL_TEXT GTK_IS_VBOX +typedef struct { + gchar *url; + gdouble vpos; +} HEntry; /* History entry */ typedef struct { GtkWidget *sctext; @@ -41,9 +45,11 @@ gchar *path; gchar *file; gchar *anchor; - gchar *current; - GSList *gxkack; - GSList *fstack; + GtkAdjustment *vadjustment; + gdouble vert_frac; + HEntry *current; + GSList *back_stack; /* HEntry* */ + GSList *fore_stack; /* HEntry* */ } TextNavigation; @@ -1146,6 +1152,14 @@ } } +static void +tnav_update_vpos (GtkAdjustment *a, + TextNavigation *tnav) +{ + if (tnav->current) + tnav->current->vpos = a->value > a->lower ? (a->value - a->lower) / (a->upper - a->lower) : 0; +} + /** * gxk_scroll_text_create * @flags: scroll text flags @@ -1210,6 +1224,8 @@ { GtkWidget *button; TextNavigation *tnav = navigation_from_sctext (sctext); + tnav->vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scwin)); + g_object_connect (tnav->vadjustment, "signal::value_changed", tnav_update_vpos, tnav, NULL); g_signal_connect_swapped (tbuffer, "custom-activate", G_CALLBACK (gxk_scroll_text_advance), sctext); tnav->backb = gxk_toolbar_append_stock (tbar, GXK_TOOLBAR_BUTTON, "_Back", "Go back one page", GTK_STOCK_GO_BACK); g_object_connect (g_object_ref (tnav->backb), @@ -1585,7 +1601,8 @@ static void navigation_set_url (TextNavigation *tnav, - const gchar *src_url) + const gchar *src_url, + gdouble vert_frac) { gchar *p, *url = g_strdup (src_url), *buffer = url; @@ -1660,6 +1677,7 @@ } g_free (buffer); + tnav->vert_frac = vert_frac; } static gchar* @@ -1672,13 +1690,17 @@ } static void -navigation_clear_fstack (TextNavigation *tnav) +navigation_clear_fore_stack (TextNavigation *tnav) { GSList *slist; - for (slist = tnav->fstack; slist; slist = slist->next) - g_free (slist->data); - g_slist_free (tnav->fstack); - tnav->fstack = NULL; + for (slist = tnav->fore_stack; slist; slist = slist->next) + { + HEntry *hentry = slist->data; + g_free (hentry->url); + g_free (hentry); + } + g_slist_free (tnav->fore_stack); + tnav->fore_stack = NULL; } static void @@ -1686,12 +1708,12 @@ { /* handle sensitivity */ if (tnav->backb) - gtk_widget_set_sensitive (tnav->backb, tnav->gxkack != NULL); + gtk_widget_set_sensitive (tnav->backb, tnav->back_stack != NULL); if (tnav->forwardb) - gtk_widget_set_sensitive (tnav->forwardb, tnav->fstack != NULL); + gtk_widget_set_sensitive (tnav->forwardb, tnav->fore_stack != NULL); /* update location */ if (tnav->refe) - gtk_entry_set_text (GTK_ENTRY (tnav->refe), tnav->current); + gtk_entry_set_text (GTK_ENTRY (tnav->refe), tnav->current ? tnav->current->url : ""); } static void @@ -1710,11 +1732,19 @@ g_free (tnav->path); g_free (tnav->file); g_free (tnav->anchor); - g_free (tnav->current); - navigation_clear_fstack (tnav); - for (slist = tnav->gxkack; slist; slist = slist->next) - g_free (slist->data); - g_slist_free (tnav->gxkack); + if (tnav->current) + { + g_free (tnav->current->url); + g_free (tnav->current); + } + navigation_clear_fore_stack (tnav); + for (slist = tnav->back_stack; slist; slist = slist->next) + { + HEntry *hentry = slist->data; + g_free (hentry->url); + g_free (hentry); + } + g_slist_free (tnav->back_stack); g_free (tnav); } @@ -1790,6 +1820,23 @@ } } +static gboolean +adjust_vscroll_offset (gpointer data) +{ + GtkWidget *sctext = data; + TextNavigation *tnav; + GDK_THREADS_ENTER (); + tnav = navigation_from_sctext (sctext); + if (GTK_WIDGET_REALIZED (sctext) && tnav->vert_frac >= 0) + { + GtkAdjustment *a = tnav->vadjustment; + gdouble v = a->lower + tnav->vert_frac * (a->upper - a->lower); + gtk_adjustment_set_value (a, CLAMP (v, a->lower, a->upper - a->page_size)); + } + GDK_THREADS_LEAVE (); + return FALSE; +} + static void scroll_text_reload (GtkWidget *sctext) { @@ -1876,6 +1923,8 @@ g_free (loc); gxk_text_view_cursor_to_end (gxk_scroll_text_get_text_view (sctext)); } + if (tnav->vert_frac >= 0) + g_idle_add_full (G_PRIORITY_LOW + 100, adjust_vscroll_offset, g_object_ref (sctext), g_object_unref); } /** @@ -1896,7 +1945,7 @@ g_return_if_fail (uri != NULL); tnav = navigation_from_sctext (sctext); - navigation_set_url (tnav, uri); + navigation_set_url (tnav, uri, -1); scroll_text_reload (sctext); } @@ -1915,30 +1964,41 @@ const gchar *uri) { TextNavigation *tnav; + HEntry *last; g_return_if_fail (GXK_IS_SCROLL_TEXT (sctext)); g_return_if_fail (uri != NULL); tnav = navigation_from_sctext (sctext); /* handle history */ + last = tnav->back_stack ? tnav->back_stack->data : NULL; if (tnav->current) { - if (tnav->gxkack && strcmp (tnav->gxkack->data, tnav->current) == 0) - g_free (tnav->current); + if (last && strcmp (last->url, tnav->current->url) == 0) + { + g_free (tnav->current->url); + g_free (tnav->current); + } else - tnav->gxkack = g_slist_prepend (tnav->gxkack, tnav->current); + { + tnav->back_stack = g_slist_prepend (tnav->back_stack, tnav->current); + last = tnav->current; + } tnav->current = NULL; } - navigation_clear_fstack (tnav); + navigation_clear_fore_stack (tnav); /* set new uri */ - navigation_set_url (tnav, uri); + navigation_set_url (tnav, uri, -1); /* prepare for next history */ - tnav->current = navigation_strdup_url (tnav); + tnav->current = g_new (HEntry, 1); + tnav->current->url = navigation_strdup_url (tnav); + tnav->current->vpos = -1; /* dedup history */ - if (tnav->gxkack && strcmp (tnav->gxkack->data, tnav->current) == 0) + if (last && strcmp (last->url, tnav->current->url) == 0) { - g_free (tnav->gxkack->data); - tnav->gxkack = g_slist_delete_link (tnav->gxkack, tnav->gxkack); + last = g_slist_pop_head (&tnav->back_stack); + g_free (last->url); + g_free (last); } /* show away */ scroll_text_reload (sctext); @@ -2004,22 +2064,25 @@ g_return_if_fail (GXK_IS_SCROLL_TEXT (sctext)); tnav = navigation_from_sctext (sctext); - while (tnav->gxkack) + while (tnav->back_stack) { if (tnav->current) { - if (tnav->fstack && strcmp (tnav->fstack->data, tnav->current) == 0) - g_free (tnav->current); + HEntry *next = tnav->fore_stack ? tnav->fore_stack->data : NULL; + if (next && strcmp (next->url, tnav->current->url) == 0) + { + g_free (tnav->current->url); + g_free (tnav->current); + } else - tnav->fstack = g_slist_prepend (tnav->fstack, tnav->current); + tnav->fore_stack = g_slist_prepend (tnav->fore_stack, tnav->current); } - tnav->current = tnav->gxkack->data; - tnav->gxkack = g_slist_delete_link (tnav->gxkack, tnav->gxkack); + tnav->current = g_slist_pop_head (&tnav->back_stack); } if (tnav->current) { navigation_reset_url (tnav); - navigation_set_url (tnav, tnav->current); + navigation_set_url (tnav, tnav->current->url, -1); scroll_text_reload (sctext); } navigation_update_widgets (tnav); @@ -2030,19 +2093,22 @@ navigate_back (GtkWidget *sctext) { TextNavigation *tnav = navigation_from_sctext (sctext); - if (tnav->gxkack) + if (tnav->back_stack) { if (tnav->current) { - if (tnav->fstack && strcmp (tnav->fstack->data, tnav->current) == 0) - g_free (tnav->current); + HEntry *next = tnav->fore_stack ? tnav->fore_stack->data : NULL; + if (next && strcmp (next->url, tnav->current->url) == 0) + { + g_free (tnav->current->url); + g_free (tnav->current); + } else - tnav->fstack = g_slist_prepend (tnav->fstack, tnav->current); + tnav->fore_stack = g_slist_prepend (tnav->fore_stack, tnav->current); } - tnav->current = tnav->gxkack->data; - tnav->gxkack = g_slist_delete_link (tnav->gxkack, tnav->gxkack); + tnav->current = g_slist_pop_head (&tnav->back_stack); navigation_reset_url (tnav); - navigation_set_url (tnav, tnav->current); + navigation_set_url (tnav, tnav->current->url, tnav->current->vpos); scroll_text_reload (sctext); navigation_update_widgets (tnav); } @@ -2052,19 +2118,22 @@ navigate_forward (GtkWidget *sctext) { TextNavigation *tnav = navigation_from_sctext (sctext); - if (tnav->fstack) + if (tnav->fore_stack) { if (tnav->current) { - if (tnav->gxkack && strcmp (tnav->gxkack->data, tnav->current) == 0) - g_free (tnav->current); + HEntry *last = tnav->back_stack ? tnav->back_stack->data : NULL; + if (last && strcmp (last->url, tnav->current->url) == 0) + { + g_free (tnav->current->url); + g_free (tnav->current); + } else - tnav->gxkack = g_slist_prepend (tnav->gxkack, tnav->current); + tnav->back_stack = g_slist_prepend (tnav->back_stack, tnav->current); } - tnav->current = tnav->fstack->data; - tnav->fstack = g_slist_delete_link (tnav->fstack, tnav->fstack); + tnav->current = g_slist_pop_head (&tnav->fore_stack); navigation_reset_url (tnav); - navigation_set_url (tnav, tnav->current); + navigation_set_url (tnav, tnav->current->url, tnav->current->vpos); scroll_text_reload (sctext); navigation_update_widgets (tnav); } @@ -2086,6 +2155,8 @@ static void navigate_reload (GtkWidget *sctext) { + TextNavigation *tnav = navigation_from_sctext (sctext); + tnav->vert_frac = -1; scroll_text_reload (sctext); } diff -ruN beast-0.5.0/beast-gtk/gxk/gxkutils.c beast-0.5.1/beast-gtk/gxk/gxkutils.c --- beast-0.5.0/beast-gtk/gxk/gxkutils.c 2003-03-10 05:40:04.000000000 +0100 +++ beast-0.5.1/beast-gtk/gxk/gxkutils.c 2003-04-01 05:04:30.000000000 +0200 @@ -1,5 +1,5 @@ /* GXK - Gtk+ Extension Kit - * Copyright (C) 1998-2002 Tim Janik + * Copyright (C) 1998-2003 Tim Janik * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -75,6 +75,55 @@ } /** + * g_object_set_double + * @object: a valid GObject + * @name: name of the double value to set + * @v_double: the actual value + * + * Convenience variant of g_object_set_data() to set + * a double instead of a pointer. + */ +void +g_object_set_double (gpointer object, + const gchar *name, + gdouble v_double) +{ + gdouble zero = 0; + + g_return_if_fail (G_IS_OBJECT (object)); + + if (*(guint64*)&v_double == *(guint64*)&zero) + g_object_set_data (object, name, NULL); + else + { + gdouble *dp = g_new0 (gdouble, 1); + *dp = v_double; + g_object_set_data_full (object, name, dp, g_free); + } +} + +/** + * g_object_get_double + * @object: a valid GObject + * @name: name of the double value to retrieve + * @RETURNS: the actual value + * + * Convenience variant of g_object_get_data() to retrieve + * a double instead of a pointer. + */ +gdouble +g_object_get_double (gpointer object, + const gchar *name) +{ + gdouble *dp; + + g_return_val_if_fail (G_IS_OBJECT (object), 0); + + dp = g_object_get_data (object, name); + return dp ? *dp : 0; +} + +/** * g_object_set_long * @object: a valid GObject * @name: name of the long value to set @@ -294,6 +343,20 @@ } /** + * gtk_notebook_current_widget + * @notebook: valid #GtkNotebook + * @RETURNS: the widget corresponding to the current page + * + * This function is essentially a shortcut for + * gtk_notebook_get_current_page() and gtk_notebook_get_nth_page(). + */ +GtkWidget* +gtk_notebook_current_widget (GtkNotebook *notebook) +{ + return gtk_notebook_get_nth_page (notebook, gtk_notebook_get_current_page (notebook)); +} + +/** * gxk_widget_showraise * @widget: a valid widget * @@ -1596,7 +1659,15 @@ return path; } -#undef gtk_item_factory_get_item +/** + * gxk_item_factory_get_item + * @ifactory: valid #GtkItemFactory + * @path: item factory path + * @RETURNS: menu item according to @path + * + * This function strips unescaped underlines ('_') from @path + * and then calls gtk_item_factory_get_item(). + */ GtkWidget* gxk_item_factory_get_item (GtkItemFactory *ifactory, const gchar *path) @@ -1607,7 +1678,15 @@ return widget; } -#undef gtk_item_factory_get_widget +/** + * gxk_item_factory_get_widget + * @ifactory: valid #GtkItemFactory + * @path: item factory path + * @RETURNS: widget according to @path + * + * This function strips unescaped underlines ('_') from @path + * and then calls gtk_item_factory_get_widget(). + */ GtkWidget* gxk_item_factory_get_widget (GtkItemFactory *ifactory, const gchar *path) @@ -1617,3 +1696,99 @@ g_free (p); return widget; } + +static void +requisition_to_aux_info (GtkWidget *widget, + GtkRequisition *requisition) +{ + guint width = requisition->width; + guint height = requisition->height; + + /* we don't want the requisition to get too big */ + width = MIN (width, gdk_screen_width () / 2); + height = MIN (height, gdk_screen_height () / 2); + + gtk_widget_set_size_request (widget, width, height); +} + +/** + * gxk_widget_proxy_requisition + * @widget: valid #GtkWidget + * + * Proxy the size requisition of @widget through the + * ::width_request and ::height_request properties. + * This is usefull only for immediate children of a + * #GtkScrolledWindow, to have the #GtkScrolledWindow + * honour the widgets size requisition. + */ +void +gxk_widget_proxy_requisition (GtkWidget *widget) +{ + g_return_if_fail (GTK_IS_WIDGET (widget)); + + g_signal_handlers_disconnect_by_func (widget, requisition_to_aux_info, NULL); + g_signal_connect_after (widget, "size_request", G_CALLBACK (requisition_to_aux_info), NULL); +} + +/** + * gxk_file_selection_heal + * @fs: valid #GtkFileSelection + * + * Fixup various oddities that happened to the Gtk+ + * file selection widget over time. This function + * corrects container border widths, spacing, button + * placement and the default and focus widgets. + */ +void +gxk_file_selection_heal (GtkFileSelection *fs) +{ + GtkWidget *main_vbox; + GtkWidget *hbox; + GtkWidget *any; + + g_return_if_fail (GTK_IS_FILE_SELECTION (fs)); + + /* button placement + */ + gtk_container_set_border_width (GTK_CONTAINER (fs), 0); + gtk_file_selection_hide_fileop_buttons (fs); + gtk_widget_ref (fs->main_vbox); + gtk_container_remove (GTK_CONTAINER (fs), fs->main_vbox); + gtk_box_set_spacing (GTK_BOX (fs->main_vbox), 0); + gtk_container_set_border_width (GTK_CONTAINER (fs->main_vbox), 5); + main_vbox = gtk_widget_new (GTK_TYPE_VBOX, + "homogeneous", FALSE, + "spacing", 0, + "border_width", 0, + "parent", fs, + "visible", TRUE, + NULL); + gtk_box_pack_start (GTK_BOX (main_vbox), fs->main_vbox, TRUE, TRUE, 0); + gtk_widget_unref (fs->main_vbox); + gtk_widget_hide (fs->ok_button->parent); + hbox = gtk_widget_new (GTK_TYPE_HBOX, + "homogeneous", TRUE, + "spacing", 0, + "border_width", 5, + "visible", TRUE, + NULL); + gtk_box_pack_end (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0); + gtk_widget_reparent (fs->ok_button, hbox); + gtk_widget_reparent (fs->cancel_button, hbox); + gtk_widget_grab_default (fs->ok_button); + // gtk_label_set_text (GTK_LABEL (GTK_BIN (fs->ok_button)->child), "Ok"); + // gtk_label_set_text (GTK_LABEL (GTK_BIN (fs->cancel_button)->child), "Cancel"); + + /* heal the action_area packing so we can customize children + */ + gtk_box_set_child_packing (GTK_BOX (fs->action_area->parent), + fs->action_area, + FALSE, TRUE, + 5, GTK_PACK_START); + + any = gtk_widget_new (GTK_TYPE_HSEPARATOR, + "visible", TRUE, + NULL); + gtk_box_pack_end (GTK_BOX (main_vbox), any, FALSE, TRUE, 0); + gtk_widget_grab_focus (fs->selection_entry); +} diff -ruN beast-0.5.0/beast-gtk/gxk/gxkutils.h beast-0.5.1/beast-gtk/gxk/gxkutils.h --- beast-0.5.0/beast-gtk/gxk/gxkutils.h 2003-03-10 05:40:04.000000000 +0100 +++ beast-0.5.1/beast-gtk/gxk/gxkutils.h 2003-04-01 05:08:26.000000000 +0200 @@ -1,5 +1,5 @@ /* GXK - Gtk+ Extension Kit - * Copyright (C) 1998-2002 Tim Janik + * Copyright (C) 1998-2003 Tim Janik * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -30,15 +30,15 @@ #include -/* --- Gtk bug fixes --- */ +/* --- Gtk+ workarounds and amendments --- */ gboolean gxk_cell_editable_focus_out_handler (GtkCellEditable *ecell); -gboolean gxk_cell_editable_canceled (GtkCellEditable *ecell); -GtkWidget* gxk_item_factory_get_item (GtkItemFactory *ifactory, +gboolean gxk_cell_editable_canceled (GtkCellEditable *ecell); +GtkWidget* gxk_item_factory_get_item (GtkItemFactory *ifactory, const gchar *path); -GtkWidget* gxk_item_factory_get_widget (GtkItemFactory *ifactory, +GtkWidget* gxk_item_factory_get_widget (GtkItemFactory *ifactory, const gchar *path); -#define gtk_item_factory_get_item gxk_item_factory_get_item -#define gtk_item_factory_get_widget gxk_item_factory_get_widget +void gxk_widget_proxy_requisition (GtkWidget *widget); +void gxk_file_selection_heal (GtkFileSelection *fs); /* --- GObject convenience --- */ @@ -50,6 +50,11 @@ } GxkTypeGenerated; void gxk_type_register_generated (guint n_entries, const GxkTypeGenerated *entries); +void g_object_set_double (gpointer object, + const gchar *name, + gdouble v_double); +gdouble g_object_get_double (gpointer object, + const gchar *name); void g_object_set_long (gpointer object, const gchar *name, glong v_long); @@ -70,13 +75,14 @@ /* --- Gtk convenience --- */ +#define GTK_STYLE_THICKNESS(s,xy) ((s)-> xy##thickness) void gxk_widget_make_insensitive (GtkWidget *widget); void gxk_widget_make_sensitive (GtkWidget *widget); -#define GTK_STYLE_THICKNESS(s,xy) ((s)-> xy##thickness) void gxk_widget_showraise (GtkWidget *widget); void gxk_idle_show_widget (GtkWidget *widget); void gxk_notebook_set_current_page_widget (GtkNotebook *notebook, GtkWidget *page); +GtkWidget* gtk_notebook_current_widget (GtkNotebook *notebook); /* functions to affect a widget tree's toplevel */ void gxk_toplevel_delete (GtkWidget *widget); diff -ruN beast-0.5.0/beast-gtk/icons/Makefile.in beast-0.5.1/beast-gtk/icons/Makefile.in --- beast-0.5.0/beast-gtk/icons/Makefile.in 2003-03-13 22:09:48.000000000 +0100 +++ beast-0.5.1/beast-gtk/icons/Makefile.in 2003-04-14 00:12:36.000000000 +0200 @@ -73,6 +73,9 @@ BSE_MAJOR_VERSION = @BSE_MAJOR_VERSION@ BSE_MICRO_VERSION = @BSE_MICRO_VERSION@ BSE_MINOR_VERSION = @BSE_MINOR_VERSION@ +BSE_PC_CFLAGS = @BSE_PC_CFLAGS@ +BSE_PC_LIBS = @BSE_PC_LIBS@ +BSE_PC_REQUIRE = @BSE_PC_REQUIRE@ BSE_SHELL_CFLAGS = @BSE_SHELL_CFLAGS@ BSE_SHELL_LIBS = @BSE_SHELL_LIBS@ BSE_VERSION = @BSE_VERSION@ @@ -90,10 +93,7 @@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GROFF = @GROFF@ -GSL_CFLAGS = @GSL_CFLAGS@ GSL_HAVE_LIBMAD = @GSL_HAVE_LIBMAD@ -GSL_LIBS = @GSL_LIBS@ -GSL_OV_READ_FLOAT_ARGS = @GSL_OV_READ_FLOAT_ARGS@ GSL_SIZEOF_STD_INTMAX_T = @GSL_SIZEOF_STD_INTMAX_T@ GXK_CFLAGS = @GXK_CFLAGS@ GXK_LIBS = @GXK_LIBS@ @@ -129,6 +129,7 @@ beastdocsdir = @beastdocsdir@ beastimagesdir = @beastimagesdir@ beastsampledatadir = @beastsampledatadir@ +bseladspadir = @bseladspadir@ bseplugindir = @bseplugindir@ bsescriptdir = @bsescriptdir@ diff -ruN beast-0.5.0/beast-gtk/images/Makefile.am beast-0.5.1/beast-gtk/images/Makefile.am --- beast-0.5.0/beast-gtk/images/Makefile.am 2003-03-10 05:40:07.000000000 +0100 +++ beast-0.5.1/beast-gtk/images/Makefile.am 2003-04-13 17:09:13.000000000 +0200 @@ -5,6 +5,7 @@ public_images = @STRIP_BEGIN@ \ beast-mime.png \ + bse-mime.png \ beast-splash.png \ @STRIP_END@ private_images = @STRIP_BEGIN@ \ diff -ruN beast-0.5.0/beast-gtk/images/Makefile.in beast-0.5.1/beast-gtk/images/Makefile.in --- beast-0.5.0/beast-gtk/images/Makefile.in 2003-03-13 22:09:49.000000000 +0100 +++ beast-0.5.1/beast-gtk/images/Makefile.in 2003-04-14 00:12:36.000000000 +0200 @@ -73,6 +73,9 @@ BSE_MAJOR_VERSION = @BSE_MAJOR_VERSION@ BSE_MICRO_VERSION = @BSE_MICRO_VERSION@ BSE_MINOR_VERSION = @BSE_MINOR_VERSION@ +BSE_PC_CFLAGS = @BSE_PC_CFLAGS@ +BSE_PC_LIBS = @BSE_PC_LIBS@ +BSE_PC_REQUIRE = @BSE_PC_REQUIRE@ BSE_SHELL_CFLAGS = @BSE_SHELL_CFLAGS@ BSE_SHELL_LIBS = @BSE_SHELL_LIBS@ BSE_VERSION = @BSE_VERSION@ @@ -90,10 +93,7 @@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GROFF = @GROFF@ -GSL_CFLAGS = @GSL_CFLAGS@ GSL_HAVE_LIBMAD = @GSL_HAVE_LIBMAD@ -GSL_LIBS = @GSL_LIBS@ -GSL_OV_READ_FLOAT_ARGS = @GSL_OV_READ_FLOAT_ARGS@ GSL_SIZEOF_STD_INTMAX_T = @GSL_SIZEOF_STD_INTMAX_T@ GXK_CFLAGS = @GXK_CFLAGS@ GXK_LIBS = @GXK_LIBS@ @@ -129,10 +129,11 @@ beastdocsdir = @beastdocsdir@ beastimagesdir = @beastimagesdir@ beastsampledatadir = @beastsampledatadir@ +bseladspadir = @bseladspadir@ bseplugindir = @bseplugindir@ bsescriptdir = @bsescriptdir@ -public_images = @STRIP_BEGIN@ beast-mime.png beast-splash.png @STRIP_END@ +public_images = @STRIP_BEGIN@ beast-mime.png bse-mime.png beast-splash.png @STRIP_END@ private_images = @STRIP_BEGIN@ beast-logo.png beast.png @STRIP_END@ Binary files beast-0.5.0/beast-gtk/images/bse-mime.png and beast-0.5.1/beast-gtk/images/bse-mime.png differ diff -ruN beast-0.5.0/bse/ChangeLog beast-0.5.1/bse/ChangeLog --- beast-0.5.0/bse/ChangeLog 2003-03-13 21:30:26.000000000 +0100 +++ beast-0.5.1/bse/ChangeLog 2003-04-13 23:48:34.000000000 +0200 @@ -1,3 +1,75 @@ +Sun Apr 13 23:48:07 2003 Tim Janik + + * bsepcmdevice-oss.c (bse_pcm_device_oss_open): fallback to check + /dev/dsp[0-3] if /dev/dsp couldn't be opened. + +Fri Apr 11 14:10:07 2003 Tim Janik + + * bsemididevice-oss.c (bse_midi_device_oss_open): fallback to check + /dev/midi[0-3] if /dev/midi couldn't be opened. + +Sun Apr 6 13:56:09 2003 Tim Janik + + * bsesource.[hc]: added i/o channel identifier to public API. + fixed up bse_source_class_add_jchannel_ident() and + bse_source_class_add_ichannel_ident(). + + * bseladspamodule.c (bse_ladspa_module_class_init_from_info): + actually *use* the port identifier as identifier for i/o channels. + + * bseladspa.c (bse_ladspa_info_port_2str): complete flag list. + +Sat Apr 5 17:48:45 2003 Tim Janik + + * bseladspamodule.c: adjust property construction to better hinting + and pre-/post-process audio signals that have the rate_relative hint + set. + + * bseladspa.c (bse_ladspa_info_add_port): use the ladspa port index to + construct a unique port identifier instead of the port name, according + to a recommendation from Steve Harris . + + * bseladspa.[hc] (bse_ladspa_info_add_port): provide a sample rate + relative hint and set frequency hint if we have good indications for + a frequency control input port. + +Fri Apr 4 19:25:52 2003 Tim Janik + + * bseparasite.c (bse_parasite_restore): removed pre-0.5.0 compat + parsing code. + + * gsldatahandle-vorbis.c: require ogg/vorbis >= 1.0.0rc4 now. + + * bseutils.c: documentation fixes. + +Fri Apr 4 10:25:00 2003 Tim Janik + + * ladspa.h: added LADSPA API Version 1.1 header file. + + * bseladspa.[hc]: implemented BseLadspaInfo assembler and + GTypePlugin to load LADSPA plugins. + + * bseladspamodule.[hc]: implemented BseLadspaModule base type + and derived methods used by BseLadspaModule_* implementations. + a working LADSPA module is then derived from BseLadspaModule + using these methods and equipped with BseLadspaInfo. + + * bseserver.proc (register-plugins): register ladspa plugins after + registering BSE plugins. + + * gslopmaster.c (master_process_job): when integrating nodes, + flag suspension_update, so the scheduler updates their suspension + state. also, flag them initially as outputs_suspended, in order to + trigger reset() method activation prior to the first process() + call. + +Mon Mar 17 07:06:43 2003 Tim Janik + + * bsepcmdevice.[hc]: derive from BseItem, so device can later be valid + BseServer children and be exported through the middleware. + + * gslwaveosc.c: turn debugging prints into DEBUG() calls. + Thu Mar 13 21:30:14 2003 Tim Janik * Makefile.am (gslincludedir): install gsl headers under bse/. diff -ruN beast-0.5.0/bse/Makefile.am beast-0.5.1/bse/Makefile.am --- beast-0.5.0/bse/Makefile.am 2003-03-13 21:28:39.000000000 +0100 +++ beast-0.5.1/bse/Makefile.am 2003-04-02 13:06:12.000000000 +0200 @@ -42,71 +42,24 @@ # # BSE header files for public installation (non-generated) bse_public_h_sources = $(strip \ - bse.h \ - bseamplifier.h \ - bsebindata.h \ - bsebiquadfilter.h \ - bsecategories.h \ - bsecompat.h \ - bseconfig.h \ - bseconstant.h \ - bseconstvalues.h \ - bsecontainer.h \ - bsecontextmerger.h \ - bsedatapocket.h \ - bsedefs.h \ - bseeditablesample.h \ - bseenums.h \ - bseexports.h \ - bsegconfig.h \ - bseglobals.h \ - bseglue.h \ - bseitem.h \ - bsejanitor.h \ - bsemain.h \ - bsemath.h \ - bsemidiicontroller.h \ - bsemididevice.h \ - bsemididevice-null.h \ - bsemididevice-oss.h \ - bsemidievent.h \ - bsemidinotifier.h \ - bsemidireceiver.h \ - bsemidisynth.h \ - bseobject.h \ - bsepart.h \ - bsepcminput.h \ - bsepcmoutput.h \ - bseparam.h \ - bseparasite.h \ - bsepcmdevice.h \ - bsepcmdevice-oss.h \ - bseplugin.h \ - bseprocedure.h \ - bseproject.h \ - bsescripthelper.h \ - bseserver.h \ - bsesnet.h \ - bsesnooper.h \ - bsesong.h \ - bsessequencer.h \ - bsesource.h \ - bsestandardosc.h \ - bsestandardsynths.h \ - bsestorage.h \ - bsesubinstrument.h \ - bsesubiport.h \ - bsesubkeyboard.h \ - bsesuboport.h \ - bsesubsynth.h \ - bsesuper.h \ - bsetrack.h \ - bsetype.h \ - bseutils.h \ - bsemidivoice.h \ - bsewave.h \ - bsewaveosc.h \ - bsewaverepo.h \ + bse.h bsedefs.h bseexports.h bsecompat.h bseconfig.h ladspa.h \ + \ + bseamplifier.h bsebindata.h bsebiquadfilter.h bsecategories.h \ + bseconstant.h bseconstvalues.h bsecontainer.h bsecontextmerger.h \ + bsedatapocket.h bseeditablesample.h bseenums.h bsegconfig.h \ + bseglobals.h bseglue.h bseitem.h bsejanitor.h \ + bsemain.h bsemath.h bsemidiicontroller.h bsemididevice.h \ + bsemididevice-null.h bsemididevice-oss.h bsemidievent.h bsemidinotifier.h \ + bsemidireceiver.h bsemidisynth.h bseobject.h bsepart.h \ + bsepcminput.h bsepcmoutput.h bseparam.h bseparasite.h \ + bsepcmdevice.h bsepcmdevice-oss.h bseplugin.h bseladspa.h \ + bseprocedure.h bseproject.h bsescripthelper.h bseserver.h \ + bsesnet.h bsesnooper.h bsesong.h bsessequencer.h \ + bsesource.h bsestandardosc.h bsestandardsynths.h bsestorage.h \ + bsesubinstrument.h bsesubiport.h bsesubkeyboard.h bsesuboport.h \ + bsesubsynth.h bsesuper.h bsetrack.h bsetype.h \ + bseutils.h bsemidivoice.h bsewave.h bsewaveosc.h \ + bsewaverepo.h bseladspamodule.h \ ) # BSE header files that don't get installed bse_private_h_sources = $(strip \ @@ -114,66 +67,22 @@ # BSE C sources to build the library from bse_c_sources = $(strip \ $(GSL_C_SRC) \ - bseamplifier.c \ - bsebindata.c \ - bsebiquadfilter.c \ - bsecategories.c \ - bseconstant.c \ - bseconstvalues.c \ - bsecontainer.c \ - bsecontextmerger.c \ - bsedatapocket.c \ - bseeditablesample.c \ - bseenums.c \ - bsegconfig.c \ - bseglobals.c \ - bseglue.c \ - bseitem.c \ - bsejanitor.c \ - bsemain.c \ - bsemath.c \ - bsemidiicontroller.c \ - bsemididevice.c \ - bsemididevice-null.c \ - bsemididevice-oss.c \ - bsemidievent.c \ - bsemidinotifier.c \ - bsemidireceiver.c \ - bsemidisynth.c \ - bseobject.c \ - bsepart.c \ - bsepcminput.c \ - bsepcmoutput.c \ - bseparam.c \ - bseparasite.c \ - bsepcmdevice.c \ - bsepcmdevice-oss.c \ - bseplugin.c \ - bseprocedure.c \ - bseproject.c \ - bsescripthelper.c \ - bseserver.c \ - bsesnet.c \ - bsesnooper.c \ - bsesong.c \ - bsessequencer.c \ - bsesource.c \ - bsestandardosc.c \ - bsestandardsynths.c \ - bsestorage.c \ - bsesubinstrument.c \ - bsesubiport.c \ - bsesubkeyboard.c \ - bsesuboport.c \ - bsesubsynth.c \ - bsesuper.c \ - bsetrack.c \ - bsetype.c \ - bseutils.c \ - bsemidivoice.c \ - bsewave.c \ - bsewaveosc.c \ - bsewaverepo.c \ + bseamplifier.c bsebindata.c bsebiquadfilter.c bsecategories.c \ + bseconstant.c bseconstvalues.c bsecontainer.c bsecontextmerger.c \ + bsedatapocket.c bseeditablesample.c bseenums.c bsegconfig.c \ + bseglobals.c bseglue.c bseitem.c bsejanitor.c \ + bsemain.c bsemath.c bsemidiicontroller.c bsemididevice.c \ + bsemididevice-null.c bsemididevice-oss.c bsemidievent.c bsemidinotifier.c \ + bsemidireceiver.c bsemidisynth.c bseobject.c bsepart.c \ + bsepcminput.c bsepcmoutput.c bseparam.c bseparasite.c \ + bsepcmdevice.c bsepcmdevice-oss.c bseplugin.c bseladspa.c \ + bseprocedure.c bseproject.c bsescripthelper.c bseserver.c \ + bsesnet.c bsesnooper.c bsesong.c bsessequencer.c \ + bsesource.c bsestandardosc.c bsestandardsynths.c bsestorage.c \ + bsesubinstrument.c bsesubiport.c bsesubkeyboard.c bsesuboport.c \ + bsesubsynth.c bsesuper.c bsetrack.c bsetype.c \ + bseutils.c bsemidivoice.c bsewave.c bsewaveosc.c \ + bsewaverepo.c bseladspamodule.c \ ) # procedure sources bse_proc_sources = $(strip \ diff -ruN beast-0.5.0/bse/Makefile.in beast-0.5.1/bse/Makefile.in --- beast-0.5.0/bse/Makefile.in 2003-03-13 22:09:34.000000000 +0100 +++ beast-0.5.1/bse/Makefile.in 2003-04-14 00:12:33.000000000 +0200 @@ -94,6 +94,9 @@ BSE_MAJOR_VERSION = @BSE_MAJOR_VERSION@ BSE_MICRO_VERSION = @BSE_MICRO_VERSION@ BSE_MINOR_VERSION = @BSE_MINOR_VERSION@ +BSE_PC_CFLAGS = @BSE_PC_CFLAGS@ +BSE_PC_LIBS = @BSE_PC_LIBS@ +BSE_PC_REQUIRE = @BSE_PC_REQUIRE@ BSE_SHELL_CFLAGS = @BSE_SHELL_CFLAGS@ BSE_SHELL_LIBS = @BSE_SHELL_LIBS@ BSE_VERSION = @BSE_VERSION@ @@ -111,10 +114,7 @@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GROFF = @GROFF@ -GSL_CFLAGS = @GSL_CFLAGS@ GSL_HAVE_LIBMAD = @GSL_HAVE_LIBMAD@ -GSL_LIBS = @GSL_LIBS@ -GSL_OV_READ_FLOAT_ARGS = @GSL_OV_READ_FLOAT_ARGS@ GSL_SIZEOF_STD_INTMAX_T = @GSL_SIZEOF_STD_INTMAX_T@ GXK_CFLAGS = @GXK_CFLAGS@ GXK_LIBS = @GXK_LIBS@ @@ -150,6 +150,7 @@ beastdocsdir = @beastdocsdir@ beastimagesdir = @beastimagesdir@ beastsampledatadir = @beastsampledatadir@ +bseladspadir = @bseladspadir@ bseplugindir = @bseplugindir@ bsescriptdir = @bsescriptdir@ @@ -181,13 +182,13 @@ # setup source file variables # # BSE header files for public installation (non-generated) -bse_public_h_sources = $(strip bse.h bseamplifier.h bsebindata.h bsebiquadfilter.h bsecategories.h bsecompat.h bseconfig.h bseconstant.h bseconstvalues.h bsecontainer.h bsecontextmerger.h bsedatapocket.h bsedefs.h bseeditablesample.h bseenums.h bseexports.h bsegconfig.h bseglobals.h bseglue.h bseitem.h bsejanitor.h bsemain.h bsemath.h bsemidiicontroller.h bsemididevice.h bsemididevice-null.h bsemididevice-oss.h bsemidievent.h bsemidinotifier.h bsemidireceiver.h bsemidisynth.h bseobject.h bsepart.h bsepcminput.h bsepcmoutput.h bseparam.h bseparasite.h bsepcmdevice.h bsepcmdevice-oss.h bseplugin.h bseprocedure.h bseproject.h bsescripthelper.h bseserver.h bsesnet.h bsesnooper.h bsesong.h bsessequencer.h bsesource.h bsestandardosc.h bsestandardsynths.h bsestorage.h bsesubinstrument.h bsesubiport.h bsesubkeyboard.h bsesuboport.h bsesubsynth.h bsesuper.h bsetrack.h bsetype.h bseutils.h bsemidivoice.h bsewave.h bsewaveosc.h bsewaverepo.h ) +bse_public_h_sources = $(strip bse.h bsedefs.h bseexports.h bsecompat.h bseconfig.h ladspa.h bseamplifier.h bsebindata.h bsebiquadfilter.h bsecategories.h bseconstant.h bseconstvalues.h bsecontainer.h bsecontextmerger.h bsedatapocket.h bseeditablesample.h bseenums.h bsegconfig.h bseglobals.h bseglue.h bseitem.h bsejanitor.h bsemain.h bsemath.h bsemidiicontroller.h bsemididevice.h bsemididevice-null.h bsemididevice-oss.h bsemidievent.h bsemidinotifier.h bsemidireceiver.h bsemidisynth.h bseobject.h bsepart.h bsepcminput.h bsepcmoutput.h bseparam.h bseparasite.h bsepcmdevice.h bsepcmdevice-oss.h bseplugin.h bseladspa.h bseprocedure.h bseproject.h bsescripthelper.h bseserver.h bsesnet.h bsesnooper.h bsesong.h bsessequencer.h bsesource.h bsestandardosc.h bsestandardsynths.h bsestorage.h bsesubinstrument.h bsesubiport.h bsesubkeyboard.h bsesuboport.h bsesubsynth.h bsesuper.h bsetrack.h bsetype.h bseutils.h bsemidivoice.h bsewave.h bsewaveosc.h bsewaverepo.h bseladspamodule.h ) # BSE header files that don't get installed bse_private_h_sources = $(strip ) # BSE C sources to build the library from -bse_c_sources = $(strip $(GSL_C_SRC) bseamplifier.c bsebindata.c bsebiquadfilter.c bsecategories.c bseconstant.c bseconstvalues.c bsecontainer.c bsecontextmerger.c bsedatapocket.c bseeditablesample.c bseenums.c bsegconfig.c bseglobals.c bseglue.c bseitem.c bsejanitor.c bsemain.c bsemath.c bsemidiicontroller.c bsemididevice.c bsemididevice-null.c bsemididevice-oss.c bsemidievent.c bsemidinotifier.c bsemidireceiver.c bsemidisynth.c bseobject.c bsepart.c bsepcminput.c bsepcmoutput.c bseparam.c bseparasite.c bsepcmdevice.c bsepcmdevice-oss.c bseplugin.c bseprocedure.c bseproject.c bsescripthelper.c bseserver.c bsesnet.c bsesnooper.c bsesong.c bsessequencer.c bsesource.c bsestandardosc.c bsestandardsynths.c bsestorage.c bsesubinstrument.c bsesubiport.c bsesubkeyboard.c bsesuboport.c bsesubsynth.c bsesuper.c bsetrack.c bsetype.c bseutils.c bsemidivoice.c bsewave.c bsewaveosc.c bsewaverepo.c ) +bse_c_sources = $(strip $(GSL_C_SRC) bseamplifier.c bsebindata.c bsebiquadfilter.c bsecategories.c bseconstant.c bseconstvalues.c bsecontainer.c bsecontextmerger.c bsedatapocket.c bseeditablesample.c bseenums.c bsegconfig.c bseglobals.c bseglue.c bseitem.c bsejanitor.c bsemain.c bsemath.c bsemidiicontroller.c bsemididevice.c bsemididevice-null.c bsemididevice-oss.c bsemidievent.c bsemidinotifier.c bsemidireceiver.c bsemidisynth.c bseobject.c bsepart.c bsepcminput.c bsepcmoutput.c bseparam.c bseparasite.c bsepcmdevice.c bsepcmdevice-oss.c bseplugin.c bseladspa.c bseprocedure.c bseproject.c bsescripthelper.c bseserver.c bsesnet.c bsesnooper.c bsesong.c bsessequencer.c bsesource.c bsestandardosc.c bsestandardsynths.c bsestorage.c bsesubinstrument.c bsesubiport.c bsesubkeyboard.c bsesuboport.c bsesubsynth.c bsesuper.c bsetrack.c bsetype.c bseutils.c bsemidivoice.c bsewave.c bsewaveosc.c bsewaverepo.c bseladspamodule.c ) # procedure sources bse_proc_sources = $(strip bsecategories.proc bsecontainer.proc bsedatapocket.proc bseeditablesample.proc bseenums.proc bsehelloworld.proc bsemidinotifier.proc bsejanitor.proc bseobject.proc bsepart.proc bseprocedure.proc bseproject.proc bsescripthelper.proc bseserver.proc bsesong.proc bsesource.proc bsesnet.proc bsetrack.proc bseitem.proc bsewave.proc bsewaveosc.proc bsewaverepo.proc ) @@ -297,13 +298,14 @@ bsemididevice-null.lo bsemididevice-oss.lo bsemidievent.lo \ bsemidinotifier.lo bsemidireceiver.lo bsemidisynth.lo bseobject.lo \ bsepart.lo bsepcminput.lo bsepcmoutput.lo bseparam.lo bseparasite.lo \ -bsepcmdevice.lo bsepcmdevice-oss.lo bseplugin.lo bseprocedure.lo \ -bseproject.lo bsescripthelper.lo bseserver.lo bsesnet.lo bsesnooper.lo \ -bsesong.lo bsessequencer.lo bsesource.lo bsestandardosc.lo \ -bsestandardsynths.lo bsestorage.lo bsesubinstrument.lo bsesubiport.lo \ -bsesubkeyboard.lo bsesuboport.lo bsesubsynth.lo bsesuper.lo bsetrack.lo \ -bsetype.lo bseutils.lo bsemidivoice.lo bsewave.lo bsewaveosc.lo \ -bsewaverepo.lo bsecategories.gen-proc.lo bsecontainer.gen-proc.lo \ +bsepcmdevice.lo bsepcmdevice-oss.lo bseplugin.lo bseladspa.lo \ +bseprocedure.lo bseproject.lo bsescripthelper.lo bseserver.lo \ +bsesnet.lo bsesnooper.lo bsesong.lo bsessequencer.lo bsesource.lo \ +bsestandardosc.lo bsestandardsynths.lo bsestorage.lo \ +bsesubinstrument.lo bsesubiport.lo bsesubkeyboard.lo bsesuboport.lo \ +bsesubsynth.lo bsesuper.lo bsetrack.lo bsetype.lo bseutils.lo \ +bsemidivoice.lo bsewave.lo bsewaveosc.lo bsewaverepo.lo \ +bseladspamodule.lo bsecategories.gen-proc.lo bsecontainer.gen-proc.lo \ bsedatapocket.gen-proc.lo bseenums.gen-proc.lo \ bseeditablesample.gen-proc.lo bsehelloworld.gen-proc.lo \ bsemidinotifier.gen-proc.lo bsejanitor.gen-proc.lo \ @@ -833,13 +835,14 @@ ../sfi/sfiserial.h ../sfi/sfitime.h ../sfi/sfiustore.h \ ../sfi/sfivmarshal.h ../sfi/sfistore.h ../sfi/sficomwire.h \ bsegentypes.h gsldefs.h gslconfig.h gslcommon.h \ - bseenum_arrays.c bsebindata.h bseobject.h bseparam.h bseutils.h \ - bseenums.h bseglobals.h bsemath.h bseconstvalues.h bsecompat.h \ + bseenum_arrays.c bseexports.h bseprocedure.h bseparam.h \ + bseutils.h bseenums.h bseglobals.h bsemath.h bseconstvalues.h \ + bsecompat.h bseconfig.h bsebindata.h bseobject.h \ bsebiquadfilter.h bsesource.h bseitem.h gslfilter.h gslmath.h \ - gslieee754.h bseexports.h bseprocedure.h bseconfig.h \ - bseglobals.h bsemidievent.h bseproject.h bsecontainer.h \ - bsessequencer.h bsesong.h bsesnet.h bsesuper.h bsepart.h \ - bsestandardosc.h gsloscillator.h gslosctable.h bseenum_list.c + gslieee754.h bseglobals.h bsemidievent.h bseproject.h \ + bsecontainer.h bsessequencer.h bsesong.h bsesnet.h bsesuper.h \ + bsepart.h bsestandardosc.h gsloscillator.h gslosctable.h \ + bseenum_list.c bsegconfig.lo bsegconfig.o : bsegconfig.c bsegconfig.h bseobject.h \ bseparam.h bsetype.h bsedefs.h ../sfi/sfi.h ../sfi/sficomport.h \ ../sfi/sfithreads.h ../sfi/sfitypes.h ../sfi/glib-extra.h \ @@ -950,6 +953,31 @@ bseglue.h bseserver.h bsesuper.h bsecontainer.h bsesource.h \ bsepcmdevice.h bsemididevice.h bsemidievent.h bsecontainer.h \ bseprocedure.h bsescripthelper.h bseprocedure.h +bseladspa.lo bseladspa.o : bseladspa.c bseladspa.h bseutils.h bseenums.h \ + bsetype.h bsedefs.h ../sfi/sfi.h ../sfi/sficomport.h \ + ../sfi/sfithreads.h ../sfi/sfitypes.h ../sfi/glib-extra.h \ + ../sfi/sficonfig.h ../sfi/sfiglue.h ../sfi/sfiprimitives.h \ + ../sfi/sfivalues.h ../sfi/sfiparams.h ../sfi/sfigluecodec.h \ + ../sfi/sfiglueproxy.h ../sfi/sfilog.h ../sfi/sfimemory.h \ + ../sfi/sfinote.h ../sfi/sfiserial.h ../sfi/sfitime.h \ + ../sfi/sfiustore.h ../sfi/sfivmarshal.h ../sfi/sfistore.h \ + ../sfi/sficomwire.h bsegentypes.h gsldefs.h gslconfig.h \ + bseglobals.h bsemath.h bseconstvalues.h bsecompat.h \ + bseladspamodule.h bsesource.h bseitem.h bseobject.h bseparam.h \ + bseladspa.h bsecategories.h ladspa.h +bseladspamodule.lo bseladspamodule.o : bseladspamodule.c \ + bseladspamodule.h bsesource.h bseitem.h bseobject.h bseparam.h \ + bsetype.h bsedefs.h ../sfi/sfi.h ../sfi/sficomport.h \ + ../sfi/sfithreads.h ../sfi/sfitypes.h ../sfi/glib-extra.h \ + ../sfi/sficonfig.h ../sfi/sfiglue.h ../sfi/sfiprimitives.h \ + ../sfi/sfivalues.h ../sfi/sfiparams.h ../sfi/sfigluecodec.h \ + ../sfi/sfiglueproxy.h ../sfi/sfilog.h ../sfi/sfimemory.h \ + ../sfi/sfinote.h ../sfi/sfiserial.h ../sfi/sfitime.h \ + ../sfi/sfiustore.h ../sfi/sfivmarshal.h ../sfi/sfistore.h \ + ../sfi/sficomwire.h bsegentypes.h bseutils.h bseenums.h \ + gsldefs.h gslconfig.h bseglobals.h bsemath.h bseconstvalues.h \ + bsecompat.h bseladspa.h bsecategories.h gslengine.h gslsignal.h \ + gslieee754.h gslmath.h bsemagictest.o: bsemagictest.c bsemain.h bseglobals.h bsedefs.h \ ../sfi/sfi.h ../sfi/sficomport.h ../sfi/sfithreads.h \ ../sfi/sfitypes.h ../sfi/glib-extra.h ../sfi/sficonfig.h \ @@ -1163,7 +1191,7 @@ ../sfi/sfiustore.h ../sfi/sfivmarshal.h ../sfi/sfistore.h \ ../sfi/sficomwire.h bsegentypes.h bseutils.h bseenums.h \ gsldefs.h gslconfig.h bseglobals.h bsemath.h bseconstvalues.h \ - bsecompat.h bsestorage.h bsesource.h bseitem.h + bsecompat.h bsestorage.h bsepart.gen-proc.lo bsepart.gen-proc.o : bsepart.gen-proc.c bseplugin.h \ bse.h ../sfi/sfi.h ../sfi/sficomport.h ../sfi/sfithreads.h \ ../sfi/sfitypes.h ../sfi/glib-extra.h ../sfi/sficonfig.h \ @@ -1190,8 +1218,8 @@ bsecompat.h bsemain.h bse.h bseconfig.h bsestorage.h \ gslcommon.h bsepcmdevice-oss.lo bsepcmdevice-oss.o : bsepcmdevice-oss.c \ - bsepcmdevice-oss.h bsepcmdevice.h bseobject.h bseparam.h \ - bsetype.h bsedefs.h ../sfi/sfi.h ../sfi/sficomport.h \ + bsepcmdevice-oss.h bsepcmdevice.h bseitem.h bseobject.h \ + bseparam.h bsetype.h bsedefs.h ../sfi/sfi.h ../sfi/sficomport.h \ ../sfi/sfithreads.h ../sfi/sfitypes.h ../sfi/glib-extra.h \ ../sfi/sficonfig.h ../sfi/sfiglue.h ../sfi/sfiprimitives.h \ ../sfi/sfivalues.h ../sfi/sfiparams.h ../sfi/sfigluecodec.h \ @@ -1202,7 +1230,7 @@ gsldefs.h gslconfig.h bseglobals.h bsemath.h bseconstvalues.h \ bsecompat.h ../PKG_config.h ../PKG_paths.h gsldatautils.h \ gslmath.h gslieee754.h gsldatahandle.h gslcommon.h -bsepcmdevice.lo bsepcmdevice.o : bsepcmdevice.c bsepcmdevice.h \ +bsepcmdevice.lo bsepcmdevice.o : bsepcmdevice.c bsepcmdevice.h bseitem.h \ bseobject.h bseparam.h bsetype.h bsedefs.h ../sfi/sfi.h \ ../sfi/sficomport.h ../sfi/sfithreads.h ../sfi/sfitypes.h \ ../sfi/glib-extra.h ../sfi/sficonfig.h ../sfi/sfiglue.h \ @@ -1380,7 +1408,7 @@ bsemididevice.h bsemidievent.h bseproject.h gslloader.h \ gslcommon.h gslwavechunk.h gsldatacache.h bsemidinotifier.h \ bsemidireceiver.h bsejanitor.h bsescripthelper.h bsegconfig.h \ - ../PKG_config.h ../PKG_paths.h + bseladspa.h ../PKG_config.h ../PKG_paths.h bseserver.lo bseserver.o : bseserver.c bseserver.h bsesuper.h \ bsecontainer.h bsesource.h bseitem.h bseobject.h bseparam.h \ bsetype.h bsedefs.h ../sfi/sfi.h ../sfi/sficomport.h \ @@ -2208,7 +2236,6 @@ echo "/* Generated data from $< (by make $@) */" > xgen-gch \ && echo >> xgen-gch \ && echo "#define GSL_SIZEOF_STD_INTMAX_T (@GSL_SIZEOF_STD_INTMAX_T@)" >> xgen-gch \ - && echo "#define GSL_OV_READ_FLOAT_ARGS (@GSL_OV_READ_FLOAT_ARGS@)" >> xgen-gch \ && echo "#define GSL_HAVE_LIBMAD (@GSL_HAVE_LIBMAD@)" >> xgen-gch \ && echo >> xgen-gch \ && echo "/* Generated data ends here */" >> xgen-gch \ diff -ruN beast-0.5.0/bse/bsebuiltin_array.c beast-0.5.1/bse/bsebuiltin_array.c --- beast-0.5.0/bse/bsebuiltin_array.c 2003-03-13 20:57:29.000000000 +0100 +++ beast-0.5.1/bse/bsebuiltin_array.c 2003-04-13 21:13:56.000000000 +0200 @@ -3,27 +3,27 @@ ** Generated data (by mkbuiltinlist.pl --array) **/ BSE_EXPORT_IMPL_L (bsehelloworld_gen_proc), + BSE_EXPORT_IMPL_L (bsewaverepo_gen_proc), + BSE_EXPORT_IMPL_L (bsemidinotifier_gen_proc), BSE_EXPORT_IMPL_L (bsetrack_gen_proc), - BSE_EXPORT_IMPL_L (bseeditablesample_gen_proc), + BSE_EXPORT_IMPL_L (bsesnet_gen_proc), + BSE_EXPORT_IMPL_L (bsesong_gen_proc), BSE_EXPORT_IMPL_L (bsewave_gen_proc), - BSE_EXPORT_IMPL_L (bseserver_gen_proc), - BSE_EXPORT_IMPL_L (bseitem_gen_proc), - BSE_EXPORT_IMPL_L (bsedatapocket_gen_proc), + BSE_EXPORT_IMPL_L (bsecontainer_gen_proc), + BSE_EXPORT_IMPL_L (bsejanitor_gen_proc), + BSE_EXPORT_IMPL_L (bsepart_gen_proc), BSE_EXPORT_IMPL_L (bseobject_gen_proc), - BSE_EXPORT_IMPL_L (bsesnet_gen_proc), + BSE_EXPORT_IMPL_L (bseitem_gen_proc), + BSE_EXPORT_IMPL_L (bseserver_gen_proc), + BSE_EXPORT_IMPL_L (bsesource_gen_proc), + BSE_EXPORT_IMPL_L (bsewaveosc_gen_proc), BSE_EXPORT_IMPL_L (bseproject_gen_proc), BSE_EXPORT_IMPL_L (bseenums_gen_proc), + BSE_EXPORT_IMPL_L (bseeditablesample_gen_proc), BSE_EXPORT_IMPL_L (bsescripthelper_gen_proc), BSE_EXPORT_IMPL_L (bsecategories_gen_proc), - BSE_EXPORT_IMPL_L (bsesource_gen_proc), - BSE_EXPORT_IMPL_L (bsewaverepo_gen_proc), - BSE_EXPORT_IMPL_L (bsejanitor_gen_proc), - BSE_EXPORT_IMPL_L (bsepart_gen_proc), - BSE_EXPORT_IMPL_L (bsecontainer_gen_proc), - BSE_EXPORT_IMPL_L (bsemidinotifier_gen_proc), - BSE_EXPORT_IMPL_L (bsesong_gen_proc), - BSE_EXPORT_IMPL_L (bsewaveosc_gen_proc), BSE_EXPORT_IMPL_L (bseprocedure_gen_proc), + BSE_EXPORT_IMPL_L (bsedatapocket_gen_proc), /** ** Generated data ends here diff -ruN beast-0.5.0/bse/bsebuiltin_externs.c beast-0.5.1/bse/bsebuiltin_externs.c --- beast-0.5.0/bse/bsebuiltin_externs.c 2003-03-13 20:57:29.000000000 +0100 +++ beast-0.5.1/bse/bsebuiltin_externs.c 2003-04-13 21:13:56.000000000 +0200 @@ -6,29 +6,47 @@ /* --- bsehelloworld.gen-proc.c --- */ extern BSE_EXPORT_IMPL_F (bsehelloworld_gen_proc); +/* --- bsewaverepo.gen-proc.c --- */ +extern BSE_EXPORT_IMPL_F (bsewaverepo_gen_proc); + +/* --- bsemidinotifier.gen-proc.c --- */ +extern BSE_EXPORT_IMPL_F (bsemidinotifier_gen_proc); + /* --- bsetrack.gen-proc.c --- */ extern BSE_EXPORT_IMPL_F (bsetrack_gen_proc); -/* --- bseeditablesample.gen-proc.c --- */ -extern BSE_EXPORT_IMPL_F (bseeditablesample_gen_proc); +/* --- bsesnet.gen-proc.c --- */ +extern BSE_EXPORT_IMPL_F (bsesnet_gen_proc); + +/* --- bsesong.gen-proc.c --- */ +extern BSE_EXPORT_IMPL_F (bsesong_gen_proc); /* --- bsewave.gen-proc.c --- */ extern BSE_EXPORT_IMPL_F (bsewave_gen_proc); -/* --- bseserver.gen-proc.c --- */ -extern BSE_EXPORT_IMPL_F (bseserver_gen_proc); +/* --- bsecontainer.gen-proc.c --- */ +extern BSE_EXPORT_IMPL_F (bsecontainer_gen_proc); -/* --- bseitem.gen-proc.c --- */ -extern BSE_EXPORT_IMPL_F (bseitem_gen_proc); +/* --- bsejanitor.gen-proc.c --- */ +extern BSE_EXPORT_IMPL_F (bsejanitor_gen_proc); -/* --- bsedatapocket.gen-proc.c --- */ -extern BSE_EXPORT_IMPL_F (bsedatapocket_gen_proc); +/* --- bsepart.gen-proc.c --- */ +extern BSE_EXPORT_IMPL_F (bsepart_gen_proc); /* --- bseobject.gen-proc.c --- */ extern BSE_EXPORT_IMPL_F (bseobject_gen_proc); -/* --- bsesnet.gen-proc.c --- */ -extern BSE_EXPORT_IMPL_F (bsesnet_gen_proc); +/* --- bseitem.gen-proc.c --- */ +extern BSE_EXPORT_IMPL_F (bseitem_gen_proc); + +/* --- bseserver.gen-proc.c --- */ +extern BSE_EXPORT_IMPL_F (bseserver_gen_proc); + +/* --- bsesource.gen-proc.c --- */ +extern BSE_EXPORT_IMPL_F (bsesource_gen_proc); + +/* --- bsewaveosc.gen-proc.c --- */ +extern BSE_EXPORT_IMPL_F (bsewaveosc_gen_proc); /* --- bseproject.gen-proc.c --- */ extern BSE_EXPORT_IMPL_F (bseproject_gen_proc); @@ -36,39 +54,21 @@ /* --- bseenums.gen-proc.c --- */ extern BSE_EXPORT_IMPL_F (bseenums_gen_proc); +/* --- bseeditablesample.gen-proc.c --- */ +extern BSE_EXPORT_IMPL_F (bseeditablesample_gen_proc); + /* --- bsescripthelper.gen-proc.c --- */ extern BSE_EXPORT_IMPL_F (bsescripthelper_gen_proc); /* --- bsecategories.gen-proc.c --- */ extern BSE_EXPORT_IMPL_F (bsecategories_gen_proc); -/* --- bsesource.gen-proc.c --- */ -extern BSE_EXPORT_IMPL_F (bsesource_gen_proc); - -/* --- bsewaverepo.gen-proc.c --- */ -extern BSE_EXPORT_IMPL_F (bsewaverepo_gen_proc); - -/* --- bsejanitor.gen-proc.c --- */ -extern BSE_EXPORT_IMPL_F (bsejanitor_gen_proc); - -/* --- bsepart.gen-proc.c --- */ -extern BSE_EXPORT_IMPL_F (bsepart_gen_proc); - -/* --- bsecontainer.gen-proc.c --- */ -extern BSE_EXPORT_IMPL_F (bsecontainer_gen_proc); - -/* --- bsemidinotifier.gen-proc.c --- */ -extern BSE_EXPORT_IMPL_F (bsemidinotifier_gen_proc); - -/* --- bsesong.gen-proc.c --- */ -extern BSE_EXPORT_IMPL_F (bsesong_gen_proc); - -/* --- bsewaveosc.gen-proc.c --- */ -extern BSE_EXPORT_IMPL_F (bsewaveosc_gen_proc); - /* --- bseprocedure.gen-proc.c --- */ extern BSE_EXPORT_IMPL_F (bseprocedure_gen_proc); +/* --- bsedatapocket.gen-proc.c --- */ +extern BSE_EXPORT_IMPL_F (bsedatapocket_gen_proc); + /** ** Generated data ends here **/ diff -ruN beast-0.5.0/bse/bsecategories.c beast-0.5.1/bse/bsecategories.c --- beast-0.5.0/bse/bsecategories.c 2003-03-10 05:40:20.000000000 +0100 +++ beast-0.5.1/bse/bsecategories.c 2003-03-29 00:01:57.000000000 +0100 @@ -1,5 +1,5 @@ /* BSE - Bedevilled Sound Engine - * Copyright (C) 1998-1999, 2000-2002 Tim Janik + * Copyright (C) 1998-1999, 2000-2003 Tim Janik * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -ruN beast-0.5.0/bse/bsecategories.h beast-0.5.1/bse/bsecategories.h --- beast-0.5.0/bse/bsecategories.h 2003-03-10 05:40:20.000000000 +0100 +++ beast-0.5.1/bse/bsecategories.h 2003-03-29 00:01:56.000000000 +0100 @@ -1,5 +1,5 @@ /* BSE - Bedevilled Sound Engine - * Copyright (C) 1998-1999, 2000-2002 Tim Janik + * Copyright (C) 1998-1999, 2000-2003 Tim Janik * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,10 +20,7 @@ #include -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - +G_BEGIN_DECLS /* --- prototypes --- */ void bse_categories_register (const gchar *category, @@ -41,9 +38,6 @@ /* --- internal --- */ void _bse_init_categories (void); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ +G_END_DECLS #endif /* __BSE_CATEGORIES_H__ */ diff -ruN beast-0.5.0/bse/bsecategories.proc beast-0.5.1/bse/bsecategories.proc --- beast-0.5.0/bse/bsecategories.proc 2003-03-10 05:40:20.000000000 +0100 +++ beast-0.5.1/bse/bsecategories.proc 2003-03-29 00:01:56.000000000 +0100 @@ -1,5 +1,5 @@ /* BSE - Bedevilled Sound Engine -*-mode: c;-*- - * Copyright (C) 2002 Tim Janik + * Copyright (C) 2003 Tim Janik * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -ruN beast-0.5.0/bse/bseconfig.h beast-0.5.1/bse/bseconfig.h --- beast-0.5.0/bse/bseconfig.h 2003-03-13 20:56:56.000000000 +0100 +++ beast-0.5.1/bse/bseconfig.h 2003-04-13 22:13:52.000000000 +0200 @@ -30,10 +30,10 @@ */ #define BSE_MAJOR_VERSION (0) #define BSE_MINOR_VERSION (5) -#define BSE_MICRO_VERSION (0) +#define BSE_MICRO_VERSION (1) #define BSE_BINARY_AGE (0) #define BSE_INTERFACE_AGE (0) -#define BSE_VERSION ("0.5.0") +#define BSE_VERSION ("0.5.1") /* check for header versions */ diff -ruN beast-0.5.0/bse/bseenum_arrays.c beast-0.5.1/bse/bseenum_arrays.c --- beast-0.5.0/bse/bseenum_arrays.c 2003-03-13 20:57:28.000000000 +0100 +++ beast-0.5.1/bse/bseenum_arrays.c 2003-04-13 23:42:58.000000000 +0200 @@ -2,6 +2,18 @@ /* Generated data (by glib-mkenums) */ +/* --- bseexports.h --- */ +#include "bseexports.h" +/* BseFileHandlerType + */ +static GEnumValue bse_file_handler_type_values[] = { + { BSE_FILE_CUSTOM_LOADER, "BSE_FILE_CUSTOM_LOADER", "custom-loader" }, + { BSE_FILE_STANDARD_LOADER, "BSE_FILE_STANDARD_LOADER", "standard-loader" }, + { BSE_FILE_FALLBACK_LOADER, "BSE_FILE_FALLBACK_LOADER", "fallback-loader" }, + { 0, NULL, NULL } +}; + + /* --- bsebindata.h --- */ #include "bsebindata.h" /* BseBinDataType @@ -162,18 +174,6 @@ }; -/* --- bseexports.h --- */ -#include "bseexports.h" -/* BseFileHandlerType - */ -static GEnumValue bse_file_handler_type_values[] = { - { BSE_FILE_CUSTOM_LOADER, "BSE_FILE_CUSTOM_LOADER", "custom-loader" }, - { BSE_FILE_STANDARD_LOADER, "BSE_FILE_STANDARD_LOADER", "standard-loader" }, - { BSE_FILE_FALLBACK_LOADER, "BSE_FILE_FALLBACK_LOADER", "fallback-loader" }, - { 0, NULL, NULL } -}; - - /* --- bseglobals.h --- */ #include "bseglobals.h" /* BseTimeRangeType diff -ruN beast-0.5.0/bse/bseenum_list.c beast-0.5.1/bse/bseenum_list.c --- beast-0.5.0/bse/bseenum_list.c 2003-03-13 20:57:29.000000000 +0100 +++ beast-0.5.1/bse/bseenum_list.c 2003-04-13 23:42:59.000000000 +0200 @@ -2,6 +2,9 @@ /* Generated data (by glib-mkenums) */ +/* --- bseexports.h --- */ + { "BseFileHandlerType", G_TYPE_ENUM, &BSE_TYPE_ID (BseFileHandlerType), bse_file_handler_type_values }, + /* --- bsebindata.h --- */ { "BseBinDataType", G_TYPE_ENUM, &BSE_TYPE_ID (BseBinDataType), bse_bin_data_type_values }, @@ -18,9 +21,6 @@ { "BseUserMsgType", G_TYPE_ENUM, &BSE_TYPE_ID (BseUserMsgType), bse_user_msg_type_values }, { "BseErrorType", G_TYPE_ENUM, &BSE_TYPE_ID (BseErrorType), bse_error_type_values }, -/* --- bseexports.h --- */ - { "BseFileHandlerType", G_TYPE_ENUM, &BSE_TYPE_ID (BseFileHandlerType), bse_file_handler_type_values }, - /* --- bseglobals.h --- */ { "BseTimeRangeType", G_TYPE_ENUM, &BSE_TYPE_ID (BseTimeRangeType), bse_time_range_type_values }, diff -ruN beast-0.5.0/bse/bsegentype_array.c beast-0.5.1/bse/bsegentype_array.c --- beast-0.5.0/bse/bsegentype_array.c 2003-03-13 21:19:50.000000000 +0100 +++ beast-0.5.1/bse/bsegentype_array.c 2003-04-13 21:13:59.000000000 +0200 @@ -5,46 +5,48 @@ { &bse_type_builtin_id_BseObject, bse_type_builtin_register_BseObject }, { &bse_type_builtin_id_BseItem, bse_type_builtin_register_BseItem }, { &bse_type_builtin_id_BseSource, bse_type_builtin_register_BseSource }, - { &bse_type_builtin_id_BseWave, bse_type_builtin_register_BseWave }, - { &bse_type_builtin_id_BseContextMerger, bse_type_builtin_register_BseContextMerger }, - { &bse_type_builtin_id_BseAmplifier, bse_type_builtin_register_BseAmplifier }, + { &bse_type_builtin_id_BseSnooper, bse_type_builtin_register_BseSnooper }, + { &bse_type_builtin_id_BseConstant, bse_type_builtin_register_BseConstant }, { &bse_type_builtin_id_BseContainer, bse_type_builtin_register_BseContainer }, { &bse_type_builtin_id_BseSuper, bse_type_builtin_register_BseSuper }, + { &bse_type_builtin_id_BseWaveRepo, bse_type_builtin_register_BseWaveRepo }, + { &bse_type_builtin_id_BseWaveOsc, bse_type_builtin_register_BseWaveOsc }, { &bse_type_builtin_id_BseSNet, bse_type_builtin_register_BseSNet }, - { &bse_type_builtin_id_BsePcmDevice, bse_type_builtin_register_BsePcmDevice }, - { &bse_type_builtin_id_BseJanitor, bse_type_builtin_register_BseJanitor }, + { &bse_type_builtin_id_BseMidiSynth, bse_type_builtin_register_BseMidiSynth }, { &bse_type_builtin_id_BseMidiIController, bse_type_builtin_register_BseMidiIController }, + { &bse_type_builtin_id_BseMidiVoiceInput, bse_type_builtin_register_BseMidiVoiceInput }, + { &bse_type_builtin_id_BseLadspaPlugin, bse_type_builtin_register_BseLadspaPlugin }, + { &bse_type_builtin_id_BseContextMerger, bse_type_builtin_register_BseContextMerger }, { &bse_type_builtin_id_BseSubIPort, bse_type_builtin_register_BseSubIPort }, - { &bse_type_builtin_id_BseSong, bse_type_builtin_register_BseSong }, - { &bse_type_builtin_id_BseMidiNotifier, bse_type_builtin_register_BseMidiNotifier }, - { &bse_type_builtin_id_BseWaveRepo, bse_type_builtin_register_BseWaveRepo }, - { &bse_type_builtin_id_BsePcmInput, bse_type_builtin_register_BsePcmInput }, - { &bse_type_builtin_id_BseWaveOsc, bse_type_builtin_register_BseWaveOsc }, - { &bse_type_builtin_id_BseSnooper, bse_type_builtin_register_BseSnooper }, + { &bse_type_builtin_id_BsePlugin, bse_type_builtin_register_BsePlugin }, { &bse_type_builtin_id_BseMidiDevice, bse_type_builtin_register_BseMidiDevice }, { &bse_type_builtin_id_BseMidiDeviceNULL, bse_type_builtin_register_BseMidiDeviceNULL }, - { &bse_type_builtin_id_BsePcmDeviceOSS, bse_type_builtin_register_BsePcmDeviceOSS }, - { &bse_type_builtin_id_BseDataPocket, bse_type_builtin_register_BseDataPocket }, - { &bse_type_builtin_id_BsePcmOutput, bse_type_builtin_register_BsePcmOutput }, + { &bse_type_builtin_id_BseSong, bse_type_builtin_register_BseSong }, + { &bse_type_builtin_id_BseBiquadFilter, bse_type_builtin_register_BseBiquadFilter }, + { &bse_type_builtin_id_BseBinData, bse_type_builtin_register_BseBinData }, + { &bse_type_builtin_id_BseMidiNotifier, bse_type_builtin_register_BseMidiNotifier }, { &bse_type_builtin_id_BseProject, bse_type_builtin_register_BseProject }, - { &bse_type_builtin_id_BseMidiVoiceInput, bse_type_builtin_register_BseMidiVoiceInput }, - { &bse_type_builtin_id_BseMidiSynth, bse_type_builtin_register_BseMidiSynth }, - { &bse_type_builtin_id_BseSubOPort, bse_type_builtin_register_BseSubOPort }, - { &bse_type_builtin_id_BsePart, bse_type_builtin_register_BsePart }, - { &bse_type_builtin_id_BseStorage, bse_type_builtin_register_BseStorage }, - { &bse_type_builtin_id_BseSubKeyboard, bse_type_builtin_register_BseSubKeyboard }, { &bse_type_builtin_id_BseTrack, bse_type_builtin_register_BseTrack }, - { &bse_type_builtin_id_BsePlugin, bse_type_builtin_register_BsePlugin }, + { &bse_type_builtin_id_BseStorage, bse_type_builtin_register_BseStorage }, + { &bse_type_builtin_id_BsePart, bse_type_builtin_register_BsePart }, + { &bse_type_builtin_id_BseSubSynth, bse_type_builtin_register_BseSubSynth }, + { &bse_type_builtin_id_BseStandardOsc, bse_type_builtin_register_BseStandardOsc }, + { &bse_type_builtin_id_BseDataPocket, bse_type_builtin_register_BseDataPocket }, + { &bse_type_builtin_id_BseJanitor, bse_type_builtin_register_BseJanitor }, { &bse_type_builtin_id_BseMidiDeviceOSS, bse_type_builtin_register_BseMidiDeviceOSS }, - { &bse_type_builtin_id_BseMidiVoiceSwitch, bse_type_builtin_register_BseMidiVoiceSwitch }, + { &bse_type_builtin_id_BsePcmOutput, bse_type_builtin_register_BsePcmOutput }, + { &bse_type_builtin_id_BsePcmInput, bse_type_builtin_register_BsePcmInput }, + { &bse_type_builtin_id_BseSubOPort, bse_type_builtin_register_BseSubOPort }, + { &bse_type_builtin_id_BseWave, bse_type_builtin_register_BseWave }, { &bse_type_builtin_id_BseEditableSample, bse_type_builtin_register_BseEditableSample }, - { &bse_type_builtin_id_BseStandardOsc, bse_type_builtin_register_BseStandardOsc }, - { &bse_type_builtin_id_BseSubSynth, bse_type_builtin_register_BseSubSynth }, - { &bse_type_builtin_id_BseConstant, bse_type_builtin_register_BseConstant }, - { &bse_type_builtin_id_BseSubInstrument, bse_type_builtin_register_BseSubInstrument }, { &bse_type_builtin_id_BseServer, bse_type_builtin_register_BseServer }, - { &bse_type_builtin_id_BseBinData, bse_type_builtin_register_BseBinData }, - { &bse_type_builtin_id_BseBiquadFilter, bse_type_builtin_register_BseBiquadFilter }, + { &bse_type_builtin_id_BseMidiVoiceSwitch, bse_type_builtin_register_BseMidiVoiceSwitch }, + { &bse_type_builtin_id_BseSubKeyboard, bse_type_builtin_register_BseSubKeyboard }, + { &bse_type_builtin_id_BseSubInstrument, bse_type_builtin_register_BseSubInstrument }, + { &bse_type_builtin_id_BsePcmDevice, bse_type_builtin_register_BsePcmDevice }, + { &bse_type_builtin_id_BsePcmDeviceOSS, bse_type_builtin_register_BsePcmDeviceOSS }, + { &bse_type_builtin_id_BseLadspaModule, bse_type_builtin_register_BseLadspaModule }, + { &bse_type_builtin_id_BseAmplifier, bse_type_builtin_register_BseAmplifier }, /** ** Generated data ends here diff -ruN beast-0.5.0/bse/bsegentypes.c beast-0.5.1/bse/bsegentypes.c --- beast-0.5.0/bse/bsegentypes.c 2003-03-13 21:19:47.000000000 +0100 +++ beast-0.5.1/bse/bsegentypes.c 2003-04-13 21:13:58.000000000 +0200 @@ -2,6 +2,8 @@ /* Generated data (by glib-mkenums) */ +GType BSE_TYPE_ID (BseFileHandlerType) = 0; + GType BSE_TYPE_ID (BseBinDataType) = 0; GType BSE_TYPE_ID (BseBiquadFilterType) = 0; @@ -22,8 +24,6 @@ GType BSE_TYPE_ID (BseErrorType) = 0; -GType BSE_TYPE_ID (BseFileHandlerType) = 0; - GType BSE_TYPE_ID (BseTimeRangeType) = 0; GType BSE_TYPE_ID (BseMidiEventType) = 0; @@ -135,6 +135,10 @@ extern BSE_BUILTIN_PROTO (BsePlugin); GType bse_type_builtin_id_BsePlugin = 0; +/* --- bseladspa.c --- */ +extern BSE_BUILTIN_PROTO (BseLadspaPlugin); +GType bse_type_builtin_id_BseLadspaPlugin = 0; + /* --- bseproject.c --- */ extern BSE_BUILTIN_PROTO (BseProject); GType bse_type_builtin_id_BseProject = 0; @@ -215,6 +219,10 @@ extern BSE_BUILTIN_PROTO (BseWaveRepo); GType bse_type_builtin_id_BseWaveRepo = 0; +/* --- bseladspamodule.c --- */ +extern BSE_BUILTIN_PROTO (BseLadspaModule); +GType bse_type_builtin_id_BseLadspaModule = 0; + /** ** Generated data ends here **/ diff -ruN beast-0.5.0/bse/bsegentypes.h beast-0.5.1/bse/bsegentypes.h --- beast-0.5.0/bse/bsegentypes.h 2003-03-13 20:57:37.000000000 +0100 +++ beast-0.5.1/bse/bsegentypes.h 2003-04-02 17:52:46.000000000 +0200 @@ -2,6 +2,10 @@ /* Generated data (by glib-mkenums) */ +/* --- bseexports.h --- */ +#define BSE_TYPE_FILE_HANDLER_TYPE (BSE_TYPE_ID (BseFileHandlerType)) +extern GType BSE_TYPE_ID (BseFileHandlerType); + /* --- bsebindata.h --- */ #define BSE_TYPE_BIN_DATA_TYPE (BSE_TYPE_ID (BseBinDataType)) extern GType BSE_TYPE_ID (BseBinDataType); @@ -28,10 +32,6 @@ #define BSE_TYPE_ERROR_TYPE (BSE_TYPE_ID (BseErrorType)) extern GType BSE_TYPE_ID (BseErrorType); -/* --- bseexports.h --- */ -#define BSE_TYPE_FILE_HANDLER_TYPE (BSE_TYPE_ID (BseFileHandlerType)) -extern GType BSE_TYPE_ID (BseFileHandlerType); - /* --- bseglobals.h --- */ #define BSE_TYPE_TIME_RANGE_TYPE (BSE_TYPE_ID (BseTimeRangeType)) extern GType BSE_TYPE_ID (BseTimeRangeType); @@ -130,6 +130,9 @@ /* --- bseplugin.c --- */ extern GType bse_type_builtin_id_BsePlugin; +/* --- bseladspa.c --- */ +extern GType bse_type_builtin_id_BseLadspaPlugin; + /* --- bseproject.c --- */ extern GType bse_type_builtin_id_BseProject; @@ -190,6 +193,9 @@ /* --- bsewaverepo.c --- */ extern GType bse_type_builtin_id_BseWaveRepo; +/* --- bseladspamodule.c --- */ +extern GType bse_type_builtin_id_BseLadspaModule; + /** ** Generated data ends here **/ diff -ruN beast-0.5.0/bse/bseladspa.c beast-0.5.1/bse/bseladspa.c --- beast-0.5.0/bse/bseladspa.c 1970-01-01 01:00:00.000000000 +0100 +++ beast-0.5.1/bse/bseladspa.c 2003-04-06 13:37:15.000000000 +0200 @@ -0,0 +1,683 @@ +/* BSE - Bedevilled Sound Engine + * Copyright (C) 2003 Tim Janik + * + * This library 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 library 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ +#include "bseladspa.h" +#include "bseladspamodule.h" +#include "bsecategories.h" +#include + +#include "ladspa.h" + +#define DEBUG sfi_debug_keyfunc ("plugins") + +#define LADSPA_TYPE_NAME "BseLadspaModule_" + + +/* --- prototypes --- */ +static void ladspa_plugin_iface_init (GTypePluginClass *iface); +static void ladspa_plugin_use (GTypePlugin *gplugin); +static void ladspa_plugin_unuse (GTypePlugin *gplugin); +static void ladspa_plugin_complete_info (GTypePlugin *gplugin, + GType type, + GTypeInfo *type_info, + GTypeValueTable *value_vtable); +static const gchar* ladspa_plugin_reinit_type_ids (BseLadspaPlugin *self, + LADSPA_Descriptor_Function ldf); + + +/* --- variables --- */ +static GSList *ladspa_plugins = NULL; + + +/* --- functions --- */ +BSE_BUILTIN_TYPE (BseLadspaPlugin) +{ + static const GTypeInfo type_info = { + sizeof (BseLadspaPluginClass), + + (GBaseInitFunc) NULL, + (GBaseFinalizeFunc) NULL, + (GClassInitFunc) NULL, + (GClassFinalizeFunc) NULL, + NULL /* class_data */, + + sizeof (BseLadspaPlugin), + 0 /* n_preallocs */, + (GInstanceInitFunc) NULL, + }; + static const GInterfaceInfo iface_info = { + (GInterfaceInitFunc) ladspa_plugin_iface_init, + NULL, /* interface_finalize */ + NULL, /* interface_data */ + }; + GType type; + + type = bse_type_register_static (G_TYPE_OBJECT, + "BseLadspaPlugin", + "LADSPA Plugin Loader", + &type_info); + g_type_add_interface_static (type, G_TYPE_TYPE_PLUGIN, &iface_info); + + return type; +} + +static void +ladspa_plugin_iface_init (GTypePluginClass *iface) +{ + iface->use_plugin = ladspa_plugin_use; + iface->unuse_plugin = ladspa_plugin_unuse; + iface->complete_type_info = ladspa_plugin_complete_info; +} + +static void +ladspa_plugin_use (GTypePlugin *gplugin) +{ + BseLadspaPlugin *self = BSE_LADSPA_PLUGIN (gplugin); + + g_object_ref (self); + if (!self->use_count) + { + LADSPA_Descriptor_Function ldf = NULL; + const gchar *error = NULL; + self->use_count++; + + DEBUG ("reloading-plugin \"%s\"", self->fname); + + self->gmodule = g_module_open (self->fname, 0); + if (!self->gmodule) + error = g_module_error (); + if (!error) + { + if (!g_module_symbol (self->gmodule, "ladspa_descriptor", (gpointer) &ldf) || !ldf) + error = g_module_error (); + } + if (!error) + { + if (ldf (self->n_types) != NULL || ldf (self->n_types - 1) == NULL) + error = "plugin types changed on disk"; + } + if (!error) + error = ladspa_plugin_reinit_type_ids (self, ldf); + + if (error) + g_error ("Fatal: failed to reinitialize plugin \"%s\": %s", self->fname, error); + } + else + self->use_count++; +} + +static void +ladspa_plugin_unload (BseLadspaPlugin *self) +{ + guint i; + + g_return_if_fail (self->gmodule != NULL); + + g_module_close (self->gmodule); + self->gmodule = NULL; + + for (i = 0; i < self->n_types; i++) + { + bse_ladspa_info_free (self->types[i].info); + self->types[i].info = NULL; + } + + DEBUG ("unloaded-plugin \"%s\"", self->fname); +} + +static void +ladspa_plugin_unuse (GTypePlugin *gplugin) +{ + BseLadspaPlugin *self = BSE_LADSPA_PLUGIN (gplugin); + + g_return_if_fail (self->use_count > 0); + + self->use_count--; + if (!self->use_count) + ladspa_plugin_unload (self); + g_object_unref (self); +} + +static void +ladspa_plugin_complete_info (GTypePlugin *gplugin, + GType type, + GTypeInfo *type_info, + GTypeValueTable *value_vtable) +{ + BseLadspaPlugin *self = BSE_LADSPA_PLUGIN (gplugin); + guint j; + for (j = 0; j < self->n_types; j++) + if (self->types[j].type == type) + { + bse_ladspa_module_derived_type_info (type, self->types[j].info, type_info); + break; + } +} + +static const gchar* +ladspa_plugin_reinit_type_ids (BseLadspaPlugin *self, + LADSPA_Descriptor_Function ldf) +{ + guint i, j; + for (j = 0; j < self->n_types; j++) + { + const gchar *label = g_type_name (self->types[j].type) + strlen (LADSPA_TYPE_NAME); + const LADSPA_Descriptor *cld; + for (i = 0; ; i++) + { + cld = ldf (i); + if (!cld) + return "plugin type missing"; + if (cld->Label && strcmp (cld->Label, label) == 0) + break; + } + self->types[j].info = bse_ladspa_info_assemble (self->fname, cld); + if (self->types[j].info->broken) + return "plugin type broken"; + } + return NULL; +} + +#define to_upper(c) ((c) >='a' && (c) <='z' ? (c) - 'a' + 'A' : (c)) +#define is_alnum(c) (((c) >='A' && (c) <='Z') || ((c) >='a' && (c) <='z') || ((c) >='0' && (c) <='9')) + +static const gchar* +ladspa_plugin_init_type_ids (BseLadspaPlugin *self, + LADSPA_Descriptor_Function ldf) +{ + gchar *prefix = NULL, *error = NULL; + guint i; + /* check for multi module plugins */ + if (ldf (0) && ldf (1)) + { + guint k, was_char = FALSE; + prefix = strrchr (self->fname, '/'); + prefix = prefix ? g_strdup (prefix + 1) : g_strdup (self->fname); + for (k = 0; prefix[k]; k++) + if (prefix[k] == '_') + prefix[k] = ' '; + else if (is_alnum (prefix[k])) + { + if (!was_char) + prefix[k] = to_upper (prefix[k]); + was_char = TRUE; + } + else + was_char = FALSE; + } + for (i = 0; ; i++) + { + const LADSPA_Descriptor *cld = ldf (i); + BseLadspaInfo *bli; + if (!cld) + break; + bli = bse_ladspa_info_assemble (self->fname, cld); + if (!bli->broken) + { + gchar *string, *name; + guint k, j; + name = g_strconcat (LADSPA_TYPE_NAME, cld->Label, NULL); + if (g_type_from_name (name) != 0) + { + g_free (name); + bse_ladspa_info_free (bli); + error = "Plugin contains registered types"; + goto cleanup; + } + j = self->n_types++; + self->types = g_realloc (self->types, self->n_types * sizeof (self->types[0])); + self->types[j].type = bse_type_register_dynamic (BSE_TYPE_LADSPA_MODULE, name, + "LADSPA Undocumented", G_TYPE_PLUGIN (self)); + self->types[j].info = bli; + DEBUG ("registered-plugin: \"%s\"", name); + g_free (name); + string = g_strdup (self->types[j].info->name); + for (k = 0; string[k]; k++) + if (string[k] == '_') + string[k] = '-'; + else if (string[k] == '/') + string[k] = '|'; + name = g_strconcat ("/Modules/LADSPA/", + prefix ? prefix : "", + prefix ? "/" : "", + string, NULL); + g_free (string); + bse_categories_register (name, self->types[j].type); + g_free (name); + } + else + bse_ladspa_info_free (bli); + } + cleanup: + g_free (prefix); + return error; +} + +typedef struct { + guint index; + guint audio_input; + guint audio_output; + guint control_input; + guint control_output; +} PortCounter; + +static gboolean +bse_ladspa_info_add_port (BseLadspaInfo *bli, + const gchar *port_name, + guint port_flags, + const LADSPA_PortRangeHint *port_range, + guint *n_ports_p, + BseLadspaPort **ports_p, + PortCounter *pcounter) +{ + gboolean is_input = (port_flags & LADSPA_PORT_INPUT) != 0; + gboolean is_output = (port_flags & LADSPA_PORT_OUTPUT) != 0; + BseLadspaPort *port; + guint i; + if (!is_input && !is_output) + { + g_message ("LADSPA(%s): port '%s' is neither input nor output", bli->ident, port_name); + return FALSE; + } + i = (*n_ports_p)++; + (*ports_p) = g_renew (BseLadspaPort, (*ports_p), *n_ports_p); + port = (*ports_p) + i; + memset (port, 0, sizeof (*port)); + port->name = port_name; + port->port_index = pcounter->index; + port->audio_channel = (port_flags & LADSPA_PORT_AUDIO) != 0; + port->input = is_input; + port->output = is_output; + if (port->audio_channel && port->input) + port->ident = g_strdup_printf ("audio-in-%u", pcounter->audio_input++); + else if (port->audio_channel) /* port->output */ + port->ident = g_strdup_printf ("audio-out-%u", pcounter->audio_output++); + else if (port->input) /* !port->audio_channel */ + port->ident = g_strdup_printf ("icontrol-%u", pcounter->control_input++); + else /* port->output && !port->audio_channel */ + port->ident = g_strdup_printf ("ocontrol-%u", pcounter->control_output++); + port->minimum = G_MINFLOAT; + port->default_value = 0; + port->maximum = G_MAXFLOAT; + if (port_range) + { + guint hints = port_range->HintDescriptor; + if (hints & LADSPA_HINT_BOUNDED_BELOW) + port->minimum = port_range->LowerBound; + if (hints & LADSPA_HINT_BOUNDED_ABOVE) + port->maximum = port_range->UpperBound; + port->logarithmic = (hints & LADSPA_HINT_LOGARITHMIC) != 0; + if (hints & LADSPA_HINT_SAMPLE_RATE) + { + port->rate_relative = TRUE; + port->minimum = MAX (port->minimum, 0); + } + if (hints & LADSPA_HINT_INTEGER) + { + port->integer_stepping = TRUE; + port->minimum = MAX (port->minimum, G_MININT); + port->maximum = MIN (port->maximum, G_MAXINT); + } + if (hints & LADSPA_HINT_TOGGLED) + { + port->boolean = TRUE; + port->minimum = 0; + port->maximum = 1; + } + port->maximum = MAX (port->minimum, port->maximum); + switch (hints & LADSPA_HINT_DEFAULT_MASK) + { + case LADSPA_HINT_DEFAULT_MINIMUM: + port->default_value = port->minimum; + break; + case LADSPA_HINT_DEFAULT_MAXIMUM: + port->default_value = port->maximum; + break; + case LADSPA_HINT_DEFAULT_0: + port->default_value = 0; + break; + case LADSPA_HINT_DEFAULT_1: + port->default_value = 1; + break; + case LADSPA_HINT_DEFAULT_100: + port->default_value = 100; + break; + case LADSPA_HINT_DEFAULT_LOW: + if (port->logarithmic) + port->default_value = exp (log (port->minimum) * 0.75 + + log (port->maximum) * 0.25); + else + port->default_value = port->minimum * 0.75 + port->maximum * 0.25; + break; + case LADSPA_HINT_DEFAULT_440: + port->concert_a = TRUE; + /* fall through to standard default-value picking */ + default: + case 0: /* LADSPA_HINT_DEFAULT_NONE */ + if (!(hints & LADSPA_HINT_BOUNDED_BELOW) || + !(hints & LADSPA_HINT_BOUNDED_ABOVE)) + break; + /* fall through to default-middle behaviour */ + case LADSPA_HINT_DEFAULT_MIDDLE: + if (port->logarithmic) + port->default_value = exp (log (port->minimum) * 0.5 + + log (port->maximum) * 0.5); + else + port->default_value = port->minimum * 0.5 + port->maximum * 0.5; + break; + case LADSPA_HINT_DEFAULT_HIGH: + if (port->logarithmic) + port->default_value = exp (log (port->minimum) * 0.25 + + log (port->maximum) * 0.75); + else + port->default_value = port->minimum * 0.25 + port->maximum * 0.75; + break; + } + port->default_value = CLAMP (port->default_value, port->minimum, port->maximum); + if (!port->boolean && !port->integer_stepping) + { + /* interpretation heuristic */ + if (port->minimum >= 0 && port->minimum <= 220 && + port->maximum >= 1760 && port->maximum <= 24000 && + port->logarithmic) + port->frequency = TRUE; + else if (port->rate_relative) + port->frequency = TRUE; + } + } + return TRUE; +} + +gchar* +bse_ladspa_info_port_2str (BseLadspaPort *port) +{ + gchar flags[64]; + flags[0] = 0; + if (port->input) + strcat (flags, "w"); + if (port->output) + strcat (flags, "r"); + if (port->boolean) + strcat (flags, "b"); + if (port->integer_stepping) + strcat (flags, "i"); + if (port->rate_relative) + strcat (flags, "s"); + if (port->frequency) + strcat (flags, "F"); + if (port->logarithmic) + strcat (flags, "L"); + if (port->concert_a) + strcat (flags, "A"); + return g_strdup_printf ("( %s, %f<=%f<=%f, %s )", + port->ident, + port->minimum, port->default_value, port->maximum, + flags); +} + +BseLadspaInfo* +bse_ladspa_info_assemble (const gchar *file_path, + gconstpointer ladspa_descriptor) +{ + const LADSPA_Descriptor *cld = ladspa_descriptor; + BseLadspaInfo *bli = g_new0 (BseLadspaInfo, 1); + gboolean seen_output = FALSE; + PortCounter pcounter = { 0, 1, 1, 1, 1 }; + + g_return_val_if_fail (cld != NULL, NULL); + + bli->file_path = g_strdup (file_path); + if (!file_path) + file_path = ""; /* ensure !=NULL for messages below */ + + bli->plugin_id = cld->UniqueID; + if (bli->plugin_id < 1 || bli->plugin_id >= 0x1000000) + g_message ("LADSPA(\"%s\"): plugin with suspicious ID: %u", file_path, bli->plugin_id); + if (!cld->Label) + { + g_message ("LADSPA(\"%s\"): plugin with NULL label", file_path); + goto bail_broken; + } + else + bli->ident = g_strdup_printf ("%s#%s", file_path, cld->Label); + bli->name = cld->Name ? cld->Name : bli->ident; + if (!cld->Maker) + g_message ("LADSPA(%s): plugin with 'Maker' field of NULL", bli->ident); + bli->author = cld->Maker ? cld->Maker : ""; + if (!cld->Copyright || g_ascii_strcasecmp (cld->Copyright, "none") == 0) + bli->copyright = ""; + else + bli->copyright = cld->Copyright; + bli->interactive = (cld->Properties & LADSPA_PROPERTY_REALTIME) != 0; + bli->rt_capable = (cld->Properties & LADSPA_PROPERTY_HARD_RT_CAPABLE) != 0; + + if (!cld->PortCount) + { + g_message ("LADSPA(%s): number of plugin ports is 0", bli->ident); + goto bail_broken; + } + if (!cld->PortDescriptors) + { + g_message ("LADSPA(%s): port descriptor array is NULL", bli->ident); + goto bail_broken; + } + if (!cld->PortNames) + { + g_message ("LADSPA(%s): port name array is NULL", bli->ident); + goto bail_broken; + } + if (!cld->PortRangeHints) + g_message ("LADSPA(%s): port range hint array is NULL", bli->ident); + for (pcounter.index = 0; pcounter.index < cld->PortCount; pcounter.index++) + { + const LADSPA_PortRangeHint *port_range = cld->PortRangeHints ? cld->PortRangeHints + pcounter.index : NULL; + const gchar *port_name = cld->PortNames[pcounter.index]; + guint port_flags = cld->PortDescriptors[pcounter.index]; + if (!port_name) + { + g_message ("LADSPA(%s): port %u name is NULL", bli->ident, pcounter.index); + goto bail_broken; + } + switch (port_flags & (LADSPA_PORT_CONTROL | LADSPA_PORT_AUDIO)) + { + case LADSPA_PORT_CONTROL: + if (!bse_ladspa_info_add_port (bli, port_name, port_flags, port_range, + &bli->n_cports, &bli->cports, &pcounter)) + goto bail_broken; + break; + case LADSPA_PORT_AUDIO: + if (!bse_ladspa_info_add_port (bli, port_name, port_flags, port_range, + &bli->n_aports, &bli->aports, &pcounter)) + goto bail_broken; + seen_output |= bli->aports[bli->n_aports - 1].output; + break; + case LADSPA_PORT_CONTROL | LADSPA_PORT_AUDIO: + g_message ("LADSPA(%s): port %u type claims to be `control` and `audio`", bli->ident, pcounter.index); + goto bail_broken; + default: + case 0: + g_message ("LADSPA(%s): port %u type is neither `control` nor `audio`", bli->ident, pcounter.index); + goto bail_broken; + } + } + if (!seen_output) + { + g_message ("LADSPA(%s): plugin has no output channel", bli->ident); + goto bail_broken; + } + + if (!cld->instantiate) + { + g_message ("LADSPA(%s): function instantiate() is NULL", bli->ident); + goto bail_broken; + } + bli->descdata = cld; + bli->instantiate = (void*) cld->instantiate; + if (!cld->connect_port) + { + g_message ("LADSPA(%s): function connect_port() is NULL", bli->ident); + goto bail_broken; + } + bli->connect_port = cld->connect_port; + if (!cld->run) + { + g_message ("LADSPA(%s): function run() is NULL", bli->ident); + goto bail_broken; + } + bli->run = cld->run; + if (cld->run_adding && !cld->set_run_adding_gain) + g_message ("LADSPA(%s): function set_run_adding_gain() is NULL though run_adding() is provided", bli->ident); + if (!cld->cleanup) + { + g_message ("LADSPA(%s): function cleanup() is NULL", bli->ident); + goto bail_broken; + } + bli->cleanup = cld->cleanup; + bli->activate = cld->activate; + bli->deactivate = cld->deactivate; + return bli; + + bail_broken: + bli->broken = TRUE; + return bli; +} + +void +bse_ladspa_info_free (BseLadspaInfo *bli) +{ + guint i; + + g_return_if_fail (bli != NULL); + + for (i = 0; i < bli->n_cports; i++) + { + BseLadspaPort *port = bli->cports + i; + g_free (port->ident); + } + g_free (bli->cports); + for (i = 0; i < bli->n_aports; i++) + { + BseLadspaPort *port = bli->aports + i; + g_free (port->ident); + } + g_free (bli->aports); + g_free (bli->ident); + g_free (bli->file_path); + g_free (bli); +} + +static BseLadspaPlugin* +ladspa_plugin_find (const gchar *fname) +{ + GSList *slist; + for (slist = ladspa_plugins; slist; slist = slist->next) + { + BseLadspaPlugin *plugin = slist->data; + if (strcmp (plugin->fname, fname) == 0) + return plugin; + } + return NULL; +} + +const gchar* +bse_ladspa_plugin_check_load (const gchar *file_name) +{ + BseLadspaPlugin *self; + LADSPA_Descriptor_Function ldf = NULL; + const gchar *error; + GModule *gmodule; + + g_return_val_if_fail (file_name != NULL, "Internal Error"); + + if (ladspa_plugin_find (file_name)) + return "Plugin already registered"; + + /* load module once */ + gmodule = g_module_open (file_name, 0); + if (!gmodule) + return g_module_error (); + /* check whether this is a LADSPA module */ + if (!g_module_symbol (gmodule, "ladspa_descriptor", (gpointer) &ldf) || !ldf) + { + g_module_close (gmodule); + return "Plugin without ladspa_descriptor"; + } + + /* create plugin and register types */ + self = g_object_new (BSE_TYPE_LADSPA_PLUGIN, NULL); + self->fname = g_strdup (file_name); + self->gmodule = gmodule; + error = ladspa_plugin_init_type_ids (self, ldf); + + /* keep plugin if types were successfully registered */ + ladspa_plugin_unload (self); + if (self->n_types) + { + ladspa_plugins = g_slist_prepend (ladspa_plugins, self); + g_object_ref (self); + } + else + g_object_unref (self); + + return error; +} + +GSList* +bse_ladspa_plugin_dir_list_files (const gchar *dir_list) +{ + GSList *slist = bse_search_path_list_files (dir_list, "*.so", NULL, 0); + + return g_slist_sort (slist, (GCompareFunc) strcmp); +} + +static void +ladspa_test_load (const gchar *file) +{ + LADSPA_Descriptor_Function ldf = NULL; + const gchar *error; + GModule *gmodule; + + gmodule = g_module_open (file, 0); + error = g_module_error (); + if (!error && gmodule) + { + if (!g_module_symbol (gmodule, "ladspa_descriptor", (gpointer) &ldf) || !ldf) + error = g_module_error (); + } + if (!error && ldf) + { + guint i; + const gchar *lfile = strrchr (file, '/'); + lfile = lfile ? lfile + 1 : file; + for (i = 0; ; i++) + { + const LADSPA_Descriptor *cld = ldf (i); + BseLadspaInfo *bli; + if (!cld) + break; + bli = bse_ladspa_info_assemble (file, cld); + if (!bli->broken) + g_print ("LADSPA: found %s\n", bli->ident); + } + if (i == 0) + error = "missing LADSPA descriptor"; + } + if (error) + g_message ("failed to load LADSPA plugin \"%s\": %s", file, error); + if (gmodule) + g_module_close (gmodule); +} diff -ruN beast-0.5.0/bse/bseladspa.h beast-0.5.1/bse/bseladspa.h --- beast-0.5.0/bse/bseladspa.h 1970-01-01 01:00:00.000000000 +0100 +++ beast-0.5.1/bse/bseladspa.h 2003-04-05 16:42:14.000000000 +0200 @@ -0,0 +1,111 @@ +/* BSE - Bedevilled Sound Engine + * Copyright (C) 2003 Tim Janik + * + * This library 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 library 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ +#ifndef __BSE_LADSPA_H__ +#define __BSE_LADSPA_H__ + +#include +#include + +G_BEGIN_DECLS + +/* --- object type macros --- */ +#define BSE_TYPE_LADSPA_PLUGIN (BSE_TYPE_ID (BseLadspaPlugin)) +#define BSE_LADSPA_PLUGIN(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_LADSPA_PLUGIN, BseLadspaPlugin)) +#define BSE_LADSPA_PLUGIN_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_LADSPA_PLUGIN, BseLadspaPluginClass)) +#define BSE_IS_LADSPA_PLUGIN(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_LADSPA_PLUGIN)) +#define BSE_IS_LADSPA_PLUGIN_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_LADSPA_PLUGIN)) +#define BSE_LADSPA_PLUGIN_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_LADSPA_PLUGIN, BseLadspaPluginClass)) + + +/* --- BseLadspaPlugin --- */ +typedef struct _BseLadspaPlugin BseLadspaPlugin; +typedef struct _BseLadspaPluginClass BseLadspaPluginClass; +typedef struct _BseLadspaInfo BseLadspaInfo; +struct _BseLadspaPlugin +{ + GObject parent_instance; + gchar *fname; + GModule *gmodule; + guint use_count; + guint n_types; + struct { + GType type; + BseLadspaInfo *info; + } *types; +}; +struct _BseLadspaPluginClass +{ + GObjectClass parent_class; +}; +typedef struct { + gchar *ident; + const gchar *name; + gfloat minimum; + gfloat default_value; + gfloat maximum; + guint port_index; + guint audio_channel : 1; + guint input : 1; + guint output : 1; + guint boolean : 1; + guint integer_stepping : 1; + guint rate_relative : 1; /* sample rate relative values */ + guint frequency : 1; /* provide logarithmic frequency slider */ + guint logarithmic : 1; + guint concert_a : 1; /* default to 440Hz concert A */ +} BseLadspaPort; +struct _BseLadspaInfo +{ + gchar *file_path; /* fully qualified file path and name */ + gchar *ident; /* unique identifier */ + guint plugin_id; /* unique plugin type ID */ + const gchar *name; /* descriptive name */ + const gchar *author; + const gchar *copyright; + guint broken : 1; + guint interactive : 1; /* low-latency request */ + guint rt_capable : 1; /* hard realtime capability */ + guint n_cports; + BseLadspaPort *cports; + guint n_aports; + BseLadspaPort *aports; + gconstpointer descdata; + gpointer (*instantiate) (gconstpointer descdata, + gulong sample_rate); + void (*connect_port) (gpointer instance, + gulong port_index, + gfloat *location); + void (*activate) (gpointer instance); + void (*run) (gpointer instance, + gulong n_samples); + void (*deactivate) (gpointer instance); + void (*cleanup) (gpointer instance); +}; + + +/* --- public API --- */ +BseLadspaInfo* bse_ladspa_info_assemble (const gchar *file_path, + gconstpointer ladspa_descriptor); +void bse_ladspa_info_free (BseLadspaInfo *bli); +GSList* bse_ladspa_plugin_dir_list_files (const gchar *dir_list); +const gchar* bse_ladspa_plugin_check_load (const gchar *file_name); +gchar* bse_ladspa_info_port_2str (BseLadspaPort *port); + +G_END_DECLS + +#endif /* __BSE_LADSPA_H__ */ diff -ruN beast-0.5.0/bse/bseladspamodule.c beast-0.5.1/bse/bseladspamodule.c --- beast-0.5.0/bse/bseladspamodule.c 1970-01-01 01:00:00.000000000 +0100 +++ beast-0.5.1/bse/bseladspamodule.c 2003-04-06 13:40:22.000000000 +0200 @@ -0,0 +1,501 @@ +/* BseLadspaModule - BSE Ladspa Module + * Copyright (C) 2003 Tim Janik + * + * This library 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 library 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ +#include "bseladspamodule.h" + +#include "bsecategories.h" +#include "gslengine.h" +#include "gslsignal.h" +#include + + +/* --- prototypes --- */ +static void bse_ladspa_module_class_init (BseLadspaModuleClass *class); +static void ladspa_derived_init (BseLadspaModule *self); +static void ladspa_derived_finalize (GObject *object); +static void ladspa_derived_set_property (GObject *object, + guint param_id, + const GValue *value, + GParamSpec *pspec); +static void ladspa_derived_get_property (GObject *object, + guint param_id, + GValue *value, + GParamSpec *pspec); +static void ladspa_derived_context_create (BseSource *source, + guint context_handle, + GslTrans *trans); +static void bse_ladspa_module_class_init_from_info (BseLadspaModuleClass *ladspa_module_class); + + +/* --- variables --- */ +static gpointer derived_parent_class = NULL; +static GQuark quark_value_index = 0; +static GQuark quark_notify_sibling = 0; + + +/* --- functions --- */ +BSE_BUILTIN_TYPE (BseLadspaModule) +{ + static const GTypeInfo type_info = { + sizeof (BseLadspaModuleClass), + + (GBaseInitFunc) NULL, + (GBaseFinalizeFunc) NULL, + (GClassInitFunc) bse_ladspa_module_class_init, + (GClassFinalizeFunc) NULL, + NULL /* class_data */, + + sizeof (BseLadspaModule), + 0 /* n_preallocs */, + (GInstanceInitFunc) NULL, + }; + GType type; + + type = bse_type_register_static (BSE_TYPE_SOURCE, + "BseLadspaModule", + "LADSPA Module base type", + &type_info); + return type; +} + +static void +bse_ladspa_module_class_init (BseLadspaModuleClass *class) +{ + quark_value_index = g_quark_from_static_string ("BseLadspaValueIndex"); + quark_notify_sibling = g_quark_from_static_string ("BseLadspaNotifySibling"); + + class->bli = NULL; +} + +static void +ladspa_derived_class_init (BseLadspaModuleClass *class, + gpointer class_data) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (class); + BseSourceClass *source_class = BSE_SOURCE_CLASS (class); + + derived_parent_class = g_type_class_peek_parent (class); + + g_assert (class_data != NULL); + class->bli = class_data; + + gobject_class->finalize = ladspa_derived_finalize; + + source_class->context_create = ladspa_derived_context_create; + + bse_ladspa_module_class_init_from_info (class); +} + +static void +ladspa_derived_class_finalize (BseLadspaModuleClass *class, + gpointer class_data) +{ + g_free (class->gsl_class); +} + +void +bse_ladspa_module_derived_type_info (GType type, + BseLadspaInfo *bli, + GTypeInfo *type_info) +{ + g_assert (bli != NULL); + type_info->class_size = sizeof (BseLadspaModuleClass); + type_info->class_init = (GClassInitFunc) ladspa_derived_class_init; + type_info->class_finalize = (GClassFinalizeFunc) ladspa_derived_class_finalize; + type_info->class_data = bli; + type_info->instance_size = sizeof (BseLadspaModule); + type_info->instance_init = (GInstanceInitFunc) ladspa_derived_init; +} + +static void +bse_ladspa_module_class_init_from_info (BseLadspaModuleClass *ladspa_module_class) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (ladspa_module_class); + BseObjectClass *object_class = BSE_OBJECT_CLASS (ladspa_module_class); + BseSourceClass *source_class = BSE_SOURCE_CLASS (ladspa_module_class); + BseLadspaInfo *bli = ladspa_module_class->bli; + guint ochannel, ichannel, i; + + g_assert (ladspa_module_class->bli != NULL && + gobject_class->set_property == NULL && + gobject_class->get_property == NULL); + + gobject_class->set_property = ladspa_derived_set_property; + gobject_class->get_property = ladspa_derived_get_property; + + for (i = 0; i < bli->n_cports; i++) + { + BseLadspaPort *port = bli->cports + i; + GParamSpec *pspec, *pspec2 = NULL; + const gchar *group; + // g_print ("LADSPA-PORT: %s\n", bse_ladspa_info_port_2str (port)); + if (port->boolean) + { + group = "Switches"; + pspec = sfi_pspec_bool (port->ident, port->name, NULL, + port->default_value, SFI_PARAM_GUI); + } + else if (port->integer_stepping) + { + const gchar *hints; + /* try to guess when scales are going to be usefull */ + if (port->minimum < 0 || + port->maximum - port->minimum > 10) + hints = SFI_PARAM_GUI SFI_PARAM_HINT_SCALE; + else + hints = SFI_PARAM_GUI; + group = "Adjustments"; + pspec = sfi_pspec_int (port->ident, port->name, NULL, + port->default_value, port->minimum, port->maximum, 1, + hints); + } + else if (port->frequency) + { + gfloat maximum = port->maximum; + gfloat minimum = port->minimum; + gfloat dfvalue = port->default_value; + if (port->rate_relative) + { + /* we relate a maximum value of 0.5 (sample_freq/2) to BSE_MAX_OSC_FREQUENCY_f */ + maximum *= 2.0 * BSE_MAX_OSC_FREQUENCY_f; + minimum *= 2.0 * BSE_MAX_OSC_FREQUENCY_f; + dfvalue *= 2.0 * BSE_MAX_OSC_FREQUENCY_f; + } + if (port->concert_a) + dfvalue = BSE_KAMMER_FREQUENCY_f; + minimum = CLAMP (minimum, BSE_MIN_OSC_FREQUENCY_f, BSE_MAX_OSC_FREQUENCY_f); + maximum = CLAMP (maximum, BSE_MIN_OSC_FREQUENCY_f, BSE_MAX_OSC_FREQUENCY_f); + dfvalue = CLAMP (dfvalue, minimum, maximum); + group = "Frequencies"; + pspec = sfi_pspec_log_scale (port->ident, port->name, NULL, + dfvalue, minimum, maximum, 10.0, + 2 * BSE_KAMMER_FREQUENCY_f, 2, 4, + SFI_PARAM_GUI SFI_PARAM_FLOAT SFI_PARAM_HINT_SCALE SFI_PARAM_HINT_DIAL); + if (port->concert_a) + { + /* when defaulting to A', we probably have note-aligned port values */ + gint min_note = bse_note_from_freq_bounded (minimum); + gint max_note = bse_note_from_freq_bounded (maximum); + if (max_note - min_note > 2) + { + gchar *ident2 = g_strconcat (port->ident, "-note", NULL); + pspec2 = sfi_pspec_note (ident2, port->name, NULL, + BSE_KAMMER_NOTE, min_note, max_note, FALSE, + SFI_PARAM_GUI); + g_param_spec_set_qdata (pspec2, quark_notify_sibling, pspec); + g_param_spec_set_qdata (pspec, quark_notify_sibling, pspec2); + g_free (ident2); + } + } + } + else /* normal float */ + { + gfloat stepping; + if (port->maximum - port->minimum > 3 * 10.0) + stepping = 10.0; + else if (port->maximum - port->minimum > 3 * 1.0) + stepping = 1.0; + else + stepping = 0; + group = "Adjustments"; + pspec = sfi_pspec_real (port->ident, port->name, NULL, + port->default_value, port->minimum, port->maximum, stepping, + SFI_PARAM_GUI SFI_PARAM_FLOAT SFI_PARAM_HINT_SCALE); + } + if (port->input) + sfi_pspec_add_hint (pspec, SFI_PARAM_SERVE_STORAGE); + else /* port->output */ + sfi_pspec_add_hint (pspec, SFI_PARAM_HINT_RDONLY); + bse_object_class_add_param (object_class, group, i + 1, pspec); + if (pspec2) + { + g_param_spec_set_qdata (pspec2, quark_value_index, (gpointer) i); + if (port->output) + sfi_pspec_add_hint (pspec2, SFI_PARAM_HINT_RDONLY); + bse_object_class_add_param (object_class, group, bli->n_cports + i + 1, pspec2); + } + } + + for (i = 0; i < bli->n_aports; i++) + { + BseLadspaPort *port = bli->aports + i; + if (port->input) + ichannel = bse_source_class_add_ichannel_ident (source_class, port->ident, port->name, NULL); + else /* port->output */ + ochannel = bse_source_class_add_ochannel_ident (source_class, port->ident, port->name, NULL); + } +} + +static gfloat +ladspa_value_get_float (const GValue *value, + BseLadspaPort *port) +{ + switch (sfi_categorize_type (G_VALUE_TYPE (value))) + { + case SFI_SCAT_BOOL: + return sfi_value_get_bool (value); + case SFI_SCAT_INT: + if (port->frequency && port->concert_a) /* is note */ + return bse_note_to_freq (sfi_value_get_int (value)); + else + return sfi_value_get_int (value); + case SFI_SCAT_REAL: + return sfi_value_get_real (value); + default: + g_assert_not_reached (); + return 0; + } +} + +static void +ladspa_value_set_float (GValue *value, + BseLadspaPort *port, + gfloat v_float) +{ + switch (sfi_categorize_type (G_VALUE_TYPE (value))) + { + case SFI_SCAT_BOOL: + sfi_value_set_bool (value, v_float >= 0.5); + break; + case SFI_SCAT_INT: + if (port->frequency && port->concert_a) /* is note */ + sfi_value_set_int (value, bse_note_from_freq (v_float)); + else + sfi_value_set_int (value, v_float >= 0 ? v_float + 0.5 : v_float - 0.5); + break; + case SFI_SCAT_REAL: + sfi_value_set_real (value, v_float); + break; + default: + g_assert_not_reached (); + } +} + +static void +ladspa_derived_init (BseLadspaModule *self) +{ + BseLadspaModuleClass *class = BSE_LADSPA_MODULE_GET_CLASS (self); + GObjectClass *gobject_class = G_OBJECT_CLASS (class); + guint i; + self->cvalues = g_new (gfloat, class->bli->n_cports); + for (i = 0; i < class->bli->n_cports; i++) + { + GParamSpec *pspec = g_object_class_find_property (gobject_class, class->bli->cports[i].ident); + GValue tmp = { 0, }; + g_value_init (&tmp, G_PARAM_SPEC_VALUE_TYPE (pspec)); + g_param_value_set_default (pspec, &tmp); + self->cvalues[i] = ladspa_value_get_float (&tmp, class->bli->cports + i); + g_value_unset (&tmp); + } +} + +static void +ladspa_derived_finalize (GObject *object) +{ + BseLadspaModule *self = BSE_LADSPA_MODULE (object); + g_free (self->cvalues); + G_OBJECT_CLASS (derived_parent_class)->finalize (object); +} + +static void +ladspa_derived_get_property (GObject *object, + guint param_id, + GValue *value, + GParamSpec *pspec) +{ + BseLadspaModule *self = BSE_LADSPA_MODULE (object); + BseLadspaModuleClass *class = BSE_LADSPA_MODULE_GET_CLASS (self); + guint i = param_id - 1; + if (i >= class->bli->n_cports) + i = (guint) g_param_spec_get_qdata (pspec, quark_value_index); + ladspa_value_set_float (value, class->bli->cports + i, self->cvalues[i]); +} + +typedef struct +{ + BseLadspaInfo *bli; + gpointer handle; + guint activated : 1; + gfloat *ibuffers; + gfloat cvalues[1]; /* flexible array */ +} LadspaData; +#define LADSPA_DATA_SIZE(bli) (sizeof (LadspaData) + (MAX (bli->n_cports, 1) - 1) * sizeof (gfloat)) +#define LADSPA_CVALUES_SIZE(bli) (bli->n_cports * sizeof (gfloat)) + +static void +ladspa_module_access (GslModule *module, + gpointer data) +{ + LadspaData *ldata = module->user_data; + LadspaData *cdata = data; + /* this runs in the Gsl Engine threads */ + memcpy (ldata->cvalues, cdata->cvalues, LADSPA_CVALUES_SIZE (ldata->bli)); +} + +static void +ladspa_derived_set_property (GObject *object, + guint param_id, + const GValue *value, + GParamSpec *pspec) +{ + BseLadspaModule *self = BSE_LADSPA_MODULE (object); + BseLadspaModuleClass *class = BSE_LADSPA_MODULE_GET_CLASS (self); + GParamSpec *pspec2 = g_param_spec_get_qdata (pspec, quark_notify_sibling); + /* store value */ + guint i = param_id - 1; + if (i >= class->bli->n_cports) + i = (guint) g_param_spec_get_qdata (pspec, quark_value_index); + self->cvalues[i] = ladspa_value_get_float (value, class->bli->cports + i); + if (pspec2) + g_object_notify (object, pspec2->name); + /* update modules in all contexts with the new control values */ + if (BSE_SOURCE_PREPARED (self)) + { + LadspaData *cdata = g_malloc0 (LADSPA_DATA_SIZE (class->bli)); + memcpy (cdata->cvalues, self->cvalues, LADSPA_CVALUES_SIZE (class->bli)); + bse_source_access_modules (BSE_SOURCE (self), + ladspa_module_access, + cdata, g_free, + NULL); + } +} + +static void +ladspa_module_reset (GslModule *module) +{ + LadspaData *ldata = module->user_data; + if (ldata->activated && ldata->bli->deactivate) + ldata->bli->deactivate (ldata->handle); + ldata->activated = FALSE; + if (ldata->bli->activate) + { + ldata->bli->activate (ldata->handle); + ldata->activated = TRUE; + } +} + +static void +ladspa_module_process (GslModule *module, + guint n_values) +{ + LadspaData *ldata = module->user_data; + BseLadspaInfo *bli = ldata->bli; + guint i, nis = 0, nos = 0, bsize = gsl_engine_block_size (); + /* connect audio ports and copy audio buffers */ + for (i = 0; i < bli->n_aports; i++) + if (bli->aports[i].output) + { + bli->connect_port (ldata->handle, bli->aports[i].port_index, GSL_MODULE_OBUFFER (module, nos)); + nos++; + } + else + { + gfloat *ibuffer = ldata->ibuffers + nis * bsize; + const gfloat *srcbuf = GSL_MODULE_IBUFFER (module, nis); + guint j; + if (bli->aports[i].rate_relative) + for (j = 0; j < n_values; j++) + ibuffer[j] = srcbuf[j] * GSL_SIGNAL_TO_FREQ_FACTOR; + else + memcpy (ibuffer, srcbuf, sizeof (ibuffer[0]) * n_values); + nis++; + } + /* process ladspa plugin */ + ldata->bli->run (ldata->handle, n_values); + /* adjust rate_relative output buffers */ + for (i = 0, nos = 0; i < bli->n_aports; i++) + if (bli->aports[i].output && bli->aports[i].rate_relative) + { + gfloat *obuf = GSL_MODULE_OBUFFER (module, nos); + guint j; + for (j = 0; j < n_values; j++) + obuf[j] *= GSL_SIGNAL_FROM_FREQ_FACTOR; + nos++; + } +} + +static void +ladspa_module_free_data (gpointer data, + const GslClass *klass) +{ + LadspaData *ldata = data; + if (ldata->activated && ldata->bli->deactivate) + ldata->bli->deactivate (ldata->handle); + ldata->activated = FALSE; + /* destroy ladspa plugin instance */ + ldata->bli->cleanup (ldata->handle); + ldata->handle = NULL; + g_free (ldata->ibuffers); +} + +static void +ladspa_derived_context_create (BseSource *source, + guint context_handle, + GslTrans *trans) +{ + static const GslClass ladspa_module_class = { + 0, /* n_istreams */ + 0, /* n_jstreams */ + 0, /* n_ostreams */ + ladspa_module_process, /* process */ + NULL, /* process_defer */ + ladspa_module_reset, /* reset */ + ladspa_module_free_data, /* free */ + GSL_COST_EXPENSIVE, /* cost */ + }; + BseLadspaModule *self = BSE_LADSPA_MODULE (source); + BseLadspaModuleClass *class = BSE_LADSPA_MODULE_GET_CLASS (self); + BseLadspaInfo *bli = class->bli; + LadspaData *ldata = g_malloc0 (LADSPA_DATA_SIZE (bli)); + GslModule *module; + guint i, nis; + + ldata->bli = bli; + /* setup audio streams */ + if (!class->gsl_class) + { + guint nos = 0; + for (i = 0, nis = 0; i < bli->n_aports; i++) + if (bli->aports[i].output) + nos++; + else + nis++; + class->gsl_class = g_memdup (&ladspa_module_class, sizeof (ladspa_module_class)); + class->gsl_class->n_istreams = nis; + class->gsl_class->n_ostreams = nos; + } + /* create ladspa plugin instance */ + ldata->handle = bli->instantiate (bli->descdata, gsl_engine_sample_freq ()); + /* connect control ports */ + for (i = 0; i < bli->n_cports; i++) + bli->connect_port (ldata->handle, bli->cports[i].port_index, ldata->cvalues + i); + /* initialize control ports */ + memcpy (ldata->cvalues, self->cvalues, LADSPA_CVALUES_SIZE (bli)); + /* allocate input audio buffers */ + ldata->ibuffers = g_new (gfloat, class->gsl_class->n_istreams * gsl_engine_block_size ()); + /* connect input audio ports */ + for (i = 0, nis = 0; i < bli->n_aports; i++) + if (bli->aports[i].input) + bli->connect_port (ldata->handle, bli->aports[i].port_index, ldata->ibuffers + nis++ * gsl_engine_block_size ()); + + module = gsl_module_new (class->gsl_class, ldata); + bse_source_set_context_module (source, context_handle, module); + gsl_trans_add (trans, gsl_job_integrate (module)); + + /* chain parent class' handler */ + BSE_SOURCE_CLASS (derived_parent_class)->context_create (source, context_handle, trans); +} diff -ruN beast-0.5.0/bse/bseladspamodule.h beast-0.5.1/bse/bseladspamodule.h --- beast-0.5.0/bse/bseladspamodule.h 1970-01-01 01:00:00.000000000 +0100 +++ beast-0.5.1/bse/bseladspamodule.h 2003-04-03 12:07:28.000000000 +0200 @@ -0,0 +1,56 @@ +/* BseLadspaModule - BSE Ladspa Module + * Copyright (C) 2003 Tim Janik + * + * This library 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 library 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ +#ifndef __BSE_LADSPA_MODULE_H__ +#define __BSE_LADSPA_MODULE_H__ + +#include +#include + +G_BEGIN_DECLS + +/* --- object type macros --- */ +#define BSE_TYPE_LADSPA_MODULE (BSE_TYPE_ID (BseLadspaModule)) +#define BSE_LADSPA_MODULE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_LADSPA_MODULE, BseLadspaModule)) +#define BSE_LADSPA_MODULE_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_LADSPA_MODULE, BseLadspaModuleClass)) +#define BSE_IS_LADSPA_MODULE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_LADSPA_MODULE)) +#define BSE_IS_LADSPA_MODULE_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_LADSPA_MODULE)) +#define BSE_LADSPA_MODULE_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_LADSPA_MODULE, BseLadspaModuleClass)) + + +/* --- BseLadspaModule --- */ +typedef struct _BseLadspaModule BseLadspaModule; +typedef struct _BseLadspaModuleClass BseLadspaModuleClass; +struct _BseLadspaModule +{ + BseSource parent_instance; + gfloat *cvalues; +}; +struct _BseLadspaModuleClass +{ + BseSourceClass parent_class; + BseLadspaInfo *bli; + GslClass *gsl_class; +}; + +void bse_ladspa_module_derived_type_info (GType type, + BseLadspaInfo *bli, + GTypeInfo *type_info); + +G_END_DECLS + +#endif /* __BSE_LADSPA_MODULE_H__ */ diff -ruN beast-0.5.0/bse/bsemididevice-oss.c beast-0.5.1/bse/bsemididevice-oss.c --- beast-0.5.0/bse/bsemididevice-oss.c 2003-03-10 10:02:53.000000000 +0100 +++ beast-0.5.1/bse/bsemididevice-oss.c 2003-04-11 14:09:12.000000000 +0200 @@ -1,5 +1,5 @@ /* BSE - Bedevilled Sound Engine - * Copyright (C) 1996-2002 Tim Janik + * Copyright (C) 1996-2003 Tim Janik * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -120,21 +120,39 @@ /* try open */ if (!error) { - gint omode = 0; - gint fd; - - omode = (handle->readable && handle->writable ? O_RDWR - : handle->readable ? O_RDONLY - : handle->writable ? O_WRONLY : 0); - - /* need to open explicitely non-blocking or we'll have to wait untill someone else closes the device */ - fd = open (BSE_MIDI_DEVICE_OSS (mdev)->device_name, omode | O_NONBLOCK, 0); - if (fd >= 0) - oss->fd = fd; - else - error = bse_error_from_errno (errno, BSE_ERROR_FILE_OPEN_FAILED); + gint fd, extra_id = -1; + BseErrorType first_error = 0; + do + { + gint omode = (handle->readable && handle->writable ? O_RDWR + : handle->readable ? O_RDONLY + : handle->writable ? O_WRONLY : 0); + gchar *dname; + if (extra_id >= 0) + dname = g_strdup_printf ("%s%u", BSE_MIDI_DEVICE_OSS (mdev)->device_name, extra_id); + else + dname = g_strdup (BSE_MIDI_DEVICE_OSS (mdev)->device_name); + + /* need to open explicitely non-blocking or we'll have to wait untill someone else closes the device */ + fd = open (dname, omode | O_NONBLOCK, 0); + if (fd >= 0) + { + oss->fd = fd; + error = 0; + } + else + { + // g_printerr ("open(\"%s\") failed: %s\n", dname, g_strerror (errno)); + error = bse_error_from_errno (errno, BSE_ERROR_FILE_OPEN_FAILED); + if (!first_error) + first_error = error; + } + g_free (dname); + } + while (error && extra_id++ < 3); + error = error && first_error ? first_error : error; } - + /* setup mdev or shutdown */ if (!error) { diff -ruN beast-0.5.0/bse/bsemididevice-oss.h beast-0.5.1/bse/bsemididevice-oss.h --- beast-0.5.0/bse/bsemididevice-oss.h 2003-03-10 05:40:28.000000000 +0100 +++ beast-0.5.1/bse/bsemididevice-oss.h 2003-04-11 13:50:52.000000000 +0200 @@ -1,5 +1,5 @@ /* BSE - Bedevilled Sound Engine - * Copyright (C) 1996-2002 Tim Janik + * Copyright (C) 1996-2003 Tim Janik * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,10 +23,7 @@ #include -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - +G_BEGIN_DECLS /* --- object type macros --- */ #define BSE_TYPE_MIDI_DEVICE_OSS (BSE_TYPE_ID (BseMidiDeviceOSS)) @@ -51,13 +48,6 @@ BseMidiDeviceClass parent_class; }; - - - - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ +G_END_DECLS #endif /* __BSE_MIDI_DEVICE_OSS_H__ */ diff -ruN beast-0.5.0/bse/bseparasite.c beast-0.5.1/bse/bseparasite.c --- beast-0.5.0/bse/bseparasite.c 2003-03-13 18:15:27.000000000 +0100 +++ beast-0.5.1/bse/bseparasite.c 2003-04-04 19:26:06.000000000 +0200 @@ -18,7 +18,6 @@ #include "bseparasite.h" #include "bsestorage.h" -#include "bsesource.h" // FIXME: compat include #include @@ -213,12 +212,6 @@ /* eat "parasite" identifier */ g_scanner_get_next_token (scanner); - /* ignore these for compat reasons (FIXME: remove post 0.5.0) */ - if (g_scanner_peek_next_token (scanner) == '#') - g_scanner_get_next_token (scanner); - if (g_scanner_peek_next_token (scanner) == '\\') - g_scanner_get_next_token (scanner); - /* parse parasite type */ g_scanner_get_next_token (scanner); if (!(scanner->token >= 'a' && scanner->token <= 'z')) @@ -275,26 +268,12 @@ if (g_scanner_peek_next_token (scanner) == ')') { - if (n_values == 2 && BSE_IS_SOURCE (object) && - quark == g_quark_from_string ("BstRouterCoords")) // FIXME: compat code, remove - { - gfloat *floats = data; - g_object_set (object, - "pos_x", -floats[0] / 100.0, - "pos_y", floats[1] / 100.0, - NULL); - bse_storage_warn (storage, "fixing up parasite to module position: (%f,%f)", -floats[0] / 100.0, floats[1] / 100.0); - g_free (data); - } - else - { - Parasite *parasite = fetch_parasite (object, quark, type, TRUE); - - if (parasite->n_values) - g_free (parasite->data); - parasite->n_values = n_values; - parasite->data = data; - } + Parasite *parasite = fetch_parasite (object, quark, type, TRUE); + + if (parasite->n_values) + g_free (parasite->data); + parasite->n_values = n_values; + parasite->data = data; } else if (n_values) g_free (data); diff -ruN beast-0.5.0/bse/bsepcmdevice-oss.c beast-0.5.1/bse/bsepcmdevice-oss.c --- beast-0.5.0/bse/bsepcmdevice-oss.c 2003-03-13 21:17:29.000000000 +0100 +++ beast-0.5.1/bse/bsepcmdevice-oss.c 2003-04-14 00:07:41.000000000 +0200 @@ -142,35 +142,45 @@ handle->read = NULL; handle->write = NULL; handle->status = NULL; - oss->fd = -1; oss->n_frags = 256; oss->frag_size = 512; oss->bytes_per_value = 2; oss->frag_buf = NULL; - + oss->fd = -1; + /* try open */ if (!error) { - gint omode, fd; - - g_assert (handle->readable && handle->writable); - omode = O_RDWR | O_NONBLOCK; - /* need to open explicitely non-blocking or we'll have to wait until someone else closes the device */ - fd = open (BSE_PCM_DEVICE_OSS (pdev)->device_name, omode, 0); - if (fd < 0) + struct { gchar *postfix; gint mode; } devices[] = { + { "", O_RDWR, }, { "", O_WRONLY, }, // { "", O_RDONLY, }, + { "0", O_RDWR, }, { "0", O_WRONLY, }, // { "0", O_RDONLY, }, + { "1", O_RDWR, }, { "1", O_WRONLY, }, // { "1", O_RDONLY, }, + { "2", O_RDWR, }, { "2", O_WRONLY, }, // { "2", O_RDONLY, }, + { "3", O_RDWR, }, { "3", O_WRONLY, }, // { "3", O_RDONLY, }, + }; + guint i; + for (i = 0; i < G_N_ELEMENTS (devices) && oss->fd < 0; i++) { - /* retry without recording */ - handle->readable = FALSE; - g_assert (handle->readable == FALSE && handle->writable); - omode = O_WRONLY | O_NONBLOCK; - fd = open (BSE_PCM_DEVICE_OSS (pdev)->device_name, omode, 0); + gint fd, omode = devices[i].mode | O_NONBLOCK; /* non blocking to avoid waiting for other clients */ + gchar *dname = g_strconcat (BSE_PCM_DEVICE_OSS (pdev)->device_name, devices[i].postfix, NULL); + fd = open (dname, omode, 0); + if (fd >= 0) + { + oss->fd = fd; + error = 0; + handle->writable = (devices[i].mode == O_RDWR || devices[i].mode == O_WRONLY); + handle->readable = (devices[i].mode == O_RDWR || devices[i].mode == O_RDONLY); + } + else + { + // g_printerr ("open(\"%s\") failed: %s\n", dname, g_strerror (errno)); + if (!error) + error = bse_error_from_errno (errno, BSE_ERROR_FILE_OPEN_FAILED); + } + g_free (dname); } - if (fd >= 0) - oss->fd = fd; - else - error = bse_error_from_errno (errno, BSE_ERROR_FILE_OPEN_FAILED); } - + /* try setup */ if (!error) error = oss_device_setup (oss); diff -ruN beast-0.5.0/bse/bsepcmdevice-oss.h beast-0.5.1/bse/bsepcmdevice-oss.h --- beast-0.5.0/bse/bsepcmdevice-oss.h 2003-03-10 05:40:29.000000000 +0100 +++ beast-0.5.1/bse/bsepcmdevice-oss.h 2003-04-13 23:12:39.000000000 +0200 @@ -23,9 +23,7 @@ #include -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ +G_BEGIN_DECLS /* --- object type macros --- */ @@ -53,8 +51,6 @@ -#ifdef __cplusplus -} -#endif /* __cplusplus */ +G_END_DECLS #endif /* __BSE_PCM_DEVICE_OSS_H__ */ diff -ruN beast-0.5.0/bse/bsepcmdevice.c beast-0.5.1/bse/bsepcmdevice.c --- beast-0.5.0/bse/bsepcmdevice.c 2003-03-10 05:40:29.000000000 +0100 +++ beast-0.5.1/bse/bsepcmdevice.c 2003-03-16 17:07:39.000000000 +0100 @@ -1,5 +1,5 @@ /* BSE - Bedevilled Sound Engine - * Copyright (C) 1998-1999, 2000-2002 Tim Janik + * Copyright (C) 1998-1999, 2000-2003 Tim Janik * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -50,7 +50,7 @@ g_assert (BSE_PCM_FLAGS_USHIFT < BSE_OBJECT_FLAGS_MAX_SHIFT); - return bse_type_register_static (BSE_TYPE_OBJECT, + return bse_type_register_static (BSE_TYPE_ITEM, "BsePcmDevice", "PCM device base type", &pcm_device_info); diff -ruN beast-0.5.0/bse/bsepcmdevice.h beast-0.5.1/bse/bsepcmdevice.h --- beast-0.5.0/bse/bsepcmdevice.h 2003-03-10 09:35:15.000000000 +0100 +++ beast-0.5.1/bse/bsepcmdevice.h 2003-03-16 17:07:06.000000000 +0100 @@ -1,5 +1,5 @@ /* BSE - Bedevilled Sound Engine - * Copyright (C) 1998-1999, 2000-2002 Tim Janik + * Copyright (C) 1998-1999, 2000-2003 Tim Janik * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,7 +20,7 @@ #ifndef __BSE_PCM_DEVICE_H__ #define __BSE_PCM_DEVICE_H__ -#include +#include #include @@ -66,11 +66,11 @@ } BsePcmChannelMode; typedef enum /*< skip >*/ { - BSE_PCM_FLAG_OPEN = 1 << (BSE_OBJECT_FLAGS_USHIFT + 0), - BSE_PCM_FLAG_READABLE = 1 << (BSE_OBJECT_FLAGS_USHIFT + 1), - BSE_PCM_FLAG_WRITABLE = 1 << (BSE_OBJECT_FLAGS_USHIFT + 2) + BSE_PCM_FLAG_OPEN = 1 << (BSE_ITEM_FLAGS_USHIFT + 0), + BSE_PCM_FLAG_READABLE = 1 << (BSE_ITEM_FLAGS_USHIFT + 1), + BSE_PCM_FLAG_WRITABLE = 1 << (BSE_ITEM_FLAGS_USHIFT + 2) } BsePcmFlags; -#define BSE_PCM_FLAGS_USHIFT (BSE_OBJECT_FLAGS_USHIFT + 3) +#define BSE_PCM_FLAGS_USHIFT (BSE_ITEM_FLAGS_USHIFT + 3) /* --- BsePcmDevice structs --- */ @@ -104,7 +104,7 @@ }; struct _BsePcmDevice { - BseObject parent_object; + BseItem parent_instance; /* requested caps */ BsePcmFreqMode req_freq_mode; @@ -115,7 +115,7 @@ }; struct _BsePcmDeviceClass { - BseObjectClass parent_class; + BseItemClass parent_class; guint driver_rating; BseErrorType (*open) (BsePcmDevice *pdev); diff -ruN beast-0.5.0/bse/bsepcmmodule.c beast-0.5.1/bse/bsepcmmodule.c --- beast-0.5.0/bse/bsepcmmodule.c 2003-03-10 05:40:29.000000000 +0100 +++ beast-0.5.1/bse/bsepcmmodule.c 2003-03-16 19:47:16.000000000 +0100 @@ -20,6 +20,8 @@ #include "bsepcmdevice.h" +#define DEBUG sfi_debug_keyfunc ("pcmmodule") + /* --- typedefs & structures --- */ typedef struct @@ -86,7 +88,8 @@ BsePcmHandle *handle = mdata->handle; BsePcmStatus status; guint fillmark, watermark; - + static gint debug_hint = 0; + /* get playback status */ bse_pcm_handle_status (mdata->handle, &status); @@ -94,12 +97,25 @@ watermark = MIN (watermark, handle->playback_watermark); fillmark = status.total_playback_values - status.n_playback_values_available; if (fillmark <= watermark) - return TRUE; /* need to write out stuff now */ + { + if (!debug_hint++) + { + gfloat perc = status.n_playback_values_available * 100. / status.total_playback_values; + DEBUG ("free=%f%% latency=%f %s", perc, + handle->playback_watermark / (gfloat) handle->n_channels / handle->mix_freq, + perc >= 97.0 ? "**" : ""); + } + return TRUE; /* need to write out stuff now */ + } fillmark -= watermark; fillmark /= handle->n_channels; *timeout_p = fillmark * 1000.0 / mdata->handle->mix_freq; - + + DEBUG ("free=%f%% latency=%f", status.n_playback_values_available * 100. / status.total_playback_values, + handle->playback_watermark / (gfloat) handle->n_channels / handle->mix_freq); + debug_hint = 0; + return *timeout_p == 0; #endif } diff -ruN beast-0.5.0/bse/bseplugin.c beast-0.5.1/bse/bseplugin.c --- beast-0.5.0/bse/bseplugin.c 2003-03-10 05:40:29.000000000 +0100 +++ beast-0.5.1/bse/bseplugin.c 2003-04-02 17:39:59.000000000 +0200 @@ -294,7 +294,7 @@ type = bse_type_register_dynamic (espec->parent_type, espec->name, NULL, - plugin); + G_TYPE_PLUGIN (plugin)); /* FIXME: can't register dynamic type transforms with glib-2.2.1 * g_value_register_transform_func (SFI_TYPE_CHOICE, type, sfi_value_choice2enum_simple); * g_value_register_transform_func (type, SFI_TYPE_CHOICE, sfi_value_enum2choice); @@ -786,10 +786,6 @@ return NULL; } -/* --- directory scanning --- */ -#include -#include - GSList* bse_plugin_dir_list_files (const gchar *dir_list) { diff -ruN beast-0.5.0/bse/bsequery.c beast-0.5.1/bse/bsequery.c --- beast-0.5.0/bse/bsequery.c 2003-03-10 10:03:01.000000000 +0100 +++ beast-0.5.1/bse/bsequery.c 2003-04-02 18:03:46.000000000 +0200 @@ -299,7 +299,7 @@ } else if (strcmp ("-p", argv[i]) == 0) { - // FIXME: bsw_register_plugins (NULL, TRUE, NULL, NULL, NULL); + // bse_ladspa_plugin_test (); } else if (strcmp ("-h", argv[i]) == 0) { diff -ruN beast-0.5.0/bse/bseserver.c beast-0.5.1/bse/bseserver.c --- beast-0.5.0/bse/bseserver.c 2003-03-10 05:40:30.000000000 +0100 +++ beast-0.5.1/bse/bseserver.c 2003-04-14 00:07:42.000000000 +0200 @@ -1,5 +1,5 @@ /* BSE - Bedevilled Sound Engine - * Copyright (C) 1997-1999, 2000-2002 Tim Janik + * Copyright (C) 1997-1999, 2000-2003 Tim Janik * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -495,7 +495,7 @@ if (error) { if (choice != BSE_TYPE_MIDI_DEVICE_NULL) - sfi_info ("failed to open midi device \"%s\" (reverting to null device): %s", + sfi_info ("failed to open midi device %s (reverting to null device): %s", bse_object_debug_name (server->midi_device), bse_error_blurb (error)); g_object_unref (server->midi_device); server->midi_device = NULL; diff -ruN beast-0.5.0/bse/bseserver.gen-proc.c beast-0.5.1/bse/bseserver.gen-proc.c --- beast-0.5.0/bse/bseserver.gen-proc.c 2003-03-13 20:57:28.000000000 +0100 +++ beast-0.5.1/bse/bseserver.gen-proc.c 2003-04-13 21:13:56.000000000 +0200 @@ -14,20 +14,21 @@ #include #include #include +#include #include "PKG_config.h" #include -#line 34 "bseserver.proc" +#line 35 "bseserver.proc" /* --- use-new-project --- */ static GType type_id_use_new_project = 0; static void use_new_project_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { -#line 36 "bseserver.proc" +#line 37 "bseserver.proc" { -#line 38 "bseserver.proc" +#line 39 "bseserver.proc" *(in_pspecs++) = bse_param_spec_object ("server", "Server", NULL, BSE_TYPE_SERVER, SFI_PARAM_DEFAULT); *(in_pspecs++) = sfi_pspec_string ("name", "Project Name", NULL, @@ -35,22 +36,22 @@ *(out_pspecs++) = bse_param_spec_object ("project", "Project", NULL, BSE_TYPE_PROJECT, SFI_PARAM_DEFAULT); } -#line 37 "bseserver.proc" +#line 38 "bseserver.proc" proc->help = "Create a new project, owned by the caller (name is modified to be unique if necessary)"; -#line 32 "bseserver.proc" - proc->authors = "Tim Janik "; #line 33 "bseserver.proc" + proc->authors = "Tim Janik "; +#line 34 "bseserver.proc" proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; -#line 45 "bseserver.proc" +#line 46 "bseserver.proc" } static BseErrorType -#line 45 "bseserver.proc" +#line 46 "bseserver.proc" use_new_project_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) -#line 48 "bseserver.proc" -{ #line 49 "bseserver.proc" +{ +#line 50 "bseserver.proc" BseServer *server = (BseServer*) bse_value_get_object (in_values++); gchar *name = sfi_value_get_string (in_values++); @@ -58,12 +59,12 @@ guint num = 1; BseProject *project; -#line 56 "bseserver.proc" +#line 57 "bseserver.proc" if (!BSE_IS_SERVER (server) || !name) return BSE_ERROR_PROC_PARAM_INVAL; -#line 60 "bseserver.proc" +#line 61 "bseserver.proc" uname = g_strdup (name); while (bse_server_find_project (server, uname)) @@ -72,14 +73,14 @@ uname = g_strdup_printf ("%s-%u", name, num++); } -#line 68 "bseserver.proc" +#line 69 "bseserver.proc" project = bse_server_create_project (server, uname); g_free (uname); bse_item_use (BSE_ITEM (project)); g_object_unref (project); -#line 74 "bseserver.proc" +#line 75 "bseserver.proc" bse_value_set_object (out_values++, G_OBJECT (project)); @@ -90,36 +91,36 @@ static GType type_id_get_midi_notifier = 0; static void get_midi_notifier_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { -#line 80 "bseserver.proc" +#line 81 "bseserver.proc" { -#line 82 "bseserver.proc" +#line 83 "bseserver.proc" *(in_pspecs++) = bse_param_spec_object ("server", "Server", NULL, BSE_TYPE_SERVER, SFI_PARAM_DEFAULT); *(out_pspecs++) = bse_param_spec_object ("midi_notifier", "Midi Notifier", NULL, BSE_TYPE_MIDI_NOTIFIER, SFI_PARAM_DEFAULT); } -#line 81 "bseserver.proc" +#line 82 "bseserver.proc" proc->help = "Retrieve the global midi notifier object."; -#line 32 "bseserver.proc" - proc->authors = "Tim Janik "; #line 33 "bseserver.proc" + proc->authors = "Tim Janik "; +#line 34 "bseserver.proc" proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; -#line 87 "bseserver.proc" +#line 88 "bseserver.proc" } static BseErrorType -#line 87 "bseserver.proc" +#line 88 "bseserver.proc" get_midi_notifier_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) -#line 90 "bseserver.proc" -{ #line 91 "bseserver.proc" +{ +#line 92 "bseserver.proc" BseServer *self = bse_value_get_object (in_values++); BseMidiReceiver *midi_receiver; BseMidiNotifier *notifier; -#line 96 "bseserver.proc" +#line 97 "bseserver.proc" if (!BSE_IS_SERVER (self)) return BSE_ERROR_PROC_PARAM_INVAL; @@ -133,7 +134,7 @@ g_object_unref (notifier); } -#line 109 "bseserver.proc" +#line 110 "bseserver.proc" bse_value_set_object (out_values++, G_OBJECT (notifier)); @@ -144,9 +145,9 @@ static GType type_id_can_load = 0; static void can_load_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { -#line 115 "bseserver.proc" +#line 116 "bseserver.proc" { -#line 117 "bseserver.proc" +#line 118 "bseserver.proc" *(in_pspecs++) = bse_param_spec_object ("server", "Server", NULL, BSE_TYPE_SERVER, SFI_PARAM_DEFAULT); *(in_pspecs++) = sfi_pspec_string ("file_name", "File Name", "The file to find a loader for", @@ -154,33 +155,33 @@ *(out_pspecs++) = sfi_pspec_bool ("can-load", NULL, NULL, FALSE, SFI_PARAM_DEFAULT); } -#line 116 "bseserver.proc" +#line 117 "bseserver.proc" proc->help = "Check whether a loader can be found for a wave file"; -#line 32 "bseserver.proc" - proc->authors = "Tim Janik "; #line 33 "bseserver.proc" + proc->authors = "Tim Janik "; +#line 34 "bseserver.proc" proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; -#line 124 "bseserver.proc" +#line 125 "bseserver.proc" } static BseErrorType -#line 124 "bseserver.proc" +#line 125 "bseserver.proc" can_load_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) -#line 127 "bseserver.proc" -{ #line 128 "bseserver.proc" +{ +#line 129 "bseserver.proc" BseServer *server = bse_value_get_object (in_values++); gchar *file_name = sfi_value_get_string (in_values++); GslWaveFileInfo *finfo; -#line 133 "bseserver.proc" +#line 134 "bseserver.proc" if (!BSE_IS_SERVER (server) || !file_name) return BSE_ERROR_PROC_PARAM_INVAL; -#line 137 "bseserver.proc" +#line 138 "bseserver.proc" finfo = gsl_wave_file_info_load (file_name, NULL); sfi_value_set_bool (out_values++, finfo != NULL); @@ -194,9 +195,9 @@ static GType type_id_describe_note = 0; static void describe_note_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { -#line 146 "bseserver.proc" +#line 147 "bseserver.proc" { -#line 148 "bseserver.proc" +#line 149 "bseserver.proc" *(in_pspecs++) = bse_param_spec_object ("server", "Server", NULL, BSE_TYPE_SERVER, SFI_PARAM_DEFAULT); *(in_pspecs++) = bse_pspec_note_simple ("note", "Note", NULL, SFI_PARAM_DEFAULT); @@ -204,33 +205,33 @@ *(out_pspecs++) = bse_param_spec_boxed ("note-description", "Note Description", NULL, BSE_TYPE_NOTE_DESCRIPTION, SFI_PARAM_DEFAULT); } -#line 147 "bseserver.proc" +#line 148 "bseserver.proc" proc->help = "Describe a note, providing information about its octave, semitone, frequency, etc."; -#line 32 "bseserver.proc" - proc->authors = "Tim Janik "; #line 33 "bseserver.proc" + proc->authors = "Tim Janik "; +#line 34 "bseserver.proc" proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; -#line 155 "bseserver.proc" +#line 156 "bseserver.proc" } static BseErrorType -#line 155 "bseserver.proc" +#line 156 "bseserver.proc" describe_note_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) -#line 158 "bseserver.proc" -{ #line 159 "bseserver.proc" +{ +#line 160 "bseserver.proc" BseServer *server = bse_value_get_object (in_values++); gint note = sfi_value_get_int (in_values++); gint fine_tune = sfi_value_get_int (in_values++); -#line 164 "bseserver.proc" +#line 165 "bseserver.proc" if (!BSE_IS_SERVER (server)) return BSE_ERROR_PROC_PARAM_INVAL; -#line 168 "bseserver.proc" +#line 169 "bseserver.proc" bse_value_take_boxed (out_values++, bse_note_description (note, fine_tune)); @@ -241,9 +242,9 @@ static GType type_id_note_from_freq = 0; static void note_from_freq_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { -#line 174 "bseserver.proc" +#line 175 "bseserver.proc" { -#line 176 "bseserver.proc" +#line 177 "bseserver.proc" *(in_pspecs++) = bse_param_spec_object ("server", "Server", NULL, BSE_TYPE_SERVER, SFI_PARAM_DEFAULT); *(in_pspecs++) = sfi_pspec_real ("freq", "Frequency", NULL, @@ -253,33 +254,33 @@ *(out_pspecs++) = bse_param_spec_boxed ("note-description", "Note Description", NULL, BSE_TYPE_NOTE_DESCRIPTION, SFI_PARAM_DEFAULT); } -#line 175 "bseserver.proc" +#line 176 "bseserver.proc" proc->help = "Describe a note, given its frequency."; -#line 32 "bseserver.proc" - proc->authors = "Tim Janik "; #line 33 "bseserver.proc" + proc->authors = "Tim Janik "; +#line 34 "bseserver.proc" proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; -#line 185 "bseserver.proc" +#line 186 "bseserver.proc" } static BseErrorType -#line 185 "bseserver.proc" +#line 186 "bseserver.proc" note_from_freq_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) -#line 188 "bseserver.proc" -{ #line 189 "bseserver.proc" +{ +#line 190 "bseserver.proc" BseServer *server = bse_value_get_object (in_values++); gfloat freq = sfi_value_get_real (in_values++); gint note; -#line 194 "bseserver.proc" +#line 195 "bseserver.proc" if (!BSE_IS_SERVER (server)) return BSE_ERROR_PROC_PARAM_INVAL; -#line 198 "bseserver.proc" +#line 199 "bseserver.proc" note = bse_note_from_freq (freq); bse_value_take_boxed (out_values++, bse_note_description (note, 0)); @@ -291,9 +292,9 @@ static GType type_id_note_from_string = 0; static void note_from_string_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { -#line 205 "bseserver.proc" +#line 206 "bseserver.proc" { -#line 207 "bseserver.proc" +#line 208 "bseserver.proc" *(in_pspecs++) = bse_param_spec_object ("server", "Server", NULL, BSE_TYPE_SERVER, SFI_PARAM_DEFAULT); *(in_pspecs++) = sfi_pspec_string ("name", "Name", NULL, @@ -301,33 +302,33 @@ *(out_pspecs++) = bse_param_spec_boxed ("note-description", "Note Description", NULL, BSE_TYPE_NOTE_DESCRIPTION, SFI_PARAM_DEFAULT); } -#line 206 "bseserver.proc" +#line 207 "bseserver.proc" proc->help = "Describe a note, given its name and octave offset."; -#line 32 "bseserver.proc" - proc->authors = "Tim Janik "; #line 33 "bseserver.proc" + proc->authors = "Tim Janik "; +#line 34 "bseserver.proc" proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; -#line 214 "bseserver.proc" +#line 215 "bseserver.proc" } static BseErrorType -#line 214 "bseserver.proc" +#line 215 "bseserver.proc" note_from_string_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) -#line 217 "bseserver.proc" -{ #line 218 "bseserver.proc" +{ +#line 219 "bseserver.proc" BseServer *server = bse_value_get_object (in_values++); gchar *name = sfi_value_get_string (in_values++); gint note; -#line 223 "bseserver.proc" +#line 224 "bseserver.proc" if (!BSE_IS_SERVER (server) || !name) return BSE_ERROR_PROC_PARAM_INVAL; -#line 227 "bseserver.proc" +#line 228 "bseserver.proc" note = bse_note_from_string (name); bse_value_take_boxed (out_values++, bse_note_description (note, 0)); @@ -339,9 +340,9 @@ static GType type_id_construct_note = 0; static void construct_note_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { -#line 234 "bseserver.proc" +#line 235 "bseserver.proc" { -#line 236 "bseserver.proc" +#line 237 "bseserver.proc" *(in_pspecs++) = bse_param_spec_object ("server", "Server", NULL, BSE_TYPE_SERVER, SFI_PARAM_DEFAULT); *(in_pspecs++) = sfi_pspec_int ("semitone", NULL, NULL, @@ -352,22 +353,22 @@ *(out_pspecs++) = bse_param_spec_boxed ("note-description", "Note Description", NULL, BSE_TYPE_NOTE_DESCRIPTION, SFI_PARAM_DEFAULT); } -#line 235 "bseserver.proc" +#line 236 "bseserver.proc" proc->help = "Describe a note, given its semitone, octave and fine tune."; -#line 32 "bseserver.proc" - proc->authors = "Tim Janik "; #line 33 "bseserver.proc" + proc->authors = "Tim Janik "; +#line 34 "bseserver.proc" proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; -#line 246 "bseserver.proc" +#line 247 "bseserver.proc" } static BseErrorType -#line 246 "bseserver.proc" +#line 247 "bseserver.proc" construct_note_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) -#line 249 "bseserver.proc" -{ #line 250 "bseserver.proc" +{ +#line 251 "bseserver.proc" BseServer *server = bse_value_get_object (in_values++); guint semitone = sfi_value_get_int (in_values++); @@ -375,12 +376,12 @@ gint fine_tune = sfi_value_get_int (in_values++); gint note; -#line 257 "bseserver.proc" +#line 258 "bseserver.proc" if (!BSE_IS_SERVER (server)) return BSE_ERROR_PROC_PARAM_INVAL; -#line 261 "bseserver.proc" +#line 262 "bseserver.proc" note = BSE_NOTE_GENERIC (octave, semitone); bse_value_take_boxed (out_values++, bse_note_description (note, fine_tune)); @@ -392,48 +393,48 @@ static GType type_id_n_scripts = 0; static void n_scripts_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { -#line 268 "bseserver.proc" +#line 269 "bseserver.proc" { -#line 270 "bseserver.proc" +#line 271 "bseserver.proc" *(in_pspecs++) = bse_param_spec_object ("server", "Server", NULL, BSE_TYPE_SERVER, SFI_PARAM_DEFAULT); *(out_pspecs++) = sfi_pspec_int ("n_connections", NULL, "Number of Connections", 0, 0, G_MAXINT, 1, SFI_PARAM_DEFAULT); } -#line 269 "bseserver.proc" +#line 270 "bseserver.proc" proc->help = "Return the number of scripts currently running on this server."; -#line 32 "bseserver.proc" - proc->authors = "Tim Janik "; #line 33 "bseserver.proc" + proc->authors = "Tim Janik "; +#line 34 "bseserver.proc" proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; -#line 276 "bseserver.proc" +#line 277 "bseserver.proc" } static BseErrorType -#line 276 "bseserver.proc" +#line 277 "bseserver.proc" n_scripts_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) -#line 279 "bseserver.proc" -{ #line 280 "bseserver.proc" +{ +#line 281 "bseserver.proc" BseServer *server = bse_value_get_object (in_values++); GSList *slist; guint n_scripts = 0; -#line 285 "bseserver.proc" +#line 286 "bseserver.proc" if (!BSE_IS_SERVER (server)) return BSE_ERROR_PROC_PARAM_INVAL; -#line 289 "bseserver.proc" +#line 290 "bseserver.proc" for (slist = server->children; slist; slist = slist->next) if (BSE_IS_JANITOR (slist->data)) n_scripts++; -#line 294 "bseserver.proc" +#line 295 "bseserver.proc" sfi_value_set_int (out_values++, n_scripts); @@ -444,39 +445,39 @@ static GType type_id_preferences_locked = 0; static void preferences_locked_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { -#line 300 "bseserver.proc" +#line 301 "bseserver.proc" { -#line 302 "bseserver.proc" +#line 303 "bseserver.proc" *(in_pspecs++) = bse_param_spec_object ("server", "Server", NULL, BSE_TYPE_SERVER, SFI_PARAM_DEFAULT); *(out_pspecs++) = sfi_pspec_bool ("locked", NULL, NULL, FALSE, SFI_PARAM_DEFAULT); } -#line 301 "bseserver.proc" +#line 302 "bseserver.proc" proc->help = "Returns whether the bse-preferences property is currently locked against modifications or not."; -#line 32 "bseserver.proc" - proc->authors = "Tim Janik "; #line 33 "bseserver.proc" + proc->authors = "Tim Janik "; +#line 34 "bseserver.proc" proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; -#line 307 "bseserver.proc" +#line 308 "bseserver.proc" } static BseErrorType -#line 307 "bseserver.proc" +#line 308 "bseserver.proc" preferences_locked_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) -#line 310 "bseserver.proc" -{ #line 311 "bseserver.proc" +{ +#line 312 "bseserver.proc" BseServer *server = bse_value_get_object (in_values++); -#line 314 "bseserver.proc" +#line 315 "bseserver.proc" if (!BSE_IS_SERVER (server)) return BSE_ERROR_PROC_PARAM_INVAL; -#line 318 "bseserver.proc" +#line 319 "bseserver.proc" sfi_value_set_int (out_values++, bse_gconfig_locked ()); @@ -533,36 +534,36 @@ static GType type_id_register_scripts = 0; static void register_scripts_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { -#line 370 "bseserver.proc" +#line 371 "bseserver.proc" { -#line 372 "bseserver.proc" +#line 373 "bseserver.proc" *(in_pspecs++) = bse_param_spec_object ("server", "Server", NULL, BSE_TYPE_SERVER, SFI_PARAM_DEFAULT); } -#line 371 "bseserver.proc" +#line 372 "bseserver.proc" proc->help = "Register external scripts."; -#line 32 "bseserver.proc" - proc->authors = "Tim Janik "; #line 33 "bseserver.proc" + proc->authors = "Tim Janik "; +#line 34 "bseserver.proc" proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; -#line 375 "bseserver.proc" +#line 376 "bseserver.proc" } static BseErrorType -#line 375 "bseserver.proc" +#line 376 "bseserver.proc" register_scripts_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) -#line 378 "bseserver.proc" +#line 379 "bseserver.proc" { static gboolean registration_done = FALSE; -#line 380 "bseserver.proc" +#line 381 "bseserver.proc" BseServer *server = bse_value_get_object (in_values++); const gchar *path = BSE_PATH_SCRIPTS; ScriptRegistration *scr_list = NULL; GSList *free_list, *list; -#line 386 "bseserver.proc" +#line 387 "bseserver.proc" if (!BSE_IS_SERVER (server)) return BSE_ERROR_PROC_PARAM_INVAL; @@ -596,20 +597,31 @@ register_plugins (gpointer data) { BseServer *server = data; - GSList *slist = g_object_get_data (server, "plugin-registration-queue"); + GSList *plugin_slist = g_object_get_data (server, "plugin-registration-queue"); + GSList *ladspa_slist = g_object_get_data (server, "ladspa-registration-queue"); const gchar *error; - if (!slist) + if (plugin_slist) + { + g_object_set_data (server, "plugin-registration-queue", plugin_slist->next); + error = bse_plugin_check_load (plugin_slist->data); + bse_server_registration (server, BSE_REGISTER_PLUGIN, plugin_slist->data, error); + g_free (plugin_slist->data); + g_slist_free_1 (plugin_slist); + } + else if (ladspa_slist) + { + g_object_set_data (server, "ladspa-registration-queue", ladspa_slist->next); + error = bse_ladspa_plugin_check_load (ladspa_slist->data); + bse_server_registration (server, BSE_REGISTER_PLUGIN, ladspa_slist->data, error); + g_free (ladspa_slist->data); + g_slist_free_1 (ladspa_slist); + } + else { bse_server_registration (server, BSE_REGISTER_DONE, NULL, NULL); return FALSE; } - g_object_set_data (server, "plugin-registration-queue", slist->next); - - error = bse_plugin_check_load (slist->data); - bse_server_registration (server, BSE_REGISTER_PLUGIN, slist->data, error); - g_free (slist->data); - g_slist_free_1 (slist); return TRUE; } @@ -617,35 +629,35 @@ static GType type_id_register_plugins = 0; static void register_plugins_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { -#line 436 "bseserver.proc" +#line 448 "bseserver.proc" { -#line 438 "bseserver.proc" +#line 450 "bseserver.proc" *(in_pspecs++) = bse_param_spec_object ("server", "Server", NULL, BSE_TYPE_SERVER, SFI_PARAM_DEFAULT); } -#line 437 "bseserver.proc" +#line 449 "bseserver.proc" proc->help = "Register core plugins."; -#line 32 "bseserver.proc" - proc->authors = "Tim Janik "; #line 33 "bseserver.proc" + proc->authors = "Tim Janik "; +#line 34 "bseserver.proc" proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; -#line 441 "bseserver.proc" +#line 453 "bseserver.proc" } static BseErrorType -#line 441 "bseserver.proc" +#line 453 "bseserver.proc" register_plugins_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) -#line 444 "bseserver.proc" +#line 456 "bseserver.proc" { static gboolean registration_done = FALSE; -#line 446 "bseserver.proc" +#line 458 "bseserver.proc" BseServer *server = bse_value_get_object (in_values++); - const gchar *path = BSE_PATH_PLUGINS; + gchar *paths; GSList *slist; -#line 451 "bseserver.proc" +#line 463 "bseserver.proc" if (!BSE_IS_SERVER (server)) return BSE_ERROR_PROC_PARAM_INVAL; @@ -657,8 +669,17 @@ } registration_done = TRUE; - slist = bse_plugin_dir_list_files (path); + slist = bse_plugin_dir_list_files (BSE_PATH_PLUGINS); g_object_set_data (server, "plugin-registration-queue", slist); + + slist = bse_ladspa_plugin_dir_list_files (BSE_PATH_LADSPA); + paths = g_getenv ("LADSPA_PATH"); + if (paths) + { + GSList *slist2 = bse_ladspa_plugin_dir_list_files (paths); + slist = g_slist_concat (slist, slist2); + } + g_object_set_data (server, "ladspa-registration-queue", slist); bse_idle_normal (register_plugins, server); return BSE_ERROR_NONE; @@ -673,28 +694,28 @@ static GType type_id_save_preferences = 0; static void save_preferences_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { -#line 474 "bseserver.proc" +#line 495 "bseserver.proc" { -#line 476 "bseserver.proc" +#line 497 "bseserver.proc" *(in_pspecs++) = bse_param_spec_object ("server", "Server", NULL, BSE_TYPE_SERVER, SFI_PARAM_DEFAULT); } -#line 475 "bseserver.proc" +#line 496 "bseserver.proc" proc->help = "Request the bse-preferences property to be saved into BSE's configuration file."; -#line 32 "bseserver.proc" - proc->authors = "Tim Janik "; #line 33 "bseserver.proc" + proc->authors = "Tim Janik "; +#line 34 "bseserver.proc" proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; -#line 479 "bseserver.proc" +#line 500 "bseserver.proc" } static BseErrorType -#line 479 "bseserver.proc" +#line 500 "bseserver.proc" save_preferences_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) -#line 482 "bseserver.proc" +#line 503 "bseserver.proc" { -#line 483 "bseserver.proc" +#line 504 "bseserver.proc" BseServer *server = bse_value_get_object (in_values++); SfiWStore *wstore; @@ -703,14 +724,14 @@ SfiRec *rec; gint fd; -#line 491 "bseserver.proc" +#line 512 "bseserver.proc" if (!BSE_IS_SERVER (server)) return BSE_ERROR_PROC_PARAM_INVAL; file_name = g_strconcat (g_get_home_dir (), "/.bserc", NULL); fd = open (file_name, -#line 497 "bseserver.proc" +#line 518 "bseserver.proc" O_WRONLY | O_CREAT | O_TRUNC, 0666); g_free (file_name); @@ -720,7 +741,7 @@ wstore = sfi_wstore_new (); sfi_wstore_printf (wstore, "; rc-file for BSE v%s\n", BSE_VERSION); -#line 506 "bseserver.proc" +#line 527 "bseserver.proc" sfi_wstore_puts (wstore, "\n; BseGConfig Dump\n"); rec = bse_gconfig_to_rec (bse_global_config); @@ -730,7 +751,7 @@ sfi_rec_unref (rec); sfi_wstore_puts (wstore, "\n"); -#line 515 "bseserver.proc" +#line 536 "bseserver.proc" sfi_wstore_flush_fd (wstore, fd); sfi_wstore_destroy (wstore); diff -ruN beast-0.5.0/bse/bseserver.h beast-0.5.1/bse/bseserver.h --- beast-0.5.0/bse/bseserver.h 2003-03-10 05:40:30.000000000 +0100 +++ beast-0.5.1/bse/bseserver.h 2003-04-01 18:45:17.000000000 +0200 @@ -1,5 +1,5 @@ /* BSE - Bedevilled Sound Engine - * Copyright (C) 1997-1999, 2000-2002 Tim Janik + * Copyright (C) 1997-1999, 2000-2003 Tim Janik * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,10 +22,7 @@ #include #include -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - +G_BEGIN_DECLS /* --- BSE type macros --- */ #define BSE_TYPE_SERVER (BSE_TYPE_ID (BseServer)) @@ -122,9 +119,6 @@ SfiComWire *wire); void bse_server_notify_gconfig (BseServer *server); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ +G_END_DECLS #endif /* __BSE_SERVER_H__ */ diff -ruN beast-0.5.0/bse/bseserver.proc beast-0.5.1/bse/bseserver.proc --- beast-0.5.0/bse/bseserver.proc 2003-03-10 10:03:02.000000000 +0100 +++ beast-0.5.1/bse/bseserver.proc 2003-04-03 23:58:33.000000000 +0200 @@ -1,5 +1,5 @@ /* BSE - Bedevilled Sound Engine -*-mode: c;-*- - * Copyright (C) 2000-2002 Tim Janik + * Copyright (C) 2000-2003 Tim Janik * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,6 +25,7 @@ #include #include #include +#include #include "PKG_config.h" #include @@ -416,20 +417,31 @@ register_plugins (gpointer data) { BseServer *server = data; - GSList *slist = g_object_get_data (server, "plugin-registration-queue"); + GSList *plugin_slist = g_object_get_data (server, "plugin-registration-queue"); + GSList *ladspa_slist = g_object_get_data (server, "ladspa-registration-queue"); const gchar *error; - if (!slist) + if (plugin_slist) + { + g_object_set_data (server, "plugin-registration-queue", plugin_slist->next); + error = bse_plugin_check_load (plugin_slist->data); + bse_server_registration (server, BSE_REGISTER_PLUGIN, plugin_slist->data, error); + g_free (plugin_slist->data); + g_slist_free_1 (plugin_slist); + } + else if (ladspa_slist) + { + g_object_set_data (server, "ladspa-registration-queue", ladspa_slist->next); + error = bse_ladspa_plugin_check_load (ladspa_slist->data); + bse_server_registration (server, BSE_REGISTER_PLUGIN, ladspa_slist->data, error); + g_free (ladspa_slist->data); + g_slist_free_1 (ladspa_slist); + } + else { bse_server_registration (server, BSE_REGISTER_DONE, NULL, NULL); return FALSE; } - g_object_set_data (server, "plugin-registration-queue", slist->next); - - error = bse_plugin_check_load (slist->data); - bse_server_registration (server, BSE_REGISTER_PLUGIN, slist->data, error); - g_free (slist->data); - g_slist_free_1 (slist); return TRUE; } @@ -445,7 +457,7 @@ static gboolean registration_done = FALSE; /* extract parameter values */ BseServer *server = bse_value_get_object (in_values++); - const gchar *path = BSE_PATH_PLUGINS; + gchar *paths; GSList *slist; /* check parameters */ @@ -459,8 +471,17 @@ } registration_done = TRUE; - slist = bse_plugin_dir_list_files (path); + slist = bse_plugin_dir_list_files (BSE_PATH_PLUGINS); g_object_set_data (server, "plugin-registration-queue", slist); + + slist = bse_ladspa_plugin_dir_list_files (BSE_PATH_LADSPA); + paths = g_getenv ("LADSPA_PATH"); + if (paths) + { + GSList *slist2 = bse_ladspa_plugin_dir_list_files (paths); + slist = g_slist_concat (slist, slist2); + } + g_object_set_data (server, "ladspa-registration-queue", slist); bse_idle_normal (register_plugins, server); return BSE_ERROR_NONE; diff -ruN beast-0.5.0/bse/bsesource.c beast-0.5.1/bse/bsesource.c --- beast-0.5.0/bse/bsesource.c 2003-03-10 05:40:30.000000000 +0100 +++ beast-0.5.1/bse/bsesource.c 2003-04-06 13:55:54.000000000 +0200 @@ -1,5 +1,5 @@ /* BSE - Bedevilled Sound Engine - * Copyright (C) 1998-1999, 2000-2002 Tim Janik + * Copyright (C) 1998-1999, 2000-2003 Tim Janik * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -140,14 +140,14 @@ bse_source_class_base_init (BseSourceClass *class) { class->channel_defs.n_ichannels = 0; + class->channel_defs.ichannel_idents = NULL; class->channel_defs.ichannel_names = NULL; - class->channel_defs.ichannel_cnames = NULL; class->channel_defs.ichannel_blurbs = NULL; class->channel_defs.ijstreams = NULL; class->channel_defs.n_jstreams = 0; class->channel_defs.n_ochannels = 0; + class->channel_defs.ochannel_idents = NULL; class->channel_defs.ochannel_names = NULL; - class->channel_defs.ochannel_cnames = NULL; class->channel_defs.ochannel_blurbs = NULL; } @@ -158,32 +158,32 @@ for (i = 0; i < class->channel_defs.n_ichannels; i++) { - g_free (class->channel_defs.ichannel_cnames[i]); + g_free (class->channel_defs.ichannel_idents[i]); g_free (class->channel_defs.ichannel_names[i]); g_free (class->channel_defs.ichannel_blurbs[i]); } + g_free (class->channel_defs.ichannel_idents); g_free (class->channel_defs.ichannel_names); - g_free (class->channel_defs.ichannel_cnames); g_free (class->channel_defs.ichannel_blurbs); g_free (class->channel_defs.ijstreams); class->channel_defs.n_jstreams = 0; class->channel_defs.n_ichannels = 0; + class->channel_defs.ichannel_idents = NULL; class->channel_defs.ichannel_names = NULL; - class->channel_defs.ichannel_cnames = NULL; class->channel_defs.ichannel_blurbs = NULL; class->channel_defs.ijstreams = NULL; for (i = 0; i < class->channel_defs.n_ochannels; i++) { - g_free (class->channel_defs.ochannel_cnames[i]); + g_free (class->channel_defs.ochannel_idents[i]); g_free (class->channel_defs.ochannel_names[i]); g_free (class->channel_defs.ochannel_blurbs[i]); } + g_free (class->channel_defs.ochannel_idents); g_free (class->channel_defs.ochannel_names); - g_free (class->channel_defs.ochannel_cnames); g_free (class->channel_defs.ochannel_blurbs); class->channel_defs.n_ochannels = 0; + class->channel_defs.ochannel_idents = NULL; class->channel_defs.ochannel_names = NULL; - class->channel_defs.ochannel_cnames = NULL; class->channel_defs.ochannel_blurbs = NULL; } @@ -335,6 +335,7 @@ static guint bse_source_class_add_ijchannel (BseSourceClass *source_class, + const gchar *ident, const gchar *name, const gchar *blurb, gboolean is_joint_channel) @@ -344,15 +345,17 @@ gchar *cname; g_return_val_if_fail (BSE_IS_SOURCE_CLASS (source_class), 0); - g_return_val_if_fail (name != NULL, 0); + g_return_val_if_fail (ident != NULL, 0); + if (!name) + name = ident; if (!blurb) blurb = name; - cname = channel_dup_canonify (name); + cname = channel_dup_canonify (ident); i = 0; // FIXME: bse_source_find_ichannel (source, cname); if (i == ~0) { - g_warning ("source class `%s' already has a channel \"%s\" with canonical name \"%s\"", + g_warning ("source class `%s' already has a channel \"%s\" with identifier \"%s\"", G_OBJECT_CLASS_NAME (source_class), name, cname); g_free (cname); @@ -360,12 +363,12 @@ } defs = &source_class->channel_defs; i = defs->n_ichannels++; + defs->ichannel_idents = g_renew (gchar*, defs->ichannel_idents, defs->n_ichannels); defs->ichannel_names = g_renew (gchar*, defs->ichannel_names, defs->n_ichannels); - defs->ichannel_cnames = g_renew (gchar*, defs->ichannel_cnames, defs->n_ichannels); defs->ichannel_blurbs = g_renew (gchar*, defs->ichannel_blurbs, defs->n_ichannels); defs->ijstreams = g_renew (guint, defs->ijstreams, defs->n_ichannels); + defs->ichannel_idents[i] = cname; defs->ichannel_names[i] = g_strdup (name); - defs->ichannel_cnames[i] = cname; defs->ichannel_blurbs[i] = g_strdup (blurb); if (is_joint_channel) { @@ -379,11 +382,29 @@ } guint +bse_source_class_add_ichannel_ident (BseSourceClass *source_class, + const gchar *ident, + const gchar *name, + const gchar *blurb) +{ + return bse_source_class_add_ijchannel (source_class, ident, name, blurb, FALSE); +} + +guint bse_source_class_add_ichannel (BseSourceClass *source_class, const gchar *name, const gchar *blurb) { - return bse_source_class_add_ijchannel (source_class, name, blurb, FALSE); + return bse_source_class_add_ijchannel (source_class, name, name, blurb, FALSE); +} + +guint +bse_source_class_add_jchannel_ident (BseSourceClass *source_class, + const gchar *ident, + const gchar *name, + const gchar *blurb) +{ + return bse_source_class_add_ijchannel (source_class, ident, name, blurb, TRUE); } guint @@ -391,7 +412,7 @@ const gchar *name, const gchar *blurb) { - return bse_source_class_add_ijchannel (source_class, name, blurb, TRUE); + return bse_source_class_add_ijchannel (source_class, name, name, blurb, TRUE); } guint @@ -404,30 +425,33 @@ g_return_val_if_fail (ichannel_cname != NULL, ~0); for (i = 0; i < BSE_SOURCE_N_ICHANNELS (source); i++) - if (strcmp (BSE_SOURCE_ICHANNEL_CNAME (source, i), ichannel_cname) == 0) + if (strcmp (BSE_SOURCE_ICHANNEL_IDENT (source, i), ichannel_cname) == 0) return i; return ~0; } guint -bse_source_class_add_ochannel (BseSourceClass *source_class, - const gchar *name, - const gchar *blurb) +bse_source_class_add_ochannel_ident (BseSourceClass *source_class, + const gchar *ident, + const gchar *name, + const gchar *blurb) { BseSourceChannelDefs *defs; guint i; gchar *cname; g_return_val_if_fail (BSE_IS_SOURCE_CLASS (source_class), 0); - g_return_val_if_fail (name != NULL, 0); + g_return_val_if_fail (ident != NULL, 0); + if (!name) + name = ident; if (!blurb) blurb = name; - cname = channel_dup_canonify (name); + cname = channel_dup_canonify (ident); i = 0; // FIXME: bse_source_find_ochannel (source, cname); if (i == ~0) { - g_warning ("source class `%s' already has a channel \"%s\" with canonical name \"%s\"", + g_warning ("source class `%s' already has a channel \"%s\" with identifier \"%s\"", G_OBJECT_CLASS_NAME (source_class), name, cname); g_free (cname); @@ -435,17 +459,25 @@ } defs = &source_class->channel_defs; i = defs->n_ochannels++; + defs->ochannel_idents = g_renew (gchar*, defs->ochannel_idents, defs->n_ochannels); defs->ochannel_names = g_renew (gchar*, defs->ochannel_names, defs->n_ochannels); - defs->ochannel_cnames = g_renew (gchar*, defs->ochannel_cnames, defs->n_ochannels); defs->ochannel_blurbs = g_renew (gchar*, defs->ochannel_blurbs, defs->n_ochannels); + defs->ochannel_idents[i] = cname; defs->ochannel_names[i] = g_strdup (name); - defs->ochannel_cnames[i] = cname; defs->ochannel_blurbs[i] = g_strdup (blurb); return i; } guint +bse_source_class_add_ochannel (BseSourceClass *source_class, + const gchar *name, + const gchar *blurb) +{ + return bse_source_class_add_ochannel_ident (source_class, name, name, blurb); +} + +guint bse_source_find_ochannel (BseSource *source, const gchar *ochannel_cname) { @@ -455,7 +487,7 @@ g_return_val_if_fail (ochannel_cname != NULL, ~0); for (i = 0; i < BSE_SOURCE_N_OCHANNELS (source); i++) - if (strcmp (BSE_SOURCE_OCHANNEL_CNAME (source, i), ochannel_cname) == 0) + if (strcmp (BSE_SOURCE_OCHANNEL_IDENT (source, i), ochannel_cname) == 0) return i; return ~0; } @@ -1485,9 +1517,9 @@ bse_storage_break (storage); bse_storage_printf (storage, "(source-input \"%s\" ", - BSE_SOURCE_ICHANNEL_CNAME (source, i)); + BSE_SOURCE_ICHANNEL_IDENT (source, i)); bse_storage_put_item_link (storage, BSE_ITEM (source), BSE_ITEM (output->osource)); - bse_storage_printf (storage, " \"%s\")", BSE_SOURCE_OCHANNEL_CNAME (output->osource, output->ochannel)); + bse_storage_printf (storage, " \"%s\")", BSE_SOURCE_OCHANNEL_IDENT (output->osource, output->ochannel)); } g_slist_free (outputs); } diff -ruN beast-0.5.0/bse/bsesource.gen-proc.c beast-0.5.1/bse/bsesource.gen-proc.c --- beast-0.5.0/bse/bsesource.gen-proc.c 2003-03-13 20:57:28.000000000 +0100 +++ beast-0.5.1/bse/bsesource.gen-proc.c 2003-04-13 21:13:56.000000000 +0200 @@ -36,7 +36,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 42 "bsesource.proc" } static BseErrorType @@ -95,7 +95,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 81 "bsesource.proc" } static BseErrorType @@ -156,7 +156,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 122 "bsesource.proc" } static BseErrorType @@ -215,7 +215,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 161 "bsesource.proc" } static BseErrorType @@ -267,7 +267,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 193 "bsesource.proc" } static BseErrorType @@ -308,7 +308,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 215 "bsesource.proc" } static BseErrorType @@ -351,7 +351,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 239 "bsesource.proc" } static BseErrorType @@ -394,7 +394,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 263 "bsesource.proc" } static BseErrorType @@ -439,7 +439,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 289 "bsesource.proc" } static BseErrorType @@ -466,10 +466,10 @@ return BSE_ERROR_NONE; } -/* --- ichannel-cname --- */ -static GType type_id_ichannel_cname = 0; +/* --- ichannel-ident --- */ +static GType type_id_ichannel_ident = 0; static void -ichannel_cname_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { +ichannel_ident_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { #line 307 "bsesource.proc" { #line 309 "bsesource.proc" @@ -485,12 +485,12 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 316 "bsesource.proc" } static BseErrorType #line 316 "bsesource.proc" -ichannel_cname_exec (BseProcedureClass *proc, +ichannel_ident_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) #line 319 "bsesource.proc" @@ -507,7 +507,7 @@ #line 328 "bsesource.proc" - sfi_value_set_string (out_values++, BSE_SOURCE_ICHANNEL_CNAME (source, ichannel)); + sfi_value_set_string (out_values++, BSE_SOURCE_ICHANNEL_IDENT (source, ichannel)); return BSE_ERROR_NONE; } @@ -531,7 +531,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 343 "bsesource.proc" } static BseErrorType @@ -577,7 +577,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 370 "bsesource.proc" } static BseErrorType @@ -623,7 +623,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 397 "bsesource.proc" } static BseErrorType @@ -672,7 +672,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 427 "bsesource.proc" } static BseErrorType @@ -725,7 +725,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 461 "bsesource.proc" } static BseErrorType @@ -781,7 +781,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 498 "bsesource.proc" } static BseErrorType @@ -833,7 +833,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 531 "bsesource.proc" } static BseErrorType @@ -878,7 +878,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 557 "bsesource.proc" } static BseErrorType @@ -905,10 +905,10 @@ return BSE_ERROR_NONE; } -/* --- ochannel-cname --- */ -static GType type_id_ochannel_cname = 0; +/* --- ochannel-ident --- */ +static GType type_id_ochannel_ident = 0; static void -ochannel_cname_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { +ochannel_ident_setup (BseProcedureClass *proc, GParamSpec **in_pspecs, GParamSpec **out_pspecs) { #line 575 "bsesource.proc" { #line 577 "bsesource.proc" @@ -924,12 +924,12 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 584 "bsesource.proc" } static BseErrorType #line 584 "bsesource.proc" -ochannel_cname_exec (BseProcedureClass *proc, +ochannel_ident_exec (BseProcedureClass *proc, const GValue *in_values, GValue *out_values) #line 587 "bsesource.proc" @@ -946,7 +946,7 @@ #line 596 "bsesource.proc" - sfi_value_set_string (out_values++, BSE_SOURCE_OCHANNEL_CNAME (source, ochannel)); + sfi_value_set_string (out_values++, BSE_SOURCE_OCHANNEL_IDENT (source, ochannel)); return BSE_ERROR_NONE; } @@ -970,7 +970,7 @@ #line 24 "bsesource.proc" proc->authors = "Tim Janik "; #line 25 "bsesource.proc" - proc->copyright = "Copyright (C) 2001-2002 Tim Janik"; + proc->copyright = "Copyright (C) 2001-2003 Tim Janik"; #line 611 "bsesource.proc" } static BseErrorType @@ -1009,7 +1009,7 @@ { &type_id_has_outputs, "BseSource+has-outputs", NULL, 0, has_outputs_setup, has_outputs_exec, NULL, "/Method/BseSource/General/Has Outputs", { 0, }, }, { &type_id_n_ichannels, "BseSource+n-ichannels", NULL, 0, n_ichannels_setup, n_ichannels_exec, NULL, "/Method/BseSource/General/N Ichannels", { 0, }, }, { &type_id_ichannel_name, "BseSource+ichannel-name", NULL, 0, ichannel_name_setup, ichannel_name_exec, NULL, "/Method/BseSource/General/Ichannel Name", { 0, }, }, - { &type_id_ichannel_cname, "BseSource+ichannel-cname", NULL, 0, ichannel_cname_setup, ichannel_cname_exec, NULL, "/Method/BseSource/General/Ichannel Cname", { 0, }, }, + { &type_id_ichannel_ident, "BseSource+ichannel-ident", NULL, 0, ichannel_ident_setup, ichannel_ident_exec, NULL, "/Method/BseSource/General/Ichannel Ident", { 0, }, }, { &type_id_ichannel_blurb, "BseSource+ichannel-blurb", NULL, 0, ichannel_blurb_setup, ichannel_blurb_exec, NULL, "/Method/BseSource/General/Ichannel Blurb", { 0, }, }, { &type_id_is_joint_ichannel_by_id, "BseSource+is-joint-ichannel-by-id", NULL, 0, is_joint_ichannel_by_id_setup, is_joint_ichannel_by_id_exec, NULL, "/Method/BseSource/General/Is Joint Ichannel By Id", { 0, }, }, { &type_id_is_joint_ichannel, "BseSource+is-joint-ichannel", NULL, 0, is_joint_ichannel_setup, is_joint_ichannel_exec, NULL, "/Method/BseSource/General/Is Joint Ichannel", { 0, }, }, @@ -1018,7 +1018,7 @@ { &type_id_ichannel_get_ochannel, "BseSource+ichannel-get-ochannel", NULL, 0, ichannel_get_ochannel_setup, ichannel_get_ochannel_exec, NULL, "/Method/BseSource/General/Ichannel Get Ochannel", { 0, }, }, { &type_id_n_ochannels, "BseSource+n-ochannels", NULL, 0, n_ochannels_setup, n_ochannels_exec, NULL, "/Method/BseSource/General/N Ochannels", { 0, }, }, { &type_id_ochannel_name, "BseSource+ochannel-name", NULL, 0, ochannel_name_setup, ochannel_name_exec, NULL, "/Method/BseSource/General/Ochannel Name", { 0, }, }, - { &type_id_ochannel_cname, "BseSource+ochannel-cname", NULL, 0, ochannel_cname_setup, ochannel_cname_exec, NULL, "/Method/BseSource/General/Ochannel Cname", { 0, }, }, + { &type_id_ochannel_ident, "BseSource+ochannel-ident", NULL, 0, ochannel_ident_setup, ochannel_ident_exec, NULL, "/Method/BseSource/General/Ochannel Ident", { 0, }, }, { &type_id_ochannel_blurb, "BseSource+ochannel-blurb", NULL, 0, ochannel_blurb_setup, ochannel_blurb_exec, NULL, "/Method/BseSource/General/Ochannel Blurb", { 0, }, }, { NULL, }, }; diff -ruN beast-0.5.0/bse/bsesource.h beast-0.5.1/bse/bsesource.h --- beast-0.5.0/bse/bsesource.h 2003-03-10 09:35:17.000000000 +0100 +++ beast-0.5.1/bse/bsesource.h 2003-04-05 15:28:09.000000000 +0200 @@ -1,5 +1,5 @@ /* BSE - Bedevilled Sound Engine - * Copyright (C) 1998-1999, 2000-2002 Tim Janik + * Copyright (C) 1998-1999, 2000-2003 Tim Janik * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,11 +23,7 @@ #include #include - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - +G_BEGIN_DECLS /* --- BseSource type macros --- */ @@ -43,14 +39,14 @@ #define BSE_SOURCE_PREPARED(src) ((BSE_OBJECT_FLAGS (src) & BSE_SOURCE_FLAG_PREPARED) != 0) #define BSE_SOURCE_COLLECTED(src) ((BSE_OBJECT_FLAGS (src) & BSE_SOURCE_FLAG_COLLECTED) != 0) #define BSE_SOURCE_N_ICHANNELS(src) (BSE_SOURCE (src)->channel_defs->n_ichannels) +#define BSE_SOURCE_ICHANNEL_IDENT(src,id) (BSE_SOURCE (src)->channel_defs->ichannel_idents[(id)]) #define BSE_SOURCE_ICHANNEL_NAME(src,id) (BSE_SOURCE (src)->channel_defs->ichannel_names[(id)]) -#define BSE_SOURCE_ICHANNEL_CNAME(src,id) (BSE_SOURCE (src)->channel_defs->ichannel_cnames[(id)]) #define BSE_SOURCE_ICHANNEL_BLURB(src,id) (BSE_SOURCE (src)->channel_defs->ichannel_blurbs[(id)]) #define BSE_SOURCE_IS_JOINT_ICHANNEL(s,i) ((BSE_SOURCE (s)->channel_defs->ijstreams[(i)] & BSE_SOURCE_JSTREAM_FLAG) != 0) #define BSE_SOURCE_N_JOINT_ICHANNELS(src) (BSE_SOURCE (src)->channel_defs->n_jstreams) #define BSE_SOURCE_N_OCHANNELS(src) (BSE_SOURCE (src)->channel_defs->n_ochannels) +#define BSE_SOURCE_OCHANNEL_IDENT(src,id) (BSE_SOURCE (src)->channel_defs->ochannel_idents[(id)]) #define BSE_SOURCE_OCHANNEL_NAME(src,id) (BSE_SOURCE (src)->channel_defs->ochannel_names[(id)]) -#define BSE_SOURCE_OCHANNEL_CNAME(src,id) (BSE_SOURCE (src)->channel_defs->ochannel_cnames[(id)]) #define BSE_SOURCE_OCHANNEL_BLURB(src,id) (BSE_SOURCE (src)->channel_defs->ochannel_blurbs[(id)]) /*< private >*/ #define BSE_SOURCE_INPUT(src,id) (BSE_SOURCE (src)->inputs + (guint) (id)) @@ -108,14 +104,14 @@ struct _BseSourceChannelDefs { guint n_ichannels; + gchar **ichannel_idents; gchar **ichannel_names; - gchar **ichannel_cnames; gchar **ichannel_blurbs; guint *ijstreams; guint n_jstreams; guint n_ochannels; + gchar **ochannel_idents; gchar **ochannel_names; - gchar **ochannel_cnames; gchar **ochannel_blurbs; }; struct _BseSourceClass @@ -150,9 +146,9 @@ /* --- prototypes -- */ guint bse_source_find_ichannel (BseSource *source, - const gchar *ichannel_cname); + const gchar *ichannel_ident); guint bse_source_find_ochannel (BseSource *source, - const gchar *ochannel_cname); + const gchar *ochannel_ident); BseErrorType bse_source_set_input (BseSource *source, guint ichannel, BseSource *osource, @@ -175,13 +171,16 @@ /* --- source implementations --- */ -guint bse_source_class_add_ichannel (BseSourceClass *source_class, +guint bse_source_class_add_ichannel_ident (BseSourceClass *source_class, + const gchar *ident, const gchar *name, const gchar *blurb); -guint bse_source_class_add_jchannel (BseSourceClass *source_class, +guint bse_source_class_add_jchannel_ident (BseSourceClass *source_class, + const gchar *ident, const gchar *name, const gchar *blurb); -guint bse_source_class_add_ochannel (BseSourceClass *source_class, +guint bse_source_class_add_ochannel_ident (BseSourceClass *source_class, + const gchar *ident, const gchar *name, const gchar *blurb); void bse_source_set_context_imodule (BseSource *source, @@ -213,6 +212,15 @@ GslFreeFunc data_free_func, GslTrans *trans); /* convenience */ +guint bse_source_class_add_ichannel (BseSourceClass *source_class, + const gchar *name, + const gchar *blurb); +guint bse_source_class_add_jchannel (BseSourceClass *source_class, + const gchar *name, + const gchar *blurb); +guint bse_source_class_add_ochannel (BseSourceClass *source_class, + const gchar *name, + const gchar *blurb); void bse_source_set_context_module (BseSource *source, guint context_handle, GslModule *module); @@ -255,8 +263,6 @@ guint context_handle); -#ifdef __cplusplus -} -#endif /* __cplusplus */ +G_END_DECLS #endif /* __BSE_SOURCE_H__ */ diff -ruN beast-0.5.0/bse/bsesource.proc beast-0.5.1/bse/bsesource.proc --- beast-0.5.0/bse/bsesource.proc 2003-03-10 05:40:30.000000000 +0100 +++ beast-0.5.1/bse/bsesource.proc 2003-04-05 15:29:09.000000000 +0200 @@ -1,5 +1,5 @@ /* BSE - Bedevilled Sound Engine -*-mode: c;-*- - * Copyright (C) 2000-2002 Tim Janik + * Copyright (C) 2000-2003 Tim Janik * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -22,7 +22,7 @@ AUTHORS = "Tim Janik "; -CRIGHTS = "Copyright (C) 2001-2002 Tim Janik"; +CRIGHTS = "Copyright (C) 2001-2003 Tim Janik"; METHOD (BseSource, set-input-by-id) { @@ -304,7 +304,7 @@ return BSE_ERROR_NONE; } -METHOD (BseSource, ichannel-cname) { +METHOD (BseSource, ichannel-ident) { HELP = "Get canonical input channel name."; IN = bse_param_spec_object ("module", "Module", NULL, BSE_TYPE_SOURCE, SFI_PARAM_DEFAULT); @@ -326,7 +326,7 @@ return BSE_ERROR_PROC_PARAM_INVAL; /* set output parameters */ - sfi_value_set_string (out_values++, BSE_SOURCE_ICHANNEL_CNAME (source, ichannel)); + sfi_value_set_string (out_values++, BSE_SOURCE_ICHANNEL_IDENT (source, ichannel)); return BSE_ERROR_NONE; } @@ -572,7 +572,7 @@ return BSE_ERROR_NONE; } -METHOD (BseSource, ochannel-cname) { +METHOD (BseSource, ochannel-ident) { HELP = "Get canonical output channel name."; IN = bse_param_spec_object ("module", "Module", NULL, BSE_TYPE_SOURCE, SFI_PARAM_DEFAULT); @@ -594,7 +594,7 @@ return BSE_ERROR_PROC_PARAM_INVAL; /* set output parameters */ - sfi_value_set_string (out_values++, BSE_SOURCE_OCHANNEL_CNAME (source, ochannel)); + sfi_value_set_string (out_values++, BSE_SOURCE_OCHANNEL_IDENT (source, ochannel)); return BSE_ERROR_NONE; } diff -ruN beast-0.5.0/bse/bsesubinstrument.c beast-0.5.1/bse/bsesubinstrument.c --- beast-0.5.0/bse/bsesubinstrument.c 2003-03-10 05:40:31.000000000 +0100 +++ beast-0.5.1/bse/bsesubinstrument.c 2003-04-05 15:18:31.000000000 +0200 @@ -126,19 +126,19 @@ const gchar *name; g_object_freeze_notify (G_OBJECT (self)); - name = BSE_SOURCE_ICHANNEL_CNAME (self, 0); + name = BSE_SOURCE_ICHANNEL_IDENT (self, 0); if (strcmp (oport->output_ports[0], name) != 0 && (!snet || !bse_snet_oport_name_registered (snet, name))) g_object_set (self, "BseSubOPort::out_port_1", name, NULL); - name = BSE_SOURCE_ICHANNEL_CNAME (self, 1); + name = BSE_SOURCE_ICHANNEL_IDENT (self, 1); if (strcmp (oport->output_ports[1], name) != 0 && (!snet || !bse_snet_oport_name_registered (snet, name))) g_object_set (self, "BseSubOPort::out_port_2", name, NULL); - name = BSE_SOURCE_ICHANNEL_CNAME (self, 2); + name = BSE_SOURCE_ICHANNEL_IDENT (self, 2); if (strcmp (oport->output_ports[2], name) != 0 && (!snet || !bse_snet_oport_name_registered (snet, name))) g_object_set (self, "BseSubOPort::out_port_3", name, NULL); - name = BSE_SOURCE_ICHANNEL_CNAME (self, 3); + name = BSE_SOURCE_ICHANNEL_IDENT (self, 3); if (strcmp (oport->output_ports[3], name) != 0 && (!snet || !bse_snet_oport_name_registered (snet, name))) g_object_set (self, "BseSubOPort::out_port_4", name, NULL); diff -ruN beast-0.5.0/bse/bsesubkeyboard.c beast-0.5.1/bse/bsesubkeyboard.c --- beast-0.5.0/bse/bsesubkeyboard.c 2003-03-10 05:40:31.000000000 +0100 +++ beast-0.5.1/bse/bsesubkeyboard.c 2003-04-05 15:18:31.000000000 +0200 @@ -126,19 +126,19 @@ const gchar *name; g_object_freeze_notify (G_OBJECT (self)); - name = BSE_SOURCE_OCHANNEL_CNAME (self, 0); + name = BSE_SOURCE_OCHANNEL_IDENT (self, 0); if (strcmp (iport->input_ports[0], name) != 0 && (!snet || !bse_snet_iport_name_registered (snet, name))) g_object_set (self, "BseSubIPort::in_port_1", name, NULL); - name = BSE_SOURCE_OCHANNEL_CNAME (self, 1); + name = BSE_SOURCE_OCHANNEL_IDENT (self, 1); if (strcmp (iport->input_ports[1], name) != 0 && (!snet || !bse_snet_iport_name_registered (snet, name))) g_object_set (self, "BseSubIPort::in_port_2", name, NULL); - name = BSE_SOURCE_OCHANNEL_CNAME (self, 2); + name = BSE_SOURCE_OCHANNEL_IDENT (self, 2); if (strcmp (iport->input_ports[2], name) != 0 && (!snet || !bse_snet_iport_name_registered (snet, name))) g_object_set (self, "BseSubIPort::in_port_3", name, NULL); - name = BSE_SOURCE_OCHANNEL_CNAME (self, 3); + name = BSE_SOURCE_OCHANNEL_IDENT (self, 3); if (strcmp (iport->input_ports[3], name) != 0 && (!snet || !bse_snet_iport_name_registered (snet, name))) g_object_set (self, "BseSubIPort::in_port_4", name, NULL); diff -ruN beast-0.5.0/bse/bsetype.c beast-0.5.1/bse/bsetype.c --- beast-0.5.0/bse/bsetype.c 2003-03-10 05:40:31.000000000 +0100 +++ beast-0.5.1/bse/bsetype.c 2003-04-02 17:14:47.000000000 +0200 @@ -72,9 +72,9 @@ bse_type_register_dynamic (GType parent_type, const gchar *type_name, const gchar *type_blurb, - BsePlugin *plugin) + GTypePlugin *plugin) { - GType type = g_type_register_dynamic (parent_type, type_name, G_TYPE_PLUGIN (plugin), 0); + GType type = g_type_register_dynamic (parent_type, type_name, plugin, 0); bse_type_set_blurb (type, type_blurb); diff -ruN beast-0.5.0/bse/bsetype.h beast-0.5.1/bse/bsetype.h --- beast-0.5.0/bse/bsetype.h 2003-03-10 05:40:31.000000000 +0100 +++ beast-0.5.1/bse/bsetype.h 2003-04-02 17:14:47.000000000 +0200 @@ -48,7 +48,7 @@ GType bse_type_register_dynamic (GType parent_type, const gchar *type_name, const gchar *type_blurb, - BsePlugin *plugin); + GTypePlugin *plugin); /* --- implementation details --- */ diff -ruN beast-0.5.0/bse/bseutils.c beast-0.5.1/bse/bseutils.c --- beast-0.5.0/bse/bseutils.c 2003-03-10 05:40:31.000000000 +0100 +++ beast-0.5.1/bse/bseutils.c 2003-04-05 18:42:26.000000000 +0200 @@ -63,7 +63,7 @@ /** * bse_search_path_list_matches - * @search_path: semicolon seperated search path with '?' and '*' wildcards + * @search_path: colon (semicolon under win32) seperated search path with '?' and '*' wildcards * @cwd: assumed current working directoy (to interpret './' in search_path) * @RETURNS: a singly linked list with newly allocated strings * This function takes a search path with wildcards and lists all existing @@ -101,7 +101,7 @@ /** * bse_search_path_list_files - * @search_path: semicolon seperated search path with '?' and '*' wildcards + * @search_path: colon (semicolon under win32) seperated search path with '?' and '*' wildcards * @file_pattern: wildcard pattern for file names * @cwd: assumed current working directoy (to interpret './' in search_path) * @file_test: GFileTest file test condition (e.g. G_FILE_TEST_IS_REGULAR) or 0 @@ -162,7 +162,7 @@ /** * bse_search_path_list_entries - * @search_path: semicolon seperated search path + * @search_path: colon (semicolon under win32) seperated search path * @RETURNS: a singly linked list with newly allocated strings * This function takes a search path and returns a singly linked list * containing the seperated path entries. @@ -456,6 +456,19 @@ } gint +bse_note_from_freq_bounded (gdouble freq) +{ + gdouble d; + gint note; + + freq /= BSE_KAMMER_FREQUENCY_f; + d = log (freq) / BSE_LN_2_POW_1_DIV_12_d; + note = gsl_ftoi (BSE_KAMMER_NOTE + d); + + return CLAMP (note, BSE_MIN_NOTE, BSE_MAX_NOTE); +} + +gint bse_note_fine_tune_from_note_freq (gint note, gdouble freq) { diff -ruN beast-0.5.0/bse/bseutils.h beast-0.5.1/bse/bseutils.h --- beast-0.5.0/bse/bseutils.h 2003-03-10 05:40:31.000000000 +0100 +++ beast-0.5.1/bse/bseutils.h 2003-04-05 18:41:46.000000000 +0200 @@ -45,9 +45,10 @@ /* --- notes & frequencies --- */ -gint bse_note_from_freq (gdouble freq); -gint bse_note_fine_tune_from_note_freq (gint note, - gdouble freq); +gint bse_note_from_freq (gdouble freq); +gint bse_note_from_freq_bounded (gdouble freq); +gint bse_note_fine_tune_from_note_freq (gint note, + gdouble freq); gdouble bse_note_to_freq (gint note); gdouble bse_note_to_tuned_freq (gint note, gint fine_tune); diff -ruN beast-0.5.0/bse/gslconfig.h beast-0.5.1/bse/gslconfig.h --- beast-0.5.0/bse/gslconfig.h 2003-03-13 20:57:29.000000000 +0100 +++ beast-0.5.1/bse/gslconfig.h 2003-04-13 21:13:56.000000000 +0200 @@ -1,7 +1,6 @@ /* Generated data from ../configure (by make gslconfig.h) */ #define GSL_SIZEOF_STD_INTMAX_T (8) -#define GSL_OV_READ_FLOAT_ARGS (4) #define GSL_HAVE_LIBMAD (1) /* Generated data ends here */ diff -ruN beast-0.5.0/bse/gsldatahandle-vorbis.c beast-0.5.1/bse/gsldatahandle-vorbis.c --- beast-0.5.0/bse/gsldatahandle-vorbis.c 2003-03-10 05:40:32.000000000 +0100 +++ beast-0.5.1/bse/gsldatahandle-vorbis.c 2003-04-04 19:16:00.000000000 +0200 @@ -227,11 +227,7 @@ gint stream_id, i; vhandle->pcm_pos = ov_pcm_tell (&vhandle->ofile) - vhandle->soffset; -#if GSL_OV_READ_FLOAT_ARGS == 4 vhandle->pcm_length = ov_read_float (&vhandle->ofile, &pcm, G_MAXINT, &stream_id); -#else - vhandle->pcm_length = ov_read_float (&vhandle->ofile, &pcm, &stream_id); -#endif if (vhandle->pcm_pos < 0 || vhandle->pcm_length < 0 || stream_id != vhandle->stream) { /* urg, this is bad! */ diff -ruN beast-0.5.0/bse/gslengine.h beast-0.5.1/bse/gslengine.h --- beast-0.5.0/bse/gslengine.h 2003-03-10 09:35:19.000000000 +0100 +++ beast-0.5.1/bse/gslengine.h 2003-04-05 16:59:33.000000000 +0200 @@ -27,7 +27,7 @@ /* --- constants --- */ -#define GSL_STREAM_MAX_VALUES (8192 /* power of 2, <= 16384 */) /* FIXME */ +#define GSL_STREAM_MAX_VALUES (2048 /* power of 2, <= 16384 */) /* FIXME */ #define GSL_MODULE_N_OSTREAMS(module) ((module)->klass->n_ostreams) #define GSL_MODULE_N_ISTREAMS(module) ((module)->klass->n_istreams) #define GSL_MODULE_N_JSTREAMS(module) ((module)->klass->n_jstreams) diff -ruN beast-0.5.0/bse/gslmakefile.inc beast-0.5.1/bse/gslmakefile.inc --- beast-0.5.0/bse/gslmakefile.inc 2003-03-13 22:09:13.000000000 +0100 +++ beast-0.5.1/bse/gslmakefile.inc 2003-04-04 19:29:02.000000000 +0200 @@ -50,7 +50,6 @@ echo "/* Generated data from $< (by make $@) */" > xgen-gch \ && echo >> xgen-gch \ && echo "#define GSL_SIZEOF_STD_INTMAX_T (@GSL_SIZEOF_STD_INTMAX_T@)" >> xgen-gch \ - && echo "#define GSL_OV_READ_FLOAT_ARGS (@GSL_OV_READ_FLOAT_ARGS@)" >> xgen-gch \ && echo "#define GSL_HAVE_LIBMAD (@GSL_HAVE_LIBMAD@)" >> xgen-gch \ && echo >> xgen-gch \ && echo "/* Generated data ends here */" >> xgen-gch \ diff -ruN beast-0.5.0/bse/gslopmaster.c beast-0.5.1/bse/gslopmaster.c --- beast-0.5.0/bse/gslopmaster.c 2003-03-10 05:40:34.000000000 +0100 +++ beast-0.5.1/bse/gslopmaster.c 2003-04-04 00:37:11.000000000 +0200 @@ -226,6 +226,8 @@ add_consumer (node); node->counter = 0; NODE_FLAG_RECONNECT (node); + node->outputs_suspended = TRUE; + node->suspension_update = TRUE; master_need_reflow |= TRUE; break; case ENGINE_JOB_KILL_INPUTS: diff -ruN beast-0.5.0/bse/gslwaveosc.c beast-0.5.1/bse/gslwaveosc.c --- beast-0.5.0/bse/gslwaveosc.c 2003-03-10 05:40:35.000000000 +0100 +++ beast-0.5.1/bse/gslwaveosc.c 2003-03-16 19:27:18.000000000 +0100 @@ -17,13 +17,13 @@ * Boston, MA 02111-1307, USA. */ #include "gslwaveosc.h" - #include "gslfilter.h" #include "gslsignal.h" #include "gslengine.h" /* for gsl_engine_sample_freq() */ - #include +#define DEBUG sfi_debug_keyfunc ("waveosc") + #define FRAC_SHIFT (16) #define FRAC_MASK ((1 << FRAC_SHIFT) - 1) #define SIGNAL_LEVEL_INVAL (-2.0) /* trigger level-changed checks */ @@ -216,10 +216,10 @@ { guint i; - g_printerr ("clearing filter state at:\n"); + DEBUG ("clearing filter state at:\n"); for (i = 0; i < GSL_WAVE_OSC_FILTER_ORDER; i++) { - g_printerr ("%u) %+.38f\n", i, wosc->y[i]); + DEBUG ("%u) %+.38f\n", i, wosc->y[i]); if (GSL_DOUBLE_IS_INF (wosc->y[0]) || fabs (wosc->y[0]) > GSL_SIGNAL_KAPPA) wosc->y[i] = GSL_DOUBLE_SIGN (wosc->y[0]) ? -1.0 : 1.0; else @@ -278,7 +278,7 @@ wosc->b[GSL_WAVE_OSC_FILTER_ORDER - i] = wosc->b[i]; wosc->b[i] = t; } - g_printerr ("WaveOsc-filter: fc=%f fr=%f st=%f is=%u\n", freq_c/GSL_PI*2, freq_r/GSL_PI*2, step, wosc->istep); + DEBUG ("filter: fc=%f fr=%f st=%f is=%u\n", freq_c/GSL_PI*2, freq_r/GSL_PI*2, step, wosc->istep); } if (clear_state) @@ -334,8 +334,8 @@ gsl_wave_chunk_use_block (wosc->wchunk, &wosc->block); wosc->x = wosc->block.start; - g_printerr ("wave lookup: want=%f got=%f length=%lu\n", - base_freq, wosc->wchunk->osc_freq, wosc->wchunk->wave_length); + DEBUG ("wave lookup: want=%f got=%f length=%lu\n", + base_freq, wosc->wchunk->osc_freq, wosc->wchunk->wave_length); wosc->last_freq_level = GSL_SIGNAL_FROM_FREQ (base_freq); wosc->last_mod_level = 0; diff -ruN beast-0.5.0/bse/icons/Makefile.in beast-0.5.1/bse/icons/Makefile.in --- beast-0.5.0/bse/icons/Makefile.in 2003-03-13 22:09:36.000000000 +0100 +++ beast-0.5.1/bse/icons/Makefile.in 2003-04-14 00:12:33.000000000 +0200 @@ -74,6 +74,9 @@ BSE_MAJOR_VERSION = @BSE_MAJOR_VERSION@ BSE_MICRO_VERSION = @BSE_MICRO_VERSION@ BSE_MINOR_VERSION = @BSE_MINOR_VERSION@ +BSE_PC_CFLAGS = @BSE_PC_CFLAGS@ +BSE_PC_LIBS = @BSE_PC_LIBS@ +BSE_PC_REQUIRE = @BSE_PC_REQUIRE@ BSE_SHELL_CFLAGS = @BSE_SHELL_CFLAGS@ BSE_SHELL_LIBS = @BSE_SHELL_LIBS@ BSE_VERSION = @BSE_VERSION@ @@ -91,10 +94,7 @@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GROFF = @GROFF@ -GSL_CFLAGS = @GSL_CFLAGS@ GSL_HAVE_LIBMAD = @GSL_HAVE_LIBMAD@ -GSL_LIBS = @GSL_LIBS@ -GSL_OV_READ_FLOAT_ARGS = @GSL_OV_READ_FLOAT_ARGS@ GSL_SIZEOF_STD_INTMAX_T = @GSL_SIZEOF_STD_INTMAX_T@ GXK_CFLAGS = @GXK_CFLAGS@ GXK_LIBS = @GXK_LIBS@ @@ -130,6 +130,7 @@ beastdocsdir = @beastdocsdir@ beastimagesdir = @beastimagesdir@ beastsampledatadir = @beastsampledatadir@ +bseladspadir = @bseladspadir@ bseplugindir = @bseplugindir@ bsescriptdir = @bsescriptdir@ diff -ruN beast-0.5.0/bse/ladspa.h beast-0.5.1/bse/ladspa.h --- beast-0.5.0/bse/ladspa.h 1970-01-01 01:00:00.000000000 +0100 +++ beast-0.5.1/bse/ladspa.h 2003-04-03 18:38:48.000000000 +0200 @@ -0,0 +1,603 @@ +/* ladspa.h + + Linux Audio Developer's Simple Plugin API Version 1.1[LGPL]. + Copyright (C) 2000-2002 Richard W.E. Furse, Paul Barton-Davis, + Stefan Westerfeld. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. */ + +#ifndef LADSPA_INCLUDED +#define LADSPA_INCLUDED + +#define LADSPA_VERSION "1.1" +#define LADSPA_VERSION_MAJOR 1 +#define LADSPA_VERSION_MINOR 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/*****************************************************************************/ + +/* Overview: + + There is a large number of synthesis packages in use or development + on the Linux platform at this time. This API (`The Linux Audio + Developer's Simple Plugin API') attempts to give programmers the + ability to write simple `plugin' audio processors in C/C++ and link + them dynamically (`plug') into a range of these packages (`hosts'). + It should be possible for any host and any plugin to communicate + completely through this interface. + + This API is deliberately short and simple. To achieve compatibility + with a range of promising Linux sound synthesis packages it + attempts to find the `greatest common divisor' in their logical + behaviour. Having said this, certain limiting decisions are + implicit, notably the use of a fixed type (LADSPA_Data) for all + data transfer and absence of a parameterised `initialisation' + phase. See below for the LADSPA_Data typedef. + + Plugins are expected to distinguish between control and audio + data. Plugins have `ports' that are inputs or outputs for audio or + control data and each plugin is `run' for a `block' corresponding + to a short time interval measured in samples. Audio data is + communicated using arrays of LADSPA_Data, allowing a block of audio + to be processed by the plugin in a single pass. Control data is + communicated using single LADSPA_Data values. Control data has a + single value at the start of a call to the `run()' or `run_adding()' + function, and may be considered to remain this value for its + duration. The plugin may assume that all its input and output ports + have been connected to the relevant data location (see the + `connect_port()' function below) before it is asked to run. + + Plugins will reside in shared object files suitable for dynamic + linking by dlopen() and family. The file will provide a number of + `plugin types' that can be used to instantiate actual plugins + (sometimes known as `plugin instances') that can be connected + together to perform tasks. + + This API contains very limited error-handling. */ + +/*****************************************************************************/ + +/* Fundamental data type passed in and out of plugin. This data type + is used to communicate audio samples and control values. It is + assumed that the plugin will work sensibly given any numeric input + value although it may have a preferred range (see hints below). + + For audio it is generally assumed that 1.0f is the `0dB' reference + amplitude and is a `normal' signal level. */ + +typedef float LADSPA_Data; + +/*****************************************************************************/ + +/* Special Plugin Properties: + + Optional features of the plugin type are encapsulated in the + LADSPA_Properties type. This is assembled by ORing individual + properties together. */ + +typedef int LADSPA_Properties; + +/* Property LADSPA_PROPERTY_REALTIME indicates that the plugin has a + real-time dependency (e.g. listens to a MIDI device) and so its + output must not be cached or subject to significant latency. */ +#define LADSPA_PROPERTY_REALTIME 0x1 + +/* Property LADSPA_PROPERTY_INPLACE_BROKEN indicates that the plugin + may cease to work correctly if the host elects to use the same data + location for both input and output (see connect_port()). This + should be avoided as enabling this flag makes it impossible for + hosts to use the plugin to process audio `in-place.' */ +#define LADSPA_PROPERTY_INPLACE_BROKEN 0x2 + +/* Property LADSPA_PROPERTY_HARD_RT_CAPABLE indicates that the plugin + is capable of running not only in a conventional host but also in a + `hard real-time' environment. To qualify for this the plugin must + satisfy all of the following: + + (1) The plugin must not use malloc(), free() or other heap memory + management within its run() or run_adding() functions. All new + memory used in run() must be managed via the stack. These + restrictions only apply to the run() function. + + (2) The plugin will not attempt to make use of any library + functions with the exceptions of functions in the ANSI standard C + and C maths libraries, which the host is expected to provide. + + (3) The plugin will not access files, devices, pipes, sockets, IPC + or any other mechanism that might result in process or thread + blocking. + + (4) The plugin will take an amount of time to execute a run() or + run_adding() call approximately of form (A+B*SampleCount) where A + and B depend on the machine and host in use. This amount of time + may not depend on input signals or plugin state. The host is left + the responsibility to perform timings to estimate upper bounds for + A and B. */ +#define LADSPA_PROPERTY_HARD_RT_CAPABLE 0x4 + +#define LADSPA_IS_REALTIME(x) ((x) & LADSPA_PROPERTY_REALTIME) +#define LADSPA_IS_INPLACE_BROKEN(x) ((x) & LADSPA_PROPERTY_INPLACE_BROKEN) +#define LADSPA_IS_HARD_RT_CAPABLE(x) ((x) & LADSPA_PROPERTY_HARD_RT_CAPABLE) + +/*****************************************************************************/ + +/* Plugin Ports: + + Plugins have `ports' that are inputs or outputs for audio or + data. Ports can communicate arrays of LADSPA_Data (for audio + inputs/outputs) or single LADSPA_Data values (for control + input/outputs). This information is encapsulated in the + LADSPA_PortDescriptor type which is assembled by ORing individual + properties together. + + Note that a port must be an input or an output port but not both + and that a port must be a control or audio port but not both. */ + +typedef int LADSPA_PortDescriptor; + +/* Property LADSPA_PORT_INPUT indicates that the port is an input. */ +#define LADSPA_PORT_INPUT 0x1 + +/* Property LADSPA_PORT_OUTPUT indicates that the port is an output. */ +#define LADSPA_PORT_OUTPUT 0x2 + +/* Property LADSPA_PORT_CONTROL indicates that the port is a control + port. */ +#define LADSPA_PORT_CONTROL 0x4 + +/* Property LADSPA_PORT_AUDIO indicates that the port is a audio + port. */ +#define LADSPA_PORT_AUDIO 0x8 + +#define LADSPA_IS_PORT_INPUT(x) ((x) & LADSPA_PORT_INPUT) +#define LADSPA_IS_PORT_OUTPUT(x) ((x) & LADSPA_PORT_OUTPUT) +#define LADSPA_IS_PORT_CONTROL(x) ((x) & LADSPA_PORT_CONTROL) +#define LADSPA_IS_PORT_AUDIO(x) ((x) & LADSPA_PORT_AUDIO) + +/*****************************************************************************/ + +/* Plugin Port Range Hints: + + The host may wish to provide a representation of data entering or + leaving a plugin (e.g. to generate a GUI automatically). To make + this more meaningful, the plugin should provide `hints' to the host + describing the usual values taken by the data. + + Note that these are only hints. The host may ignore them and the + plugin must not assume that data supplied to it is meaningful. If + the plugin receives invalid input data it is expected to continue + to run without failure and, where possible, produce a sensible + output (e.g. a high-pass filter given a negative cutoff frequency + might switch to an all-pass mode). + + Hints are meaningful for all input and output ports but hints for + input control ports are expected to be particularly useful. + + More hint information is encapsulated in the + LADSPA_PortRangeHintDescriptor type which is assembled by ORing + individual hint types together. Hints may require further + LowerBound and UpperBound information. + + All the hint information for a particular port is aggregated in the + LADSPA_PortRangeHint structure. */ + +typedef int LADSPA_PortRangeHintDescriptor; + +/* Hint LADSPA_HINT_BOUNDED_BELOW indicates that the LowerBound field + of the LADSPA_PortRangeHint should be considered meaningful. The + value in this field should be considered the (inclusive) lower + bound of the valid range. If LADSPA_HINT_SAMPLE_RATE is also + specified then the value of LowerBound should be multiplied by the + sample rate. */ +#define LADSPA_HINT_BOUNDED_BELOW 0x1 + +/* Hint LADSPA_HINT_BOUNDED_ABOVE indicates that the UpperBound field + of the LADSPA_PortRangeHint should be considered meaningful. The + value in this field should be considered the (inclusive) upper + bound of the valid range. If LADSPA_HINT_SAMPLE_RATE is also + specified then the value of UpperBound should be multiplied by the + sample rate. */ +#define LADSPA_HINT_BOUNDED_ABOVE 0x2 + +/* Hint LADSPA_HINT_TOGGLED indicates that the data item should be + considered a Boolean toggle. Data less than or equal to zero should + be considered `off' or `false,' and data above zero should be + considered `on' or `true.' LADSPA_HINT_TOGGLED may not be used in + conjunction with any other hint except LADSPA_HINT_DEFAULT_0 or + LADSPA_HINT_DEFAULT_1. */ +#define LADSPA_HINT_TOGGLED 0x4 + +/* Hint LADSPA_HINT_SAMPLE_RATE indicates that any bounds specified + should be interpreted as multiples of the sample rate. For + instance, a frequency range from 0Hz to the Nyquist frequency (half + the sample rate) could be requested by this hint in conjunction + with LowerBound = 0 and UpperBound = 0.5. Hosts that support bounds + at all must support this hint to retain meaning. */ +#define LADSPA_HINT_SAMPLE_RATE 0x8 + +/* Hint LADSPA_HINT_LOGARITHMIC indicates that it is likely that the + user will find it more intuitive to view values using a logarithmic + scale. This is particularly useful for frequencies and gains. */ +#define LADSPA_HINT_LOGARITHMIC 0x10 + +/* Hint LADSPA_HINT_INTEGER indicates that a user interface would + probably wish to provide a stepped control taking only integer + values. Any bounds set should be slightly wider than the actual + integer range required to avoid floating point rounding errors. For + instance, the integer set {0,1,2,3} might be described as [-0.1, + 3.1]. */ +#define LADSPA_HINT_INTEGER 0x20 + +/* The various LADSPA_HINT_HAS_DEFAULT_* hints indicate a `normal' + value for the port that is sensible as a default. For instance, + this value is suitable for use as an initial value in a user + interface or as a value the host might assign to a control port + when the user has not provided one. Defaults are encoded using a + mask so only one default may be specified for a port. Some of the + hints make use of lower and upper bounds, in which case the + relevant bound or bounds must be available and + LADSPA_HINT_SAMPLE_RATE must be applied as usual. The resulting + default must be rounded if LADSPA_HINT_INTEGER is present. Default + values were introduced in LADSPA v1.1. */ +#define LADSPA_HINT_DEFAULT_MASK 0x3C0 + +/* This default values indicates that no default is provided. */ +#define LADSPA_HINT_DEFAULT_NONE 0x0 + +/* This default hint indicates that the suggested lower bound for the + port should be used. */ +#define LADSPA_HINT_DEFAULT_MINIMUM 0x40 + +/* This default hint indicates that a low value between the suggested + lower and upper bounds should be chosen. For ports with + LADSPA_HINT_LOGARITHMIC, this should be exp(log(lower) * 0.75 + + log(upper) * 0.25). Otherwise, this should be (lower * 0.75 + upper + * 0.25). */ +#define LADSPA_HINT_DEFAULT_LOW 0x80 + +/* This default hint indicates that a middle value between the + suggested lower and upper bounds should be chosen. For ports with + LADSPA_HINT_LOGARITHMIC, this should be exp(log(lower) * 0.5 + + log(upper) * 0.5). Otherwise, this should be (lower * 0.5 + upper * + 0.5). */ +#define LADSPA_HINT_DEFAULT_MIDDLE 0xC0 + +/* This default hint indicates that a high value between the suggested + lower and upper bounds should be chosen. For ports with + LADSPA_HINT_LOGARITHMIC, this should be exp(log(lower) * 0.25 + + log(upper) * 0.75). Otherwise, this should be (lower * 0.25 + upper + * 0.75). */ +#define LADSPA_HINT_DEFAULT_HIGH 0x100 + +/* This default hint indicates that the suggested upper bound for the + port should be used. */ +#define LADSPA_HINT_DEFAULT_MAXIMUM 0x140 + +/* This default hint indicates that the number 0 should be used. Note + that this default may be used in conjunction with + LADSPA_HINT_TOGGLED. */ +#define LADSPA_HINT_DEFAULT_0 0x200 + +/* This default hint indicates that the number 1 should be used. Note + that this default may be used in conjunction with + LADSPA_HINT_TOGGLED. */ +#define LADSPA_HINT_DEFAULT_1 0x240 + +/* This default hint indicates that the number 100 should be used. */ +#define LADSPA_HINT_DEFAULT_100 0x280 + +/* This default hint indicates that the Hz frequency of `concert A' + should be used. This will be 440 unless the host uses an unusual + tuning convention, in which case it may be within a few Hz. */ +#define LADSPA_HINT_DEFAULT_440 0x2C0 + +#define LADSPA_IS_HINT_BOUNDED_BELOW(x) ((x) & LADSPA_HINT_BOUNDED_BELOW) +#define LADSPA_IS_HINT_BOUNDED_ABOVE(x) ((x) & LADSPA_HINT_BOUNDED_ABOVE) +#define LADSPA_IS_HINT_TOGGLED(x) ((x) & LADSPA_HINT_TOGGLED) +#define LADSPA_IS_HINT_SAMPLE_RATE(x) ((x) & LADSPA_HINT_SAMPLE_RATE) +#define LADSPA_IS_HINT_LOGARITHMIC(x) ((x) & LADSPA_HINT_LOGARITHMIC) +#define LADSPA_IS_HINT_INTEGER(x) ((x) & LADSPA_HINT_INTEGER) + +#define LADSPA_IS_HINT_HAS_DEFAULT(x) ((x) & LADSPA_HINT_DEFAULT_MASK) +#define LADSPA_IS_HINT_DEFAULT_MINIMUM(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ + == LADSPA_HINT_DEFAULT_MINIMUM) +#define LADSPA_IS_HINT_DEFAULT_LOW(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ + == LADSPA_HINT_DEFAULT_LOW) +#define LADSPA_IS_HINT_DEFAULT_MIDDLE(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ + == LADSPA_HINT_DEFAULT_MIDDLE) +#define LADSPA_IS_HINT_DEFAULT_HIGH(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ + == LADSPA_HINT_DEFAULT_HIGH) +#define LADSPA_IS_HINT_DEFAULT_MAXIMUM(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ + == LADSPA_HINT_DEFAULT_MAXIMUM) +#define LADSPA_IS_HINT_DEFAULT_0(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ + == LADSPA_HINT_DEFAULT_0) +#define LADSPA_IS_HINT_DEFAULT_1(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ + == LADSPA_HINT_DEFAULT_1) +#define LADSPA_IS_HINT_DEFAULT_100(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ + == LADSPA_HINT_DEFAULT_100) +#define LADSPA_IS_HINT_DEFAULT_440(x) (((x) & LADSPA_HINT_DEFAULT_MASK) \ + == LADSPA_HINT_DEFAULT_440) + +typedef struct _LADSPA_PortRangeHint { + + /* Hints about the port. */ + LADSPA_PortRangeHintDescriptor HintDescriptor; + + /* Meaningful when hint LADSPA_HINT_BOUNDED_BELOW is active. When + LADSPA_HINT_SAMPLE_RATE is also active then this value should be + multiplied by the relevant sample rate. */ + LADSPA_Data LowerBound; + + /* Meaningful when hint LADSPA_HINT_BOUNDED_ABOVE is active. When + LADSPA_HINT_SAMPLE_RATE is also active then this value should be + multiplied by the relevant sample rate. */ + LADSPA_Data UpperBound; + +} LADSPA_PortRangeHint; + +/*****************************************************************************/ + +/* Plugin Handles: + + This plugin handle indicates a particular instance of the plugin + concerned. It is valid to compare this to NULL (0 for C++) but + otherwise the host should not attempt to interpret it. The plugin + may use it to reference internal instance data. */ + +typedef void * LADSPA_Handle; + +/*****************************************************************************/ + +/* Descriptor for a Type of Plugin: + + This structure is used to describe a plugin type. It provides a + number of functions to examine the type, instantiate it, link it to + buffers and workspaces and to run it. */ + +typedef struct _LADSPA_Descriptor { + + /* This numeric identifier indicates the plugin type + uniquely. Plugin programmers may reserve ranges of IDs from a + central body to avoid clashes. Hosts may assume that IDs are + below 0x1000000. */ + unsigned long UniqueID; + + /* This identifier can be used as a unique, case-sensitive + identifier for the plugin type within the plugin file. Plugin + types should be identified by file and label rather than by index + or plugin name, which may be changed in new plugin + versions. Labels must not contain white-space characters. */ + const char * Label; + + /* This indicates a number of properties of the plugin. */ + LADSPA_Properties Properties; + + /* This member points to the null-terminated name of the plugin + (e.g. "Sine Oscillator"). */ + const char * Name; + + /* This member points to the null-terminated string indicating the + maker of the plugin. This can be an empty string but not NULL. */ + const char * Maker; + + /* This member points to the null-terminated string indicating any + copyright applying to the plugin. If no Copyright applies the + string "None" should be used. */ + const char * Copyright; + + /* This indicates the number of ports (input AND output) present on + the plugin. */ + unsigned long PortCount; + + /* This member indicates an array of port descriptors. Valid indices + vary from 0 to PortCount-1. */ + const LADSPA_PortDescriptor * PortDescriptors; + + /* This member indicates an array of null-terminated strings + describing ports (e.g. "Frequency (Hz)"). Valid indices vary from + 0 to PortCount-1. */ + const char * const * PortNames; + + /* This member indicates an array of range hints for each port (see + above). Valid indices vary from 0 to PortCount-1. */ + const LADSPA_PortRangeHint * PortRangeHints; + + /* This may be used by the plugin developer to pass any custom + implementation data into an instantiate call. It must not be used + or interpreted by the host. It is expected that most plugin + writers will not use this facility as LADSPA_Handle should be + used to hold instance data. */ + void * ImplementationData; + + /* This member is a function pointer that instantiates a plugin. A + handle is returned indicating the new plugin instance. The + instantiation function accepts a sample rate as a parameter. The + plugin descriptor from which this instantiate function was found + must also be passed. This function must return NULL if + instantiation fails. + + Note that instance initialisation should generally occur in + activate() rather than here. */ + LADSPA_Handle (*instantiate)(const struct _LADSPA_Descriptor * Descriptor, + unsigned long SampleRate); + + /* This member is a function pointer that connects a port on an + instantiated plugin to a memory location at which a block of data + for the port will be read/written. The data location is expected + to be an array of LADSPA_Data for audio ports or a single + LADSPA_Data value for control ports. Memory issues will be + managed by the host. The plugin must read/write the data at these + locations every time run() or run_adding() is called and the data + present at the time of this connection call should not be + considered meaningful. + + connect_port() may be called more than once for a plugin instance + to allow the host to change the buffers that the plugin is + reading or writing. These calls may be made before or after + activate() or deactivate() calls. + + connect_port() must be called at least once for each port before + run() or run_adding() is called. When working with blocks of + LADSPA_Data the plugin should pay careful attention to the block + size passed to the run function as the block allocated may only + just be large enough to contain the block of samples. + + Plugin writers should be aware that the host may elect to use the + same buffer for more than one port and even use the same buffer + for both input and output (see LADSPA_PROPERTY_INPLACE_BROKEN). + However, overlapped buffers or use of a single buffer for both + audio and control data may result in unexpected behaviour. */ + void (*connect_port)(LADSPA_Handle Instance, + unsigned long Port, + LADSPA_Data * DataLocation); + + /* This member is a function pointer that initialises a plugin + instance and activates it for use. This is separated from + instantiate() to aid real-time support and so that hosts can + reinitialise a plugin instance by calling deactivate() and then + activate(). In this case the plugin instance must reset all state + information dependent on the history of the plugin instance + except for any data locations provided by connect_port() and any + gain set by set_run_adding_gain(). If there is nothing for + activate() to do then the plugin writer may provide a NULL rather + than an empty function. + + When present, hosts must call this function once before run() (or + run_adding()) is called for the first time. This call should be + made as close to the run() call as possible and indicates to + real-time plugins that they are now live. Plugins should not rely + on a prompt call to run() after activate(). activate() may not be + called again unless deactivate() is called first. Note that + connect_port() may be called before or after a call to + activate(). */ + void (*activate)(LADSPA_Handle Instance); + + /* This method is a function pointer that runs an instance of a + plugin for a block. Two parameters are required: the first is a + handle to the particular instance to be run and the second + indicates the block size (in samples) for which the plugin + instance may run. + + Note that if an activate() function exists then it must be called + before run() or run_adding(). If deactivate() is called for a + plugin instance then the plugin instance may not be reused until + activate() has been called again. + + If the plugin has the property LADSPA_PROPERTY_HARD_RT_CAPABLE + then there are various things that the plugin should not do + within the run() or run_adding() functions (see above). */ + void (*run)(LADSPA_Handle Instance, + unsigned long SampleCount); + + /* This method is a function pointer that runs an instance of a + plugin for a block. This has identical behaviour to run() except + in the way data is output from the plugin. When run() is used, + values are written directly to the memory areas associated with + the output ports. However when run_adding() is called, values + must be added to the values already present in the memory + areas. Furthermore, output values written must be scaled by the + current gain set by set_run_adding_gain() (see below) before + addition. + + run_adding() is optional. When it is not provided by a plugin, + this function pointer must be set to NULL. When it is provided, + the function set_run_adding_gain() must be provided also. */ + void (*run_adding)(LADSPA_Handle Instance, + unsigned long SampleCount); + + /* This method is a function pointer that sets the output gain for + use when run_adding() is called (see above). If this function is + never called the gain is assumed to default to 1. Gain + information should be retained when activate() or deactivate() + are called. + + This function should be provided by the plugin if and only if the + run_adding() function is provided. When it is absent this + function pointer must be set to NULL. */ + void (*set_run_adding_gain)(LADSPA_Handle Instance, + LADSPA_Data Gain); + + /* This is the counterpart to activate() (see above). If there is + nothing for deactivate() to do then the plugin writer may provide + a NULL rather than an empty function. + + Hosts must deactivate all activated units after they have been + run() (or run_adding()) for the last time. This call should be + made as close to the last run() call as possible and indicates to + real-time plugins that they are no longer live. Plugins should + not rely on prompt deactivation. Note that connect_port() may be + called before or after a call to deactivate(). + + Deactivation is not similar to pausing as the plugin instance + will be reinitialised when activate() is called to reuse it. */ + void (*deactivate)(LADSPA_Handle Instance); + + /* Once an instance of a plugin has been finished with it can be + deleted using the following function. The instance handle passed + ceases to be valid after this call. + + If activate() was called for a plugin instance then a + corresponding call to deactivate() must be made before cleanup() + is called. */ + void (*cleanup)(LADSPA_Handle Instance); + +} LADSPA_Descriptor; + +/**********************************************************************/ + +/* Accessing a Plugin: */ + +/* The exact mechanism by which plugins are loaded is host-dependent, + however all most hosts will need to know is the name of shared + object file containing the plugin types. To allow multiple hosts to + share plugin types, hosts may wish to check for environment + variable LADSPA_PATH. If present, this should contain a + colon-separated path indicating directories that should be searched + (in order) when loading plugin types. + + A plugin programmer must include a function called + "ladspa_descriptor" with the following function prototype within + the shared object file. This function will have C-style linkage (if + you are using C++ this is taken care of by the `extern "C"' clause + at the top of the file). + + A host will find the plugin shared object file by one means or + another, find the ladspa_descriptor() function, call it, and + proceed from there. + + Plugin types are accessed by index (not ID) using values from 0 + upwards. Out of range indexes must result in this function + returning NULL, so the plugin count can be determined by checking + for the least index that results in NULL being returned. */ + +const LADSPA_Descriptor * ladspa_descriptor(unsigned long Index); + +/* Datatype corresponding to the ladspa_descriptor() function. */ +typedef const LADSPA_Descriptor * +(*LADSPA_Descriptor_Function)(unsigned long Index); + +/**********************************************************************/ + +#ifdef __cplusplus +} +#endif + +#endif /* LADSPA_INCLUDED */ + +/* EOF */ diff -ruN beast-0.5.0/bse/zintern/Makefile.in beast-0.5.1/bse/zintern/Makefile.in --- beast-0.5.0/bse/zintern/Makefile.in 2003-03-13 22:09:37.000000000 +0100 +++ beast-0.5.1/bse/zintern/Makefile.in 2003-04-14 00:12:33.000000000 +0200 @@ -73,6 +73,9 @@ BSE_MAJOR_VERSION = @BSE_MAJOR_VERSION@ BSE_MICRO_VERSION = @BSE_MICRO_VERSION@ BSE_MINOR_VERSION = @BSE_MINOR_VERSION@ +BSE_PC_CFLAGS = @BSE_PC_CFLAGS@ +BSE_PC_LIBS = @BSE_PC_LIBS@ +BSE_PC_REQUIRE = @BSE_PC_REQUIRE@ BSE_SHELL_CFLAGS = @BSE_SHELL_CFLAGS@ BSE_SHELL_LIBS = @BSE_SHELL_LIBS@ BSE_VERSION = @BSE_VERSION@ @@ -90,10 +93,7 @@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GROFF = @GROFF@ -GSL_CFLAGS = @GSL_CFLAGS@ GSL_HAVE_LIBMAD = @GSL_HAVE_LIBMAD@ -GSL_LIBS = @GSL_LIBS@ -GSL_OV_READ_FLOAT_ARGS = @GSL_OV_READ_FLOAT_ARGS@ GSL_SIZEOF_STD_INTMAX_T = @GSL_SIZEOF_STD_INTMAX_T@ GXK_CFLAGS = @GXK_CFLAGS@ GXK_LIBS = @GXK_LIBS@ @@ -129,6 +129,7 @@ beastdocsdir = @beastdocsdir@ beastimagesdir = @beastimagesdir@ beastsampledatadir = @beastsampledatadir@ +bseladspadir = @bseladspadir@ bseplugindir = @bseplugindir@ bsescriptdir = @bsescriptdir@ diff -ruN beast-0.5.0/bse.pc.in beast-0.5.1/bse.pc.in --- beast-0.5.0/bse.pc.in 1970-01-01 01:00:00.000000000 +0100 +++ beast-0.5.1/bse.pc.in 2003-04-04 19:20:37.000000000 +0200 @@ -0,0 +1,13 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +# sfidl=@exec_prefix@/sfidl + +Name: BSE +Description: Bedevilled Sound Engine (Plugin Interface) +Requires: sfi @BSE_PC_REQUIRE@ gmodule-2.0 +Version: @VERSION@ +Libs: -L${libdir} -lbse @BSE_PC_LIBS@ +Cflags: -I${includedir} @BSE_PC_CFLAGS@ diff -ruN beast-0.5.0/bsw/Makefile.in beast-0.5.1/bsw/Makefile.in --- beast-0.5.0/bsw/Makefile.in 2003-03-13 22:09:41.000000000 +0100 +++ beast-0.5.1/bsw/Makefile.in 2003-04-14 00:12:34.000000000 +0200 @@ -75,6 +75,9 @@ BSE_MAJOR_VERSION = @BSE_MAJOR_VERSION@ BSE_MICRO_VERSION = @BSE_MICRO_VERSION@ BSE_MINOR_VERSION = @BSE_MINOR_VERSION@ +BSE_PC_CFLAGS = @BSE_PC_CFLAGS@ +BSE_PC_LIBS = @BSE_PC_LIBS@ +BSE_PC_REQUIRE = @BSE_PC_REQUIRE@ BSE_SHELL_CFLAGS = @BSE_SHELL_CFLAGS@ BSE_SHELL_LIBS = @BSE_SHELL_LIBS@ BSE_VERSION = @BSE_VERSION@ @@ -92,10 +95,7 @@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GROFF = @GROFF@ -GSL_CFLAGS = @GSL_CFLAGS@ GSL_HAVE_LIBMAD = @GSL_HAVE_LIBMAD@ -GSL_LIBS = @GSL_LIBS@ -GSL_OV_READ_FLOAT_ARGS = @GSL_OV_READ_FLOAT_ARGS@ GSL_SIZEOF_STD_INTMAX_T = @GSL_SIZEOF_STD_INTMAX_T@ GXK_CFLAGS = @GXK_CFLAGS@ GXK_LIBS = @GXK_LIBS@ @@ -131,6 +131,7 @@ beastdocsdir = @beastdocsdir@ beastimagesdir = @beastimagesdir@ beastsampledatadir = @beastsampledatadir@ +bseladspadir = @bseladspadir@ bseplugindir = @bseplugindir@ bsescriptdir = @bsescriptdir@ diff -ruN beast-0.5.0/bsw/bswgenapi.c beast-0.5.1/bsw/bswgenapi.c --- beast-0.5.0/bsw/bswgenapi.c 2003-03-13 20:59:46.000000000 +0100 +++ beast-0.5.1/bsw/bswgenapi.c 2003-04-13 21:15:07.000000000 +0200 @@ -1852,13 +1852,6 @@ return _retval; } -const gchar* -bse_source_ichannel_cname (SfiProxy bse_source_object, SfiInt input_channel) { - const gchar* _retval; - _retval = sfi_glue_vcall_string ("BseSource+ichannel-cname", 'p', bse_source_object, 'i', input_channel, 0); - return _retval; -} - SfiInt bse_source_ichannel_get_n_joints (SfiProxy bse_source_object, SfiInt input_channel) { SfiInt _retval; @@ -1881,6 +1874,13 @@ } const gchar* +bse_source_ichannel_ident (SfiProxy bse_source_object, SfiInt input_channel) { + const gchar* _retval; + _retval = sfi_glue_vcall_string ("BseSource+ichannel-ident", 'p', bse_source_object, 'i', input_channel, 0); + return _retval; +} + +const gchar* bse_source_ichannel_name (SfiProxy bse_source_object, SfiInt input_channel) { const gchar* _retval; _retval = sfi_glue_vcall_string ("BseSource+ichannel-name", 'p', bse_source_object, 'i', input_channel, 0); @@ -1923,9 +1923,9 @@ } const gchar* -bse_source_ochannel_cname (SfiProxy bse_source_object, SfiInt input_channel) { +bse_source_ochannel_ident (SfiProxy bse_source_object, SfiInt input_channel) { const gchar* _retval; - _retval = sfi_glue_vcall_string ("BseSource+ochannel-cname", 'p', bse_source_object, 'i', input_channel, 0); + _retval = sfi_glue_vcall_string ("BseSource+ochannel-ident", 'p', bse_source_object, 'i', input_channel, 0); return _retval; } @@ -1964,41 +1964,6 @@ return bse_error_type_from_choice (_retval); } -SfiReal -bse_wave_chunk_get_mix_freq (SfiProxy bse_wave_object, SfiInt chunk_index) { - SfiReal _retval; - _retval = sfi_glue_vcall_real ("BseWave+chunk-get-mix-freq", 'p', bse_wave_object, 'i', chunk_index, 0); - return _retval; -} - -SfiReal -bse_wave_chunk_get_osc_freq (SfiProxy bse_wave_object, SfiInt chunk_index) { - SfiReal _retval; - _retval = sfi_glue_vcall_real ("BseWave+chunk-get-osc-freq", 'p', bse_wave_object, 'i', chunk_index, 0); - return _retval; -} - -BseErrorType -bse_wave_load_wave (SfiProxy bse_wave_object, const gchar* file_name, const gchar* wave_name) { - const gchar * _retval; - _retval = sfi_glue_vcall_choice ("BseWave+load-wave", 'p', bse_wave_object, 's', file_name, 's', wave_name, 0); - return bse_error_type_from_choice (_retval); -} - -SfiInt -bse_wave_n_wave_chunks (SfiProxy bse_wave_object) { - SfiInt _retval; - _retval = sfi_glue_vcall_int ("BseWave+n-wave-chunks", 'p', bse_wave_object, 0); - return _retval; -} - -SfiProxy -bse_wave_use_editable (SfiProxy bse_wave_object, SfiInt chunk_index) { - SfiProxy _retval; - _retval = sfi_glue_vcall_proxy ("BseWave+use-editable", 'p', bse_wave_object, 'i', chunk_index, 0); - return _retval; -} - SfiProxy bse_container_get_item (SfiProxy bse_container_object, const gchar* item_type, SfiInt seq_id) { SfiProxy _retval; @@ -2024,6 +1989,18 @@ } BseErrorType +bse_wave_repo_load_file (SfiProxy bse_wave_repo_object, const gchar* file_name) { + const gchar * _retval; + _retval = sfi_glue_vcall_choice ("BseWaveRepo+load-file", 'p', bse_wave_repo_object, 's', file_name, 0); + return bse_error_type_from_choice (_retval); +} + +void +bse_wave_repo_remove_wave (SfiProxy bse_wave_repo_object, SfiProxy wave) { + sfi_glue_vcall_void ("BseWaveRepo+remove-wave", 'p', bse_wave_repo_object, 'p', wave, 0); +} + +BseErrorType bse_snet_can_create_source (SfiProxy bse_snet_object, const gchar* module_type) { const gchar * _retval; _retval = sfi_glue_vcall_choice ("BseSNet+can-create-source", 'p', bse_snet_object, 's', module_type, 0); @@ -2098,18 +2075,6 @@ } BseErrorType -bse_wave_repo_load_file (SfiProxy bse_wave_repo_object, const gchar* file_name) { - const gchar * _retval; - _retval = sfi_glue_vcall_choice ("BseWaveRepo+load-file", 'p', bse_wave_repo_object, 's', file_name, 0); - return bse_error_type_from_choice (_retval); -} - -void -bse_wave_repo_remove_wave (SfiProxy bse_wave_repo_object, SfiProxy wave) { - sfi_glue_vcall_void ("BseWaveRepo+remove-wave", 'p', bse_wave_repo_object, 'p', wave, 0); -} - -BseErrorType bse_project_restore_from_file (SfiProxy bse_project_object, const gchar* file_name) { const gchar * _retval; _retval = sfi_glue_vcall_choice ("BseProject+restore-from-file", 'p', bse_project_object, 's', file_name, 0); @@ -2355,172 +2320,85 @@ sfi_glue_vcall_void ("BseWaveOsc+request-pcm-position", 'p', bse_wave_osc_object, 0); } -void -bse_janitor_add_action (SfiProxy bse_janitor_object, const gchar* action, const gchar* name, const gchar* blurb) { - sfi_glue_vcall_void ("BseJanitor+add-action", 'p', bse_janitor_object, 's', action, 's', name, 's', blurb, 0); -} - -void -bse_janitor_exit (SfiProxy bse_janitor_object, BseUserMsgType msg_type, const gchar* message) { - sfi_glue_vcall_void ("BseJanitor+exit", 'p', bse_janitor_object, 'C', bse_user_msg_type_to_choice (msg_type), 's', message, 0); -} - -const gchar* -bse_janitor_get_action (SfiProxy bse_janitor_object, SfiInt nth_action) { - const gchar* _retval; - _retval = sfi_glue_vcall_string ("BseJanitor+get-action", 'p', bse_janitor_object, 'i', nth_action, 0); - return _retval; -} - -const gchar* -bse_janitor_get_action_blurb (SfiProxy bse_janitor_object, SfiInt nth_action) { - const gchar* _retval; - _retval = sfi_glue_vcall_string ("BseJanitor+get-action-blurb", 'p', bse_janitor_object, 'i', nth_action, 0); - return _retval; -} - -const gchar* -bse_janitor_get_action_name (SfiProxy bse_janitor_object, SfiInt nth_action) { - const gchar* _retval; - _retval = sfi_glue_vcall_string ("BseJanitor+get-action-name", 'p', bse_janitor_object, 'i', nth_action, 0); - return _retval; -} - -const gchar* -bse_janitor_get_proc_name (SfiProxy bse_janitor_object) { - const gchar* _retval; - _retval = sfi_glue_vcall_string ("BseJanitor+get-proc-name", 'p', bse_janitor_object, 0); - return _retval; -} - -const gchar* -bse_janitor_get_script_name (SfiProxy bse_janitor_object) { - const gchar* _retval; - _retval = sfi_glue_vcall_string ("BseJanitor+get-script-name", 'p', bse_janitor_object, 0); - return _retval; -} - -void -bse_janitor_kill (SfiProxy bse_janitor_object) { - sfi_glue_vcall_void ("BseJanitor+kill", 'p', bse_janitor_object, 0); -} - -SfiInt -bse_janitor_n_actions (SfiProxy bse_janitor_object) { - SfiInt _retval; - _retval = sfi_glue_vcall_int ("BseJanitor+n-actions", 'p', bse_janitor_object, 0); - return _retval; -} - -void -bse_janitor_progress (SfiProxy bse_janitor_object, SfiReal progress) { - sfi_glue_vcall_void ("BseJanitor+progress", 'p', bse_janitor_object, 'r', progress, 0); -} - -void -bse_janitor_remove_action (SfiProxy bse_janitor_object, const gchar* action) { - sfi_glue_vcall_void ("BseJanitor+remove-action", 'p', bse_janitor_object, 's', action, 0); -} - -void -bse_janitor_set_msg (SfiProxy bse_janitor_object, BseUserMsgType msg_type, const gchar* message) { - sfi_glue_vcall_void ("BseJanitor+set-msg", 'p', bse_janitor_object, 'C', bse_user_msg_type_to_choice (msg_type), 's', message, 0); -} - -void -bse_janitor_trigger_action (SfiProxy bse_janitor_object, const gchar* action) { - sfi_glue_vcall_void ("BseJanitor+trigger-action", 'p', bse_janitor_object, 's', action, 0); -} - -SfiInt -bse_midi_notifier_current_time (SfiProxy bse_midi_notifier_object) { - SfiInt _retval; - _retval = sfi_glue_vcall_int ("BseMidiNotifier+current-time", 'p', bse_midi_notifier_object, 0); +SfiReal +bse_wave_chunk_get_mix_freq (SfiProxy bse_wave_object, SfiInt chunk_index) { + SfiReal _retval; + _retval = sfi_glue_vcall_real ("BseWave+chunk-get-mix-freq", 'p', bse_wave_object, 'i', chunk_index, 0); return _retval; } -SfiInt -bse_data_pocket_create_entry (SfiProxy bse_data_pocket_object) { - SfiInt _retval; - _retval = sfi_glue_vcall_int ("BseDataPocket+create-entry", 'p', bse_data_pocket_object, 0); +SfiReal +bse_wave_chunk_get_osc_freq (SfiProxy bse_wave_object, SfiInt chunk_index) { + SfiReal _retval; + _retval = sfi_glue_vcall_real ("BseWave+chunk-get-osc-freq", 'p', bse_wave_object, 'i', chunk_index, 0); return _retval; } BseErrorType -bse_data_pocket_delete_entry (SfiProxy bse_data_pocket_object, SfiInt entry_id) { +bse_wave_load_wave (SfiProxy bse_wave_object, const gchar* file_name, const gchar* wave_name) { const gchar * _retval; - _retval = sfi_glue_vcall_choice ("BseDataPocket+delete-entry", 'p', bse_data_pocket_object, 'i', entry_id, 0); + _retval = sfi_glue_vcall_choice ("BseWave+load-wave", 'p', bse_wave_object, 's', file_name, 's', wave_name, 0); return bse_error_type_from_choice (_retval); } -SfiReal -bse_data_pocket_get_float (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name) { - SfiReal _retval; - _retval = sfi_glue_vcall_real ("BseDataPocket+get-float", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 0); - return _retval; -} - SfiInt -bse_data_pocket_get_int (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name) { +bse_wave_n_wave_chunks (SfiProxy bse_wave_object) { SfiInt _retval; - _retval = sfi_glue_vcall_int ("BseDataPocket+get-int", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 0); + _retval = sfi_glue_vcall_int ("BseWave+n-wave-chunks", 'p', bse_wave_object, 0); return _retval; } -SfiInt -bse_data_pocket_get_n_entries (SfiProxy bse_data_pocket_object) { - SfiInt _retval; - _retval = sfi_glue_vcall_int ("BseDataPocket+get-n-entries", 'p', bse_data_pocket_object, 0); +SfiProxy +bse_wave_use_editable (SfiProxy bse_wave_object, SfiInt chunk_index) { + SfiProxy _retval; + _retval = sfi_glue_vcall_proxy ("BseWave+use-editable", 'p', bse_wave_object, 'i', chunk_index, 0); return _retval; } SfiInt -bse_data_pocket_get_nth_entry_id (SfiProxy bse_data_pocket_object, SfiInt entry_index) { +bse_midi_notifier_current_time (SfiProxy bse_midi_notifier_object) { SfiInt _retval; - _retval = sfi_glue_vcall_int ("BseDataPocket+get-nth-entry-id", 'p', bse_data_pocket_object, 'i', entry_index, 0); + _retval = sfi_glue_vcall_int ("BseMidiNotifier+current-time", 'p', bse_midi_notifier_object, 0); return _retval; } SfiProxy -bse_data_pocket_get_object (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name) { +bse_track_get_part (SfiProxy bse_track_object, SfiInt tick) { SfiProxy _retval; - _retval = sfi_glue_vcall_proxy ("BseDataPocket+get-object", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 0); - return _retval; -} - -const gchar* -bse_data_pocket_get_string (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name) { - const gchar* _retval; - _retval = sfi_glue_vcall_string ("BseDataPocket+get-string", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 0); + _retval = sfi_glue_vcall_proxy ("BseTrack+get-part", 'p', bse_track_object, 'i', tick, 0); return _retval; } -BseErrorType -bse_data_pocket_set_float (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, SfiReal number) { - const gchar * _retval; - _retval = sfi_glue_vcall_choice ("BseDataPocket+set-float", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 'r', number, 0); - return bse_error_type_from_choice (_retval); +BseSongTiming* +bse_track_get_timing (SfiProxy bse_track_object, SfiInt tick) { + SfiRec* _retval; + BseSongTiming* _retval_conv; + _retval = sfi_glue_vcall_rec ("BseTrack+get-timing", 'p', bse_track_object, 'i', tick, 0); + _retval_conv = bse_song_timing_from_rec (_retval); + if (_retval_conv != NULL) sfi_glue_gc_add (_retval_conv, bse_song_timing_free); + return _retval_conv; } BseErrorType -bse_data_pocket_set_int (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, SfiInt number) { +bse_track_insert_part (SfiProxy bse_track_object, SfiInt tick, SfiProxy part) { const gchar * _retval; - _retval = sfi_glue_vcall_choice ("BseDataPocket+set-int", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 'i', number, 0); + _retval = sfi_glue_vcall_choice ("BseTrack+insert-part", 'p', bse_track_object, 'i', tick, 'p', part, 0); return bse_error_type_from_choice (_retval); } -BseErrorType -bse_data_pocket_set_object (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, SfiProxy item) { - const gchar * _retval; - _retval = sfi_glue_vcall_choice ("BseDataPocket+set-object", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 'p', item, 0); - return bse_error_type_from_choice (_retval); +BseTrackPartSeq* +bse_track_list_parts (SfiProxy bse_track_object) { + SfiSeq* _retval; + BseTrackPartSeq* _retval_conv; + _retval = sfi_glue_vcall_seq ("BseTrack+list-parts", 'p', bse_track_object, 0); + _retval_conv = bse_track_part_seq_from_seq (_retval); + if (_retval_conv != NULL) sfi_glue_gc_add (_retval_conv, bse_track_part_seq_free); + return _retval_conv; } -BseErrorType -bse_data_pocket_set_string (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, const gchar* string) { - const gchar * _retval; - _retval = sfi_glue_vcall_choice ("BseDataPocket+set-string", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 's', string, 0); - return bse_error_type_from_choice (_retval); +void +bse_track_remove_tick (SfiProxy bse_track_object, SfiInt tick) { + sfi_glue_vcall_void ("BseTrack+remove-tick", 'p', bse_track_object, 'i', tick, 0); } BseErrorType @@ -2652,43 +2530,165 @@ sfi_glue_vcall_void ("BsePart+select-rectangle-exclusive", 'p', bse_part_object, 'i', tick, 'i', duration, 'i', min_note, 'i', max_note, 0); } +SfiInt +bse_data_pocket_create_entry (SfiProxy bse_data_pocket_object) { + SfiInt _retval; + _retval = sfi_glue_vcall_int ("BseDataPocket+create-entry", 'p', bse_data_pocket_object, 0); + return _retval; +} + +BseErrorType +bse_data_pocket_delete_entry (SfiProxy bse_data_pocket_object, SfiInt entry_id) { + const gchar * _retval; + _retval = sfi_glue_vcall_choice ("BseDataPocket+delete-entry", 'p', bse_data_pocket_object, 'i', entry_id, 0); + return bse_error_type_from_choice (_retval); +} + +SfiReal +bse_data_pocket_get_float (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name) { + SfiReal _retval; + _retval = sfi_glue_vcall_real ("BseDataPocket+get-float", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 0); + return _retval; +} + +SfiInt +bse_data_pocket_get_int (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name) { + SfiInt _retval; + _retval = sfi_glue_vcall_int ("BseDataPocket+get-int", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 0); + return _retval; +} + +SfiInt +bse_data_pocket_get_n_entries (SfiProxy bse_data_pocket_object) { + SfiInt _retval; + _retval = sfi_glue_vcall_int ("BseDataPocket+get-n-entries", 'p', bse_data_pocket_object, 0); + return _retval; +} + +SfiInt +bse_data_pocket_get_nth_entry_id (SfiProxy bse_data_pocket_object, SfiInt entry_index) { + SfiInt _retval; + _retval = sfi_glue_vcall_int ("BseDataPocket+get-nth-entry-id", 'p', bse_data_pocket_object, 'i', entry_index, 0); + return _retval; +} + SfiProxy -bse_track_get_part (SfiProxy bse_track_object, SfiInt tick) { +bse_data_pocket_get_object (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name) { SfiProxy _retval; - _retval = sfi_glue_vcall_proxy ("BseTrack+get-part", 'p', bse_track_object, 'i', tick, 0); + _retval = sfi_glue_vcall_proxy ("BseDataPocket+get-object", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 0); return _retval; } -BseSongTiming* -bse_track_get_timing (SfiProxy bse_track_object, SfiInt tick) { - SfiRec* _retval; - BseSongTiming* _retval_conv; - _retval = sfi_glue_vcall_rec ("BseTrack+get-timing", 'p', bse_track_object, 'i', tick, 0); - _retval_conv = bse_song_timing_from_rec (_retval); - if (_retval_conv != NULL) sfi_glue_gc_add (_retval_conv, bse_song_timing_free); - return _retval_conv; +const gchar* +bse_data_pocket_get_string (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name) { + const gchar* _retval; + _retval = sfi_glue_vcall_string ("BseDataPocket+get-string", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 0); + return _retval; } BseErrorType -bse_track_insert_part (SfiProxy bse_track_object, SfiInt tick, SfiProxy part) { +bse_data_pocket_set_float (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, SfiReal number) { const gchar * _retval; - _retval = sfi_glue_vcall_choice ("BseTrack+insert-part", 'p', bse_track_object, 'i', tick, 'p', part, 0); + _retval = sfi_glue_vcall_choice ("BseDataPocket+set-float", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 'r', number, 0); return bse_error_type_from_choice (_retval); } -BseTrackPartSeq* -bse_track_list_parts (SfiProxy bse_track_object) { - SfiSeq* _retval; - BseTrackPartSeq* _retval_conv; - _retval = sfi_glue_vcall_seq ("BseTrack+list-parts", 'p', bse_track_object, 0); - _retval_conv = bse_track_part_seq_from_seq (_retval); - if (_retval_conv != NULL) sfi_glue_gc_add (_retval_conv, bse_track_part_seq_free); - return _retval_conv; +BseErrorType +bse_data_pocket_set_int (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, SfiInt number) { + const gchar * _retval; + _retval = sfi_glue_vcall_choice ("BseDataPocket+set-int", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 'i', number, 0); + return bse_error_type_from_choice (_retval); +} + +BseErrorType +bse_data_pocket_set_object (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, SfiProxy item) { + const gchar * _retval; + _retval = sfi_glue_vcall_choice ("BseDataPocket+set-object", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 'p', item, 0); + return bse_error_type_from_choice (_retval); +} + +BseErrorType +bse_data_pocket_set_string (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, const gchar* string) { + const gchar * _retval; + _retval = sfi_glue_vcall_choice ("BseDataPocket+set-string", 'p', bse_data_pocket_object, 'i', entry_id, 's', name, 's', string, 0); + return bse_error_type_from_choice (_retval); } void -bse_track_remove_tick (SfiProxy bse_track_object, SfiInt tick) { - sfi_glue_vcall_void ("BseTrack+remove-tick", 'p', bse_track_object, 'i', tick, 0); +bse_janitor_add_action (SfiProxy bse_janitor_object, const gchar* action, const gchar* name, const gchar* blurb) { + sfi_glue_vcall_void ("BseJanitor+add-action", 'p', bse_janitor_object, 's', action, 's', name, 's', blurb, 0); +} + +void +bse_janitor_exit (SfiProxy bse_janitor_object, BseUserMsgType msg_type, const gchar* message) { + sfi_glue_vcall_void ("BseJanitor+exit", 'p', bse_janitor_object, 'C', bse_user_msg_type_to_choice (msg_type), 's', message, 0); +} + +const gchar* +bse_janitor_get_action (SfiProxy bse_janitor_object, SfiInt nth_action) { + const gchar* _retval; + _retval = sfi_glue_vcall_string ("BseJanitor+get-action", 'p', bse_janitor_object, 'i', nth_action, 0); + return _retval; +} + +const gchar* +bse_janitor_get_action_blurb (SfiProxy bse_janitor_object, SfiInt nth_action) { + const gchar* _retval; + _retval = sfi_glue_vcall_string ("BseJanitor+get-action-blurb", 'p', bse_janitor_object, 'i', nth_action, 0); + return _retval; +} + +const gchar* +bse_janitor_get_action_name (SfiProxy bse_janitor_object, SfiInt nth_action) { + const gchar* _retval; + _retval = sfi_glue_vcall_string ("BseJanitor+get-action-name", 'p', bse_janitor_object, 'i', nth_action, 0); + return _retval; +} + +const gchar* +bse_janitor_get_proc_name (SfiProxy bse_janitor_object) { + const gchar* _retval; + _retval = sfi_glue_vcall_string ("BseJanitor+get-proc-name", 'p', bse_janitor_object, 0); + return _retval; +} + +const gchar* +bse_janitor_get_script_name (SfiProxy bse_janitor_object) { + const gchar* _retval; + _retval = sfi_glue_vcall_string ("BseJanitor+get-script-name", 'p', bse_janitor_object, 0); + return _retval; +} + +void +bse_janitor_kill (SfiProxy bse_janitor_object) { + sfi_glue_vcall_void ("BseJanitor+kill", 'p', bse_janitor_object, 0); +} + +SfiInt +bse_janitor_n_actions (SfiProxy bse_janitor_object) { + SfiInt _retval; + _retval = sfi_glue_vcall_int ("BseJanitor+n-actions", 'p', bse_janitor_object, 0); + return _retval; +} + +void +bse_janitor_progress (SfiProxy bse_janitor_object, SfiReal progress) { + sfi_glue_vcall_void ("BseJanitor+progress", 'p', bse_janitor_object, 'r', progress, 0); +} + +void +bse_janitor_remove_action (SfiProxy bse_janitor_object, const gchar* action) { + sfi_glue_vcall_void ("BseJanitor+remove-action", 'p', bse_janitor_object, 's', action, 0); +} + +void +bse_janitor_set_msg (SfiProxy bse_janitor_object, BseUserMsgType msg_type, const gchar* message) { + sfi_glue_vcall_void ("BseJanitor+set-msg", 'p', bse_janitor_object, 'C', bse_user_msg_type_to_choice (msg_type), 's', message, 0); +} + +void +bse_janitor_trigger_action (SfiProxy bse_janitor_object, const gchar* action) { + sfi_glue_vcall_void ("BseJanitor+trigger-action", 'p', bse_janitor_object, 's', action, 0); } void diff -ruN beast-0.5.0/bsw/bswgenapi.h beast-0.5.1/bsw/bswgenapi.h --- beast-0.5.0/bsw/bswgenapi.h 2003-03-13 20:59:45.000000000 +0100 +++ beast-0.5.1/bsw/bswgenapi.h 2003-04-13 21:15:07.000000000 +0200 @@ -136,30 +136,27 @@ #define bse_source_clear_outputs foo_prefix_bse_source_clear_outputs #define bse_source_has_outputs foo_prefix_bse_source_has_outputs #define bse_source_ichannel_blurb foo_prefix_bse_source_ichannel_blurb -#define bse_source_ichannel_cname foo_prefix_bse_source_ichannel_cname #define bse_source_ichannel_get_n_joints foo_prefix_bse_source_ichannel_get_n_joints #define bse_source_ichannel_get_ochannel foo_prefix_bse_source_ichannel_get_ochannel #define bse_source_ichannel_get_osource foo_prefix_bse_source_ichannel_get_osource +#define bse_source_ichannel_ident foo_prefix_bse_source_ichannel_ident #define bse_source_ichannel_name foo_prefix_bse_source_ichannel_name #define bse_source_is_joint_ichannel foo_prefix_bse_source_is_joint_ichannel #define bse_source_is_joint_ichannel_by_id foo_prefix_bse_source_is_joint_ichannel_by_id #define bse_source_n_ichannels foo_prefix_bse_source_n_ichannels #define bse_source_n_ochannels foo_prefix_bse_source_n_ochannels #define bse_source_ochannel_blurb foo_prefix_bse_source_ochannel_blurb -#define bse_source_ochannel_cname foo_prefix_bse_source_ochannel_cname +#define bse_source_ochannel_ident foo_prefix_bse_source_ochannel_ident #define bse_source_ochannel_name foo_prefix_bse_source_ochannel_name #define bse_source_set_input foo_prefix_bse_source_set_input #define bse_source_set_input_by_id foo_prefix_bse_source_set_input_by_id #define bse_source_unset_input foo_prefix_bse_source_unset_input #define bse_source_unset_input_by_id foo_prefix_bse_source_unset_input_by_id -#define bse_wave_chunk_get_mix_freq foo_prefix_bse_wave_chunk_get_mix_freq -#define bse_wave_chunk_get_osc_freq foo_prefix_bse_wave_chunk_get_osc_freq -#define bse_wave_load_wave foo_prefix_bse_wave_load_wave -#define bse_wave_n_wave_chunks foo_prefix_bse_wave_n_wave_chunks -#define bse_wave_use_editable foo_prefix_bse_wave_use_editable #define bse_container_get_item foo_prefix_bse_container_get_item #define bse_container_list_items foo_prefix_bse_container_list_items #define bse_container_lookup_item foo_prefix_bse_container_lookup_item +#define bse_wave_repo_load_file foo_prefix_bse_wave_repo_load_file +#define bse_wave_repo_remove_wave foo_prefix_bse_wave_repo_remove_wave #define bse_snet_can_create_source foo_prefix_bse_snet_can_create_source #define bse_snet_create_source foo_prefix_bse_snet_create_source #define bse_snet_remove_source foo_prefix_bse_snet_remove_source @@ -171,8 +168,6 @@ #define bse_song_remove_part foo_prefix_bse_song_remove_part #define bse_song_remove_track foo_prefix_bse_song_remove_track #define bse_song_synthesize_note foo_prefix_bse_song_synthesize_note -#define bse_wave_repo_load_file foo_prefix_bse_wave_repo_load_file -#define bse_wave_repo_remove_wave foo_prefix_bse_wave_repo_remove_wave #define bse_project_restore_from_file foo_prefix_bse_project_restore_from_file #define bse_project_store_bse foo_prefix_bse_project_store_bse #define bse_project_activate foo_prefix_bse_project_activate @@ -208,32 +203,17 @@ #define bse_server_use_new_project foo_prefix_bse_server_use_new_project #define bse_wave_osc_pcm_seek_perc foo_prefix_bse_wave_osc_pcm_seek_perc #define bse_wave_osc_request_pcm_position foo_prefix_bse_wave_osc_request_pcm_position -#define bse_janitor_add_action foo_prefix_bse_janitor_add_action -#define bse_janitor_exit foo_prefix_bse_janitor_exit -#define bse_janitor_get_action foo_prefix_bse_janitor_get_action -#define bse_janitor_get_action_blurb foo_prefix_bse_janitor_get_action_blurb -#define bse_janitor_get_action_name foo_prefix_bse_janitor_get_action_name -#define bse_janitor_get_proc_name foo_prefix_bse_janitor_get_proc_name -#define bse_janitor_get_script_name foo_prefix_bse_janitor_get_script_name -#define bse_janitor_kill foo_prefix_bse_janitor_kill -#define bse_janitor_n_actions foo_prefix_bse_janitor_n_actions -#define bse_janitor_progress foo_prefix_bse_janitor_progress -#define bse_janitor_remove_action foo_prefix_bse_janitor_remove_action -#define bse_janitor_set_msg foo_prefix_bse_janitor_set_msg -#define bse_janitor_trigger_action foo_prefix_bse_janitor_trigger_action +#define bse_wave_chunk_get_mix_freq foo_prefix_bse_wave_chunk_get_mix_freq +#define bse_wave_chunk_get_osc_freq foo_prefix_bse_wave_chunk_get_osc_freq +#define bse_wave_load_wave foo_prefix_bse_wave_load_wave +#define bse_wave_n_wave_chunks foo_prefix_bse_wave_n_wave_chunks +#define bse_wave_use_editable foo_prefix_bse_wave_use_editable #define bse_midi_notifier_current_time foo_prefix_bse_midi_notifier_current_time -#define bse_data_pocket_create_entry foo_prefix_bse_data_pocket_create_entry -#define bse_data_pocket_delete_entry foo_prefix_bse_data_pocket_delete_entry -#define bse_data_pocket_get_float foo_prefix_bse_data_pocket_get_float -#define bse_data_pocket_get_int foo_prefix_bse_data_pocket_get_int -#define bse_data_pocket_get_n_entries foo_prefix_bse_data_pocket_get_n_entries -#define bse_data_pocket_get_nth_entry_id foo_prefix_bse_data_pocket_get_nth_entry_id -#define bse_data_pocket_get_object foo_prefix_bse_data_pocket_get_object -#define bse_data_pocket_get_string foo_prefix_bse_data_pocket_get_string -#define bse_data_pocket_set_float foo_prefix_bse_data_pocket_set_float -#define bse_data_pocket_set_int foo_prefix_bse_data_pocket_set_int -#define bse_data_pocket_set_object foo_prefix_bse_data_pocket_set_object -#define bse_data_pocket_set_string foo_prefix_bse_data_pocket_set_string +#define bse_track_get_part foo_prefix_bse_track_get_part +#define bse_track_get_timing foo_prefix_bse_track_get_timing +#define bse_track_insert_part foo_prefix_bse_track_insert_part +#define bse_track_list_parts foo_prefix_bse_track_list_parts +#define bse_track_remove_tick foo_prefix_bse_track_remove_tick #define bse_part_change_note foo_prefix_bse_part_change_note #define bse_part_check_overlap foo_prefix_bse_part_check_overlap #define bse_part_delete_event foo_prefix_bse_part_delete_event @@ -252,11 +232,31 @@ #define bse_part_select_event foo_prefix_bse_part_select_event #define bse_part_select_rectangle foo_prefix_bse_part_select_rectangle #define bse_part_select_rectangle_exclusive foo_prefix_bse_part_select_rectangle_exclusive -#define bse_track_get_part foo_prefix_bse_track_get_part -#define bse_track_get_timing foo_prefix_bse_track_get_timing -#define bse_track_insert_part foo_prefix_bse_track_insert_part -#define bse_track_list_parts foo_prefix_bse_track_list_parts -#define bse_track_remove_tick foo_prefix_bse_track_remove_tick +#define bse_data_pocket_create_entry foo_prefix_bse_data_pocket_create_entry +#define bse_data_pocket_delete_entry foo_prefix_bse_data_pocket_delete_entry +#define bse_data_pocket_get_float foo_prefix_bse_data_pocket_get_float +#define bse_data_pocket_get_int foo_prefix_bse_data_pocket_get_int +#define bse_data_pocket_get_n_entries foo_prefix_bse_data_pocket_get_n_entries +#define bse_data_pocket_get_nth_entry_id foo_prefix_bse_data_pocket_get_nth_entry_id +#define bse_data_pocket_get_object foo_prefix_bse_data_pocket_get_object +#define bse_data_pocket_get_string foo_prefix_bse_data_pocket_get_string +#define bse_data_pocket_set_float foo_prefix_bse_data_pocket_set_float +#define bse_data_pocket_set_int foo_prefix_bse_data_pocket_set_int +#define bse_data_pocket_set_object foo_prefix_bse_data_pocket_set_object +#define bse_data_pocket_set_string foo_prefix_bse_data_pocket_set_string +#define bse_janitor_add_action foo_prefix_bse_janitor_add_action +#define bse_janitor_exit foo_prefix_bse_janitor_exit +#define bse_janitor_get_action foo_prefix_bse_janitor_get_action +#define bse_janitor_get_action_blurb foo_prefix_bse_janitor_get_action_blurb +#define bse_janitor_get_action_name foo_prefix_bse_janitor_get_action_name +#define bse_janitor_get_proc_name foo_prefix_bse_janitor_get_proc_name +#define bse_janitor_get_script_name foo_prefix_bse_janitor_get_script_name +#define bse_janitor_kill foo_prefix_bse_janitor_kill +#define bse_janitor_n_actions foo_prefix_bse_janitor_n_actions +#define bse_janitor_progress foo_prefix_bse_janitor_progress +#define bse_janitor_remove_action foo_prefix_bse_janitor_remove_action +#define bse_janitor_set_msg foo_prefix_bse_janitor_set_msg +#define bse_janitor_trigger_action foo_prefix_bse_janitor_trigger_action #define bse_editable_sample_close foo_prefix_bse_editable_sample_close #define bse_editable_sample_collect_stats foo_prefix_bse_editable_sample_collect_stats #define bse_editable_sample_get_length foo_prefix_bse_editable_sample_get_length @@ -622,38 +622,41 @@ #define BSE_IS_ITEM(proxy) bse_proxy_is_a ((proxy), "BseItem") #define BSE_IS_SOURCE(proxy) bse_proxy_is_a ((proxy), "BseSource") -#define BSE_IS_WAVE(proxy) bse_proxy_is_a ((proxy), "BseWave") -#define BSE_IS_CONTEXT_MERGER(proxy) bse_proxy_is_a ((proxy), "BseContextMerger") -#define BSE_IS_AMPLIFIER(proxy) bse_proxy_is_a ((proxy), "BseAmplifier") +#define BSE_IS_SNOOPER(proxy) bse_proxy_is_a ((proxy), "BseSnooper") +#define BSE_IS_CONSTANT(proxy) bse_proxy_is_a ((proxy), "BseConstant") #define BSE_IS_CONTAINER(proxy) bse_proxy_is_a ((proxy), "BseContainer") #define BSE_IS_SUPER(proxy) bse_proxy_is_a ((proxy), "BseSuper") +#define BSE_IS_WAVE_REPO(proxy) bse_proxy_is_a ((proxy), "BseWaveRepo") #define BSE_IS_SNET(proxy) bse_proxy_is_a ((proxy), "BseSNet") -#define BSE_IS_SONG(proxy) bse_proxy_is_a ((proxy), "BseSong") #define BSE_IS_MIDI_SYNTH(proxy) bse_proxy_is_a ((proxy), "BseMidiSynth") -#define BSE_IS_WAVE_REPO(proxy) bse_proxy_is_a ((proxy), "BseWaveRepo") +#define BSE_IS_SONG(proxy) bse_proxy_is_a ((proxy), "BseSong") #define BSE_IS_PROJECT(proxy) bse_proxy_is_a ((proxy), "BseProject") #define BSE_IS_SERVER(proxy) bse_proxy_is_a ((proxy), "BseServer") +#define BSE_IS_WAVE_OSC(proxy) bse_proxy_is_a ((proxy), "BseWaveOsc") #define BSE_IS_MIDI_ICONTROLLER(proxy) bse_proxy_is_a ((proxy), "BseMidiIController") +#define BSE_IS_MIDI_VOICE_INPUT(proxy) bse_proxy_is_a ((proxy), "BseMidiVoiceInput") +#define BSE_IS_CONTEXT_MERGER(proxy) bse_proxy_is_a ((proxy), "BseContextMerger") #define BSE_IS_SUB_IPORT(proxy) bse_proxy_is_a ((proxy), "BseSubIPort") #define BSE_IS_SUB_KEYBOARD(proxy) bse_proxy_is_a ((proxy), "BseSubKeyboard") -#define BSE_IS_PCM_INPUT(proxy) bse_proxy_is_a ((proxy), "BsePcmInput") -#define BSE_IS_WAVE_OSC(proxy) bse_proxy_is_a ((proxy), "BseWaveOsc") -#define BSE_IS_SNOOPER(proxy) bse_proxy_is_a ((proxy), "BseSnooper") +#define BSE_IS_BIQUAD_FILTER(proxy) bse_proxy_is_a ((proxy), "BseBiquadFilter") +#define BSE_IS_SUB_SYNTH(proxy) bse_proxy_is_a ((proxy), "BseSubSynth") +#define BSE_IS_STANDARD_OSC(proxy) bse_proxy_is_a ((proxy), "BseStandardOsc") #define BSE_IS_PCM_OUTPUT(proxy) bse_proxy_is_a ((proxy), "BsePcmOutput") -#define BSE_IS_MIDI_VOICE_INPUT(proxy) bse_proxy_is_a ((proxy), "BseMidiVoiceInput") +#define BSE_IS_PCM_INPUT(proxy) bse_proxy_is_a ((proxy), "BsePcmInput") #define BSE_IS_SUB_OPORT(proxy) bse_proxy_is_a ((proxy), "BseSubOPort") #define BSE_IS_SUB_INSTRUMENT(proxy) bse_proxy_is_a ((proxy), "BseSubInstrument") +#define BSE_IS_WAVE(proxy) bse_proxy_is_a ((proxy), "BseWave") #define BSE_IS_MIDI_VOICE_SWITCH(proxy) bse_proxy_is_a ((proxy), "BseMidiVoiceSwitch") -#define BSE_IS_STANDARD_OSC(proxy) bse_proxy_is_a ((proxy), "BseStandardOsc") -#define BSE_IS_SUB_SYNTH(proxy) bse_proxy_is_a ((proxy), "BseSubSynth") -#define BSE_IS_CONSTANT(proxy) bse_proxy_is_a ((proxy), "BseConstant") -#define BSE_IS_BIQUAD_FILTER(proxy) bse_proxy_is_a ((proxy), "BseBiquadFilter") -#define BSE_IS_JANITOR(proxy) bse_proxy_is_a ((proxy), "BseJanitor") +#define BSE_IS_LADSPA_MODULE(proxy) bse_proxy_is_a ((proxy), "BseLadspaModule") +#define BSE_IS_AMPLIFIER(proxy) bse_proxy_is_a ((proxy), "BseAmplifier") #define BSE_IS_MIDI_NOTIFIER(proxy) bse_proxy_is_a ((proxy), "BseMidiNotifier") -#define BSE_IS_DATA_POCKET(proxy) bse_proxy_is_a ((proxy), "BseDataPocket") -#define BSE_IS_PART(proxy) bse_proxy_is_a ((proxy), "BsePart") #define BSE_IS_TRACK(proxy) bse_proxy_is_a ((proxy), "BseTrack") +#define BSE_IS_PART(proxy) bse_proxy_is_a ((proxy), "BsePart") +#define BSE_IS_DATA_POCKET(proxy) bse_proxy_is_a ((proxy), "BseDataPocket") +#define BSE_IS_JANITOR(proxy) bse_proxy_is_a ((proxy), "BseJanitor") #define BSE_IS_EDITABLE_SAMPLE(proxy) bse_proxy_is_a ((proxy), "BseEditableSample") +#define BSE_IS_PCM_DEVICE(proxy) bse_proxy_is_a ((proxy), "BsePcmDevice") +#define BSE_IS_PCM_DEVICE_OSS(proxy) bse_proxy_is_a ((proxy), "BsePcmDeviceOSS") SfiBool bse_item_check_is_a (SfiProxy bse_item_object, const gchar* type_name); SfiProxy bse_item_common_ancestor (SfiProxy bse_item_object, SfiProxy item2); @@ -677,30 +680,27 @@ void bse_source_clear_outputs (SfiProxy bse_source_object); SfiBool bse_source_has_outputs (SfiProxy bse_source_object); const gchar* bse_source_ichannel_blurb (SfiProxy bse_source_object, SfiInt input_channel); -const gchar* bse_source_ichannel_cname (SfiProxy bse_source_object, SfiInt input_channel); SfiInt bse_source_ichannel_get_n_joints (SfiProxy bse_source_object, SfiInt input_channel); SfiInt bse_source_ichannel_get_ochannel (SfiProxy bse_source_object, SfiInt input_channel, SfiInt input_joint); SfiProxy bse_source_ichannel_get_osource (SfiProxy bse_source_object, SfiInt input_channel, SfiInt input_joint); +const gchar* bse_source_ichannel_ident (SfiProxy bse_source_object, SfiInt input_channel); const gchar* bse_source_ichannel_name (SfiProxy bse_source_object, SfiInt input_channel); SfiBool bse_source_is_joint_ichannel (SfiProxy bse_source_object, const gchar* input_channel); SfiBool bse_source_is_joint_ichannel_by_id (SfiProxy bse_source_object, SfiInt input_channel); SfiInt bse_source_n_ichannels (SfiProxy bse_source_object); SfiInt bse_source_n_ochannels (SfiProxy bse_source_object); const gchar* bse_source_ochannel_blurb (SfiProxy bse_source_object, SfiInt input_channel); -const gchar* bse_source_ochannel_cname (SfiProxy bse_source_object, SfiInt input_channel); +const gchar* bse_source_ochannel_ident (SfiProxy bse_source_object, SfiInt input_channel); const gchar* bse_source_ochannel_name (SfiProxy bse_source_object, SfiInt input_channel); BseErrorType bse_source_set_input (SfiProxy bse_source_object, const gchar* input_channel, SfiProxy omodule, const gchar* output_channel); BseErrorType bse_source_set_input_by_id (SfiProxy bse_source_object, SfiInt input_channel, SfiProxy omodule, SfiInt output_channel); BseErrorType bse_source_unset_input (SfiProxy bse_source_object, const gchar* input_channel, SfiProxy omodule, const gchar* output_channel); BseErrorType bse_source_unset_input_by_id (SfiProxy bse_source_object, SfiInt input_channel, SfiProxy omodule, SfiInt output_channel); -SfiReal bse_wave_chunk_get_mix_freq (SfiProxy bse_wave_object, SfiInt chunk_index); -SfiReal bse_wave_chunk_get_osc_freq (SfiProxy bse_wave_object, SfiInt chunk_index); -BseErrorType bse_wave_load_wave (SfiProxy bse_wave_object, const gchar* file_name, const gchar* wave_name); -SfiInt bse_wave_n_wave_chunks (SfiProxy bse_wave_object); -SfiProxy bse_wave_use_editable (SfiProxy bse_wave_object, SfiInt chunk_index); SfiProxy bse_container_get_item (SfiProxy bse_container_object, const gchar* item_type, SfiInt seq_id); BseProxySeq* bse_container_list_items (SfiProxy bse_container_object); SfiProxy bse_container_lookup_item (SfiProxy bse_container_object, const gchar* uname); +BseErrorType bse_wave_repo_load_file (SfiProxy bse_wave_repo_object, const gchar* file_name); +void bse_wave_repo_remove_wave (SfiProxy bse_wave_repo_object, SfiProxy wave); BseErrorType bse_snet_can_create_source (SfiProxy bse_snet_object, const gchar* module_type); SfiProxy bse_snet_create_source (SfiProxy bse_snet_object, const gchar* module_type); BseErrorType bse_snet_remove_source (SfiProxy bse_snet_object, SfiProxy module); @@ -712,8 +712,6 @@ void bse_song_remove_part (SfiProxy bse_song_object, SfiProxy part); void bse_song_remove_track (SfiProxy bse_song_object, SfiProxy track); void bse_song_synthesize_note (SfiProxy bse_song_object, SfiProxy track, SfiInt duration, SfiInt note, SfiInt fine_tune, SfiReal velocity); -BseErrorType bse_wave_repo_load_file (SfiProxy bse_wave_repo_object, const gchar* file_name); -void bse_wave_repo_remove_wave (SfiProxy bse_wave_repo_object, SfiProxy wave); BseErrorType bse_project_restore_from_file (SfiProxy bse_project_object, const gchar* file_name); BseErrorType bse_project_store_bse (SfiProxy bse_project_object, const gchar* file_name, SfiBool self_contained); BseErrorType bse_project_activate (SfiProxy bse_project_object); @@ -749,32 +747,17 @@ SfiProxy bse_server_use_new_project (SfiProxy bse_server_object, const gchar* name); void bse_wave_osc_pcm_seek_perc (SfiProxy bse_wave_osc_object, SfiReal pos_perc); void bse_wave_osc_request_pcm_position (SfiProxy bse_wave_osc_object); -void bse_janitor_add_action (SfiProxy bse_janitor_object, const gchar* action, const gchar* name, const gchar* blurb); -void bse_janitor_exit (SfiProxy bse_janitor_object, BseUserMsgType msg_type, const gchar* message); -const gchar* bse_janitor_get_action (SfiProxy bse_janitor_object, SfiInt nth_action); -const gchar* bse_janitor_get_action_blurb (SfiProxy bse_janitor_object, SfiInt nth_action); -const gchar* bse_janitor_get_action_name (SfiProxy bse_janitor_object, SfiInt nth_action); -const gchar* bse_janitor_get_proc_name (SfiProxy bse_janitor_object); -const gchar* bse_janitor_get_script_name (SfiProxy bse_janitor_object); -void bse_janitor_kill (SfiProxy bse_janitor_object); -SfiInt bse_janitor_n_actions (SfiProxy bse_janitor_object); -void bse_janitor_progress (SfiProxy bse_janitor_object, SfiReal progress); -void bse_janitor_remove_action (SfiProxy bse_janitor_object, const gchar* action); -void bse_janitor_set_msg (SfiProxy bse_janitor_object, BseUserMsgType msg_type, const gchar* message); -void bse_janitor_trigger_action (SfiProxy bse_janitor_object, const gchar* action); +SfiReal bse_wave_chunk_get_mix_freq (SfiProxy bse_wave_object, SfiInt chunk_index); +SfiReal bse_wave_chunk_get_osc_freq (SfiProxy bse_wave_object, SfiInt chunk_index); +BseErrorType bse_wave_load_wave (SfiProxy bse_wave_object, const gchar* file_name, const gchar* wave_name); +SfiInt bse_wave_n_wave_chunks (SfiProxy bse_wave_object); +SfiProxy bse_wave_use_editable (SfiProxy bse_wave_object, SfiInt chunk_index); SfiInt bse_midi_notifier_current_time (SfiProxy bse_midi_notifier_object); -SfiInt bse_data_pocket_create_entry (SfiProxy bse_data_pocket_object); -BseErrorType bse_data_pocket_delete_entry (SfiProxy bse_data_pocket_object, SfiInt entry_id); -SfiReal bse_data_pocket_get_float (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name); -SfiInt bse_data_pocket_get_int (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name); -SfiInt bse_data_pocket_get_n_entries (SfiProxy bse_data_pocket_object); -SfiInt bse_data_pocket_get_nth_entry_id (SfiProxy bse_data_pocket_object, SfiInt entry_index); -SfiProxy bse_data_pocket_get_object (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name); -const gchar* bse_data_pocket_get_string (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name); -BseErrorType bse_data_pocket_set_float (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, SfiReal number); -BseErrorType bse_data_pocket_set_int (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, SfiInt number); -BseErrorType bse_data_pocket_set_object (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, SfiProxy item); -BseErrorType bse_data_pocket_set_string (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, const gchar* string); +SfiProxy bse_track_get_part (SfiProxy bse_track_object, SfiInt tick); +BseSongTiming* bse_track_get_timing (SfiProxy bse_track_object, SfiInt tick); +BseErrorType bse_track_insert_part (SfiProxy bse_track_object, SfiInt tick, SfiProxy part); +BseTrackPartSeq* bse_track_list_parts (SfiProxy bse_track_object); +void bse_track_remove_tick (SfiProxy bse_track_object, SfiInt tick); BseErrorType bse_part_change_note (SfiProxy bse_part_object, SfiInt id, SfiInt tick, SfiInt duration, SfiInt note, SfiInt fine_tune, SfiReal velocity); BsePartNoteSeq* bse_part_check_overlap (SfiProxy bse_part_object, SfiInt tick, SfiInt duration, SfiInt note); BseErrorType bse_part_delete_event (SfiProxy bse_part_object, SfiInt id); @@ -793,11 +776,31 @@ void bse_part_select_event (SfiProxy bse_part_object, SfiInt id); void bse_part_select_rectangle (SfiProxy bse_part_object, SfiInt tick, SfiInt duration, SfiInt min_note, SfiInt max_note); void bse_part_select_rectangle_exclusive (SfiProxy bse_part_object, SfiInt tick, SfiInt duration, SfiInt min_note, SfiInt max_note); -SfiProxy bse_track_get_part (SfiProxy bse_track_object, SfiInt tick); -BseSongTiming* bse_track_get_timing (SfiProxy bse_track_object, SfiInt tick); -BseErrorType bse_track_insert_part (SfiProxy bse_track_object, SfiInt tick, SfiProxy part); -BseTrackPartSeq* bse_track_list_parts (SfiProxy bse_track_object); -void bse_track_remove_tick (SfiProxy bse_track_object, SfiInt tick); +SfiInt bse_data_pocket_create_entry (SfiProxy bse_data_pocket_object); +BseErrorType bse_data_pocket_delete_entry (SfiProxy bse_data_pocket_object, SfiInt entry_id); +SfiReal bse_data_pocket_get_float (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name); +SfiInt bse_data_pocket_get_int (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name); +SfiInt bse_data_pocket_get_n_entries (SfiProxy bse_data_pocket_object); +SfiInt bse_data_pocket_get_nth_entry_id (SfiProxy bse_data_pocket_object, SfiInt entry_index); +SfiProxy bse_data_pocket_get_object (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name); +const gchar* bse_data_pocket_get_string (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name); +BseErrorType bse_data_pocket_set_float (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, SfiReal number); +BseErrorType bse_data_pocket_set_int (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, SfiInt number); +BseErrorType bse_data_pocket_set_object (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, SfiProxy item); +BseErrorType bse_data_pocket_set_string (SfiProxy bse_data_pocket_object, SfiInt entry_id, const gchar* name, const gchar* string); +void bse_janitor_add_action (SfiProxy bse_janitor_object, const gchar* action, const gchar* name, const gchar* blurb); +void bse_janitor_exit (SfiProxy bse_janitor_object, BseUserMsgType msg_type, const gchar* message); +const gchar* bse_janitor_get_action (SfiProxy bse_janitor_object, SfiInt nth_action); +const gchar* bse_janitor_get_action_blurb (SfiProxy bse_janitor_object, SfiInt nth_action); +const gchar* bse_janitor_get_action_name (SfiProxy bse_janitor_object, SfiInt nth_action); +const gchar* bse_janitor_get_proc_name (SfiProxy bse_janitor_object); +const gchar* bse_janitor_get_script_name (SfiProxy bse_janitor_object); +void bse_janitor_kill (SfiProxy bse_janitor_object); +SfiInt bse_janitor_n_actions (SfiProxy bse_janitor_object); +void bse_janitor_progress (SfiProxy bse_janitor_object, SfiReal progress); +void bse_janitor_remove_action (SfiProxy bse_janitor_object, const gchar* action); +void bse_janitor_set_msg (SfiProxy bse_janitor_object, BseUserMsgType msg_type, const gchar* message); +void bse_janitor_trigger_action (SfiProxy bse_janitor_object, const gchar* action); void bse_editable_sample_close (SfiProxy bse_editable_sample_object); SfiFBlock* bse_editable_sample_collect_stats (SfiProxy bse_editable_sample_object, SfiInt voffset, SfiReal offset_scale, SfiInt block_size, SfiInt stepping, SfiInt max_pairs); SfiInt bse_editable_sample_get_length (SfiProxy bse_editable_sample_object); diff -ruN beast-0.5.0/config.guess beast-0.5.1/config.guess --- beast-0.5.0/config.guess 2003-03-10 05:39:57.000000000 +0100 +++ beast-0.5.1/config.guess 2003-01-11 21:49:45.000000000 +0100 @@ -1,9 +1,9 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -timestamp='2001-04-20' +timestamp='2003-01-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -24,8 +24,9 @@ # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# Written by Per Bothner . -# Please send patches to . +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and @@ -52,7 +53,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -87,33 +88,44 @@ exit 1 fi +trap 'exit 1' 1 2 15 -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. -# CC_FOR_BUILD -- compiler used by this script. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int dummy(){}" > $dummy.c - for c in cc gcc c89 ; do - ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 - if test $? = 0 ; then - CC_FOR_BUILD="$c"; break - fi - done - rm -f $dummy.c $dummy.o $dummy.rel + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found + CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac +esac ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 8/24/94.) +# (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi @@ -127,29 +139,31 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) - # Netbsd (nbsd) targets should (where applicable) match one or + # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. - # Determine the machine/vendor (is the vendor relevant). - case "${UNAME_MACHINE}" in - amiga) machine=m68k-unknown ;; - arm32) machine=arm-unknown ;; - atari*) machine=m68k-atari ;; - sun3*) machine=m68k-sun ;; - mac68k) machine=m68k-apple ;; - macppc) machine=powerpc-apple ;; - hp3[0-9][05]) machine=m68k-hp ;; - ibmrt|romp-ibm) machine=romp-ibm ;; - *) machine=${UNAME_MACHINE}-unknown ;; + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. - case "${UNAME_MACHINE}" in - i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then @@ -165,12 +179,65 @@ ;; esac # The OS release - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:MicroBSD:*:*) + echo ${UNAME_MACHINE}-unknown-microbsd${UNAME_RELEASE} + exit 0 ;; alpha:OSF1:*:*) if test $UNAME_RELEASE = "V4.0"; then UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -179,6 +246,7 @@ # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. + eval $set_cc_for_build cat <$dummy.s .data \$Lformat: @@ -204,9 +272,9 @@ jsr \$26,exit .end main EOF - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null + $CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null if test "$?" = 0 ; then - case `./$dummy` in + case `$dummy` in 0-0) UNAME_MACHINE="alpha" ;; @@ -225,9 +293,14 @@ 2-307) UNAME_MACHINE="alphaev67" ;; + 2-1307) + UNAME_MACHINE="alphaev68" + ;; + 3-1307) + UNAME_MACHINE="alphaev7" + ;; esac fi - rm -f $dummy.s $dummy echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) @@ -242,29 +315,11 @@ Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; - arc64:OpenBSD:*:*) - echo mips64el-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hkmips:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition @@ -286,6 +341,10 @@ NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; @@ -314,7 +373,7 @@ echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) - UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) @@ -328,9 +387,6 @@ aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; - atari*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -357,18 +413,6 @@ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; - sun3*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; @@ -385,6 +429,7 @@ echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ @@ -406,15 +451,20 @@ exit (-1); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy \ - && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; @@ -475,6 +525,7 @@ exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include @@ -486,8 +537,7 @@ exit(0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 @@ -496,7 +546,7 @@ fi exit 0 ;; *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else @@ -536,10 +586,8 @@ 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - case "${HPUX_REV}" in - 11.[0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 @@ -548,12 +596,13 @@ case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac - fi ;; - esac - if [ "${HP_ARCH}" = "" ]; then - sed 's/^ //' << EOF >$dummy.c + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include @@ -586,11 +635,21 @@ exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` - if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi - rm -f $dummy.c $dummy - fi ;; + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) @@ -598,6 +657,7 @@ echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int @@ -623,8 +683,7 @@ exit (0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) @@ -633,7 +692,7 @@ 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; - *9??*:MPE/iX:*:*) + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) @@ -652,9 +711,6 @@ parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; - hppa*:OpenBSD:*:*) - echo hppa-unknown-openbsd - exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; @@ -673,41 +729,33 @@ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; - CRAY*X-MP:*:*:*) - echo xmp-cray-unicos - exit 0 ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; - CRAY*T3D:*:*:*) - echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; - CRAY-2:*:*:*) - echo cray2-cray-unicos - exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; @@ -718,10 +766,18 @@ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin @@ -732,11 +788,17 @@ i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; + x86:Interix*:3*) + echo i586-pc-interix3 + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? - echo i386-pc-interix + echo i586-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin @@ -757,103 +819,67 @@ echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux + echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) - cat >$dummy.c < /* for printf() prototype */ -int main (int argc, char *argv[]) { -#else -int main (argc, argv) int argc; char *argv[]; { -#endif -#ifdef __MIPSEB__ - printf ("%s-unknown-linux-gnu\n", argv[1]); -#endif -#ifdef __MIPSEL__ - printf ("%sel-unknown-linux-gnu\n", argv[1]); -#endif - return 0; -} + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; - ppc:Linux:*:*) - # Determine Lib Version - cat >$dummy.c < -#if defined(__GLIBC__) -extern char __libc_version[]; -extern char __libc_release[]; -#endif -main(argc, argv) - int argc; - char *argv[]; -{ -#if defined(__GLIBC__) - printf("%s %s\n", __libc_version, __libc_release); -#else - printf("unknown\n"); -#endif - return 0; -} + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif EOF - LIBC="" - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null - if test "$?" = 0 ; then - ./$dummy | grep 1\.99 > /dev/null - if test "$?" = 0 ; then LIBC="libc1" ; fi - fi - rm -f $dummy.c $dummy - echo powerpc-unknown-linux-gnu${LIBC} + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu exit 0 ;; alpha:Linux:*:*) - cat <$dummy.s - .data - \$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - .text - .globl main - .align 4 - .ent main - main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - LIBC="" - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `./$dummy` in - 0-0) UNAME_MACHINE="alpha" ;; - 1-0) UNAME_MACHINE="alphaev5" ;; - 1-1) UNAME_MACHINE="alphaev56" ;; - 1-101) UNAME_MACHINE="alphapca56" ;; - 2-303) UNAME_MACHINE="alphaev6" ;; - 2-307) UNAME_MACHINE="alphaev67" ;; - esac - objdump --private-headers $dummy | \ - grep ld.so.1 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.s $dummy + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) @@ -883,71 +909,59 @@ # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. - ld_supported_emulations=`cd /; ld --help 2>&1 \ - | sed -ne '/supported emulations:/!d + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g - s/.*supported emulations: *// + s/.*supported targets: *// s/ .*// p'` - case "$ld_supported_emulations" in - i*86linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 - ;; - elf_i*86) + case "$ld_supported_targets" in + elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; - i*86coff) + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 - ;; - esac - # Either a pre-BFD a.out linker (linux-gnuoldld) - # or one that does not give us useful --help. - # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. - # If ld does not provide *any* "supported emulations:" - # that means it is gnuoldld. - test -z "$ld_supported_emulations" && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 - case "${UNAME_MACHINE}" in - i*86) - VENDOR=pc; - ;; - *) - VENDOR=unknown; - ;; + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; esac # Determine whether the default compiler is a.out or elf - cat >$dummy.c < -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif -#ifdef __ELF__ -# ifdef __GLIBC__ -# if __GLIBC__ >= 2 - printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); -# else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); -# endif -# else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); -# endif -#else - printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); -#endif - return 0; -} + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; -# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions -# are messed up and put the nodename in both sysname and nodename. i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) @@ -958,6 +972,23 @@ # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then @@ -966,36 +997,32 @@ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; - i*86:*:5:7*) - # Fixed at (any) Pentium or better - UNAME_MACHINE=i586 - if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then - echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} - fi + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 - (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 - (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1019,9 +1046,15 @@ # "miniframe" echo m68010-convergent-sysv exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` @@ -1038,9 +1071,6 @@ mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; @@ -1067,8 +1097,8 @@ echo ns32k-sni-sysv fi exit 0 ;; - PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) @@ -1080,6 +1110,10 @@ # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; @@ -1108,6 +1142,9 @@ SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; @@ -1115,18 +1152,24 @@ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) - echo `uname -p`-apple-darwin${UNAME_RELEASE} + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) - if test "${UNAME_MACHINE}" = "x86pc"; then + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo `uname -p`-${UNAME_MACHINE}-nto-qnx + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; - NSR-[KW]:NONSTOP_KERNEL:*:*) + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) @@ -1149,11 +1192,6 @@ fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; @@ -1177,6 +1215,7 @@ #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 +eval $set_cc_for_build cat >$dummy.c < @@ -1291,8 +1330,7 @@ } EOF -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 -rm -f $dummy.c $dummy +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 # Apollos put the system type in the environment. diff -ruN beast-0.5.0/config.sub beast-0.5.1/config.sub --- beast-0.5.0/config.sub 2003-03-10 05:39:57.000000000 +0100 +++ beast-0.5.1/config.sub 2003-01-11 21:49:45.000000000 +0100 @@ -1,9 +1,9 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -timestamp='2001-04-20' +timestamp='2003-01-03' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -29,7 +29,8 @@ # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# Please send patches to . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -117,7 +118,7 @@ # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | storm-chaos* | os2-emx*) + nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; @@ -157,6 +158,14 @@ os=-vxworks basic_machine=$1 ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; -hiux*) os=-hiuxwe2 ;; @@ -215,26 +224,48 @@ case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. - tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \ - | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \ - | pyramid | mn10200 | mn10300 | tron | a29k \ - | 580 | i960 | h8300 \ - | x86 | ppcbe | mipsbe | mipsle | shbe | shle \ - | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ - | hppa64 \ - | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \ - | alphaev6[78] \ - | we32k | ns16k | clipper | i370 | sh | sh[34] \ - | powerpc | powerpcle \ - | 1750a | dsp16xx | pdp10 | pdp11 \ - | mips16 | mips64 | mipsel | mips64el \ - | mips64orion | mips64orionel | mipstx39 | mipstx39el \ - | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ - | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \ - | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \ - | v850 | c4x \ - | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \ - | pj | pjl | h8500) + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) @@ -242,7 +273,7 @@ basic_machine=$basic_machine-unknown os=-none ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | w65) + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' @@ -257,31 +288,58 @@ exit 1 ;; # Recognize the basic CPU types with company name. - # FIXME: clean up the formatting here. - vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ - | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \ - | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \ - | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ - | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ - | xmp-* | ymp-* \ - | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \ - | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \ - | hppa2.0n-* | hppa64-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \ - | alphaev6[78]-* \ - | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ - | clipper-* | orion-* \ - | sparclite-* | pdp10-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ - | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \ - | mips16-* | mips64-* | mipsel-* \ - | mips64el-* | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ - | mipstx39-* | mipstx39el-* | mcore-* \ - | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \ - | [cjt]90-* \ - | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ - | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \ - | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*) + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. @@ -344,6 +402,10 @@ basic_machine=ns32k-sequent os=-dynix ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; convex-c1) basic_machine=c1-convex os=-bsd @@ -364,16 +426,8 @@ basic_machine=c38-convex os=-bsd ;; - cray | ymp) - basic_machine=ymp-cray - os=-unicos - ;; - cray2) - basic_machine=cray2-cray - os=-unicos - ;; - [cjt]90) - basic_machine=${basic_machine}-cray + cray | j90) + basic_machine=j90-cray os=-unicos ;; crds | unos) @@ -388,6 +442,14 @@ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola @@ -568,14 +630,6 @@ basic_machine=m68k-atari os=-mint ;; - mipsel*-linux*) - basic_machine=mipsel-unknown - os=-linux-gnu - ;; - mips*-linux*) - basic_machine=mips-unknown - os=-linux-gnu - ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; @@ -590,6 +644,10 @@ basic_machine=m68k-rom68k os=-coff ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; msdos) basic_machine=i386-pc os=-msdos @@ -662,6 +720,10 @@ np1) basic_machine=np1-gould ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; nsr-tandem) basic_machine=nsr-tandem ;; @@ -669,6 +731,10 @@ basic_machine=hppa1.1-oki os=-proelf ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose @@ -691,19 +757,19 @@ pbb) basic_machine=m68k-tti ;; - pc532 | pc532-*) + pc532 | pc532-*) basic_machine=ns32k-pc532 ;; - pentium | p5 | k5 | k6 | nexgen) + pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; - pentiumpro | p6 | 6x86 | athlon) + pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2) basic_machine=i686-pc ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-*) + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) @@ -718,15 +784,25 @@ power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown - ;; + ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown - ;; + ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; ps2) basic_machine=i386-ibm ;; @@ -744,10 +820,22 @@ rtpc | rtpc-*) basic_machine=romp-ibm ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; sa29200) basic_machine=a29k-amd os=-udi ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; sequent) basic_machine=i386-sequent ;; @@ -755,7 +843,7 @@ basic_machine=sh-hitachi os=-hms ;; - sparclite-wrs) + sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; @@ -822,9 +910,17 @@ os=-dynix ;; t3e) - basic_machine=t3e-cray + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray os=-unicos ;; + tic4x | c4x*) + basic_machine=tic4x-unknown + os=-coff + ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff @@ -835,6 +931,10 @@ tx39el) basic_machine=mipstx39el-unknown ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; tower | tower-32) basic_machine=m68k-ncr ;; @@ -859,8 +959,8 @@ os=-vms ;; vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; + basic_machine=f301-fujitsu + ;; vxworks960) basic_machine=i960-wrs os=-vxworks @@ -881,13 +981,13 @@ basic_machine=hppa1.1-winbond os=-proelf ;; - xmp) - basic_machine=xmp-cray - os=-unicos - ;; - xps | xps100) + xps | xps100) basic_machine=xps100-honeywell ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim @@ -908,13 +1008,6 @@ op60c) basic_machine=hppa1.1-oki ;; - mips) - if [ x$os = x-linux-gnu ]; then - basic_machine=mips-unknown - else - basic_machine=mips-mips - fi - ;; romp) basic_machine=romp-ibm ;; @@ -934,13 +1027,16 @@ we32k) basic_machine=we32k-att ;; - sh3 | sh4) + sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele) basic_machine=sh-unknown ;; + sh64) + basic_machine=sh64-unknown + ;; sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; - cydra) + cydra) basic_machine=cydra-cydrome ;; orion) @@ -955,10 +1051,6 @@ pmac | pmac-mpw) basic_machine=powerpc-apple ;; - c4x*) - basic_machine=c4x-none - os=-coff - ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; @@ -1018,11 +1110,15 @@ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*) + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -microbsd*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1034,8 +1130,10 @@ ;; esac ;; + -nto-qnx*) + ;; -nto*) - os=-nto-qnx + os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ @@ -1074,14 +1172,20 @@ -acis*) os=-aos ;; + -atheos*) + os=-atheos + ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; + -nova*) + os=-rtmk-nova + ;; -ns2 ) - os=-nextstep2 + os=-nextstep2 ;; -nsk*) os=-nsk @@ -1120,8 +1224,8 @@ -xenix) os=-xenix ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint ;; -none) ;; @@ -1154,10 +1258,11 @@ arm*-semi) os=-aout ;; + # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; - pdp11-*) + pdp11-*) os=-none ;; *-dec | vax-*) @@ -1184,6 +1289,9 @@ mips*-*) os=-elf ;; + or32-*) + os=-coff + ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; @@ -1247,19 +1355,19 @@ *-next) os=-nextstep3 ;; - *-gould) + *-gould) os=-sysv ;; - *-highlevel) + *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; - *-sgi) + *-sgi) os=-irix ;; - *-siemens) + *-siemens) os=-sysv4 ;; *-masscomp) @@ -1331,7 +1439,7 @@ -ptx*) vendor=sequent ;; - -vxsim* | -vxworks*) + -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) @@ -1346,6 +1454,9 @@ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; + -vos*) + vendor=stratus + ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; diff -ruN beast-0.5.0/configure beast-0.5.1/configure --- beast-0.5.0/configure 2003-03-13 20:56:42.000000000 +0100 +++ beast-0.5.1/configure 2003-04-13 22:13:47.000000000 +0200 @@ -13,7 +13,7 @@ # Any additions from configure.in: BSE_MAJOR_VERSION=0 BSE_MINOR_VERSION=5 -BSE_MICRO_VERSION=0 +BSE_MICRO_VERSION=1 BSE_INTERFACE_AGE=0 BSE_BINARY_AGE=0 if test `expr $BSE_MINOR_VERSION \% 2 \| $BSE_MAJOR_VERSION \< 1` = 1 ; then @@ -1161,7 +1161,6 @@ - # check compilers and their behaviour, setup CFLAGS @@ -1179,7 +1178,7 @@ # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1183: checking for $ac_word" >&5 +echo "configure:1182: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1209,7 +1208,7 @@ # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1213: checking for $ac_word" >&5 +echo "configure:1212: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1260,7 +1259,7 @@ # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1264: checking for $ac_word" >&5 +echo "configure:1263: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1292,7 +1291,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1296: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1295: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1303,12 +1302,12 @@ cat > conftest.$ac_ext << EOF -#line 1307 "configure" +#line 1306 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1334,12 +1333,12 @@ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1338: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1337: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1343: checking whether we are using GNU C" >&5 +echo "configure:1342: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1348,7 +1347,7 @@ yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1352: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1367,7 +1366,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1371: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1370: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1482,7 +1481,7 @@ echo $ac_n "checking whether ${CC-cc} supports -fno-strict-aliasing""... $ac_c" 1>&6 -echo "configure:1486: checking whether ${CC-cc} supports -fno-strict-aliasing" >&5 +echo "configure:1485: checking whether ${CC-cc} supports -fno-strict-aliasing" >&5 echo >conftest.c; if ${CC-cc} -fno-strict-aliasing -c $CFLAGS conftest.c >/dev/null 2>&1 ; then echo "$ac_t""yes" 1>&6 @@ -1635,7 +1634,7 @@ echo $ac_n "checking whether ${CC-cc} supports $mc_opt_warn_no_return""... $ac_c" 1>&6 -echo "configure:1639: checking whether ${CC-cc} supports $mc_opt_warn_no_return" >&5 +echo "configure:1638: checking whether ${CC-cc} supports $mc_opt_warn_no_return" >&5 echo >conftest.c; if ${CC-cc} $mc_opt_warn_no_return -c $CFLAGS conftest.c >/dev/null 2>&1 ; then echo "$ac_t""yes" 1>&6 @@ -1744,7 +1743,7 @@ echo $ac_n "checking whether ${CC-cc} supports -frerun-loop-opt""... $ac_c" 1>&6 -echo "configure:1748: checking whether ${CC-cc} supports -frerun-loop-opt" >&5 +echo "configure:1747: checking whether ${CC-cc} supports -frerun-loop-opt" >&5 echo >conftest.c; if ${CC-cc} -frerun-loop-opt -c $CFLAGS conftest.c >/dev/null 2>&1 ; then echo "$ac_t""yes" 1>&6 @@ -1780,7 +1779,7 @@ echo $ac_n "checking whether ${CC-cc} supports -fno-keep-static-consts""... $ac_c" 1>&6 -echo "configure:1784: checking whether ${CC-cc} supports -fno-keep-static-consts" >&5 +echo "configure:1783: checking whether ${CC-cc} supports -fno-keep-static-consts" >&5 echo >conftest.c; if ${CC-cc} -fno-keep-static-consts -c $CFLAGS conftest.c >/dev/null 2>&1 ; then echo "$ac_t""yes" 1>&6 @@ -1851,7 +1850,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1855: checking for $ac_word" >&5 +echo "configure:1854: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1883,7 +1882,7 @@ echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1887: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 +echo "configure:1886: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1894,12 +1893,12 @@ cat > conftest.$ac_ext << EOF -#line 1898 "configure" +#line 1897 "configure" #include "confdefs.h" int main(){return(0);} EOF -if { (eval echo configure:1903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1925,12 +1924,12 @@ { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1929: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1928: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 -echo "configure:1934: checking whether we are using GNU C++" >&5 +echo "configure:1933: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1939,7 +1938,7 @@ yes; #endif EOF -if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1943: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1942: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no @@ -1958,7 +1957,7 @@ ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 -echo "configure:1962: checking whether ${CXX-g++} accepts -g" >&5 +echo "configure:1961: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2133,7 +2132,7 @@ echo $ac_n "checking whether ${CC-cc} supports -fno-keep-static-consts""... $ac_c" 1>&6 -echo "configure:2137: checking whether ${CC-cc} supports -fno-keep-static-consts" >&5 +echo "configure:2136: checking whether ${CC-cc} supports -fno-keep-static-consts" >&5 echo >conftest.c; if ${CC-cc} -fno-keep-static-consts -c $CFLAGS conftest.c >/dev/null 2>&1 ; then echo "$ac_t""yes" 1>&6 @@ -2187,7 +2186,7 @@ echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:2191: checking how to run the C preprocessor" >&5 +echo "configure:2190: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2202,13 +2201,13 @@ # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2212: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2211: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -2219,13 +2218,13 @@ rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2229: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2228: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -2236,13 +2235,13 @@ rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2246: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2245: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -2271,7 +2270,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2275: checking for $ac_word" >&5 +echo "configure:2274: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2303,7 +2302,7 @@ echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:2307: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 +echo "configure:2306: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -2314,12 +2313,12 @@ cat > conftest.$ac_ext << EOF -#line 2318 "configure" +#line 2317 "configure" #include "confdefs.h" int main(){return(0);} EOF -if { (eval echo configure:2323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -2345,12 +2344,12 @@ { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:2349: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2348: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 -echo "configure:2354: checking whether we are using GNU C++" >&5 +echo "configure:2353: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2359,7 +2358,7 @@ yes; #endif EOF -if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:2363: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:2362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no @@ -2378,7 +2377,7 @@ ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 -echo "configure:2382: checking whether ${CXX-g++} accepts -g" >&5 +echo "configure:2381: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2410,7 +2409,7 @@ fi echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 -echo "configure:2414: checking how to run the C++ preprocessor" >&5 +echo "configure:2413: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2423,12 +2422,12 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2432: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2431: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -2453,12 +2452,12 @@ echo "$ac_t""$CXXCPP" 1>&6 echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2457: checking for working const" >&5 +echo "configure:2456: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2510: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2528,21 +2527,21 @@ fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:2532: checking for inline" >&5 +echo "configure:2531: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -2568,12 +2567,12 @@ esac echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2572: checking for ANSI C header files" >&5 +echo "configure:2571: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2581,7 +2580,7 @@ #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2585: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2584: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2598,7 +2597,7 @@ if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2616,7 +2615,7 @@ if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2637,7 +2636,7 @@ : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2648,7 +2647,7 @@ exit (0); } EOF -if { (eval echo configure:2652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -2685,7 +2684,7 @@ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:2689: checking for a BSD compatible install" >&5 +echo "configure:2688: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2738,7 +2737,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:2742: checking whether ln -s works" >&5 +echo "configure:2741: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2773,12 +2772,12 @@ fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:2777: checking for Cygwin environment" >&5 +echo "configure:2776: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2792: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else @@ -2806,19 +2805,19 @@ CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 -echo "configure:2810: checking for mingw32 environment" >&5 +echo "configure:2809: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2821: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else @@ -2904,7 +2903,7 @@ fi echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:2908: checking build system type" >&5 +echo "configure:2907: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -2933,7 +2932,7 @@ if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:2937: checking for ld used by GCC" >&5 +echo "configure:2936: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -2963,10 +2962,10 @@ esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:2967: checking for GNU ld" >&5 +echo "configure:2966: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:2970: checking for non-GNU ld" >&5 +echo "configure:2969: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3001,7 +3000,7 @@ fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -echo "configure:3005: checking if the linker ($LD) is GNU ld" >&5 +echo "configure:3004: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3018,7 +3017,7 @@ echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 -echo "configure:3022: checking for $LD option to reload object files" >&5 +echo "configure:3021: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3030,7 +3029,7 @@ test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:3034: checking for BSD-compatible nm" >&5 +echo "configure:3033: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3068,7 +3067,7 @@ echo "$ac_t""$NM" 1>&6 echo $ac_n "checking for a sed that does not truncate output""... $ac_c" 1>&6 -echo "configure:3072: checking for a sed that does not truncate output" >&5 +echo "configure:3071: checking for a sed that does not truncate output" >&5 if eval "test \"`echo '$''{'lt_cv_path_SED'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3122,7 +3121,7 @@ # Check for GNU sed and select it if it is found. if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then lt_cv_path_SED=${_sed} - break; + break fi while true; do cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp" @@ -3152,7 +3151,7 @@ echo "$ac_t""$SED" 1>&6 echo $ac_n "checking how to recognise dependent libraries""... $ac_c" 1>&6 -echo "configure:3156: checking how to recognise dependent libraries" >&5 +echo "configure:3155: checking how to recognise dependent libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3338,13 +3337,13 @@ deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 -echo "configure:3342: checking for object suffix" >&5 +echo "configure:3341: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext -if { (eval echo configure:3348: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3347: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; @@ -3364,7 +3363,7 @@ echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:3368: checking for executable suffix" >&5 +echo "configure:3367: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3374,7 +3373,7 @@ rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:3378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:3377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.$ac_ext | *.c | *.o | *.obj) ;; @@ -3405,7 +3404,7 @@ # Check for command to grab the raw symbol name followed by C symbol from nm. echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6 -echo "configure:3409: checking command to parse $NM output" >&5 +echo "configure:3408: checking command to parse $NM output" >&5 if eval "test \"`echo '$''{'lt_cv_sys_global_symbol_pipe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3443,6 +3442,9 @@ irix* | nonstopux*) symcode='[BCDEGRST]' ;; +osf*) + symcode='[BCDEGQRST]' + ;; solaris* | sysv5*) symcode='[BDT]' ;; @@ -3485,10 +3487,10 @@ int main(){nm_test_var='a';nm_test_func();return(0);} EOF - if { (eval echo configure:3489: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + if { (eval echo configure:3491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then # Now try to grab the symbols. nlist=conftest.nm - if { (eval echo configure:3492: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then + if { (eval echo configure:3494: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -3539,7 +3541,7 @@ save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" - if { (eval echo configure:3543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + if { (eval echo configure:3545: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS="$save_LIBS" @@ -3588,17 +3590,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3592: checking for $ac_hdr" >&5 +echo "configure:3594: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3602: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3604: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3634,7 +3636,7 @@ file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 -echo "configure:3638: checking for ${ac_tool_prefix}file" >&5 +echo "configure:3640: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3696,7 +3698,7 @@ if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 -echo "configure:3700: checking for file" >&5 +echo "configure:3702: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3767,7 +3769,7 @@ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3771: checking for $ac_word" >&5 +echo "configure:3773: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3799,7 +3801,7 @@ # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3803: checking for $ac_word" >&5 +echo "configure:3805: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3834,7 +3836,7 @@ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3838: checking for $ac_word" >&5 +echo "configure:3840: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3866,7 +3868,7 @@ # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3870: checking for $ac_word" >&5 +echo "configure:3872: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3915,8 +3917,8 @@ case $host in *-*-irix6*) # Find out which ABI we are using. - echo '#line 3919 "configure"' > conftest.$ac_ext - if { (eval echo configure:3920: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 3921 "configure"' > conftest.$ac_ext + if { (eval echo configure:3922: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" @@ -3937,7 +3939,7 @@ SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:3941: checking whether the C compiler needs -belf" >&5 +echo "configure:3943: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3950,14 +3952,14 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else @@ -4077,7 +4079,7 @@ compiler="$2" echo $ac_n "checking for objdir""... $ac_c" 1>&6 -echo "configure:4081: checking for objdir" >&5 +echo "configure:4083: checking for objdir" >&5 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then @@ -4104,7 +4106,7 @@ # in isolation, and that seeing it set (from the cache) indicates that # the associated values are set (in the cache) correctly too. echo $ac_n "checking for $compiler option to produce PIC""... $ac_c" 1>&6 -echo "configure:4108: checking for $compiler option to produce PIC" >&5 +echo "configure:4110: checking for $compiler option to produce PIC" >&5 if eval "test \"`echo '$''{'lt_cv_prog_cc_pic'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4252,21 +4254,21 @@ # Check to make sure the pic_flag actually works. echo $ac_n "checking if $compiler PIC flag $lt_cv_prog_cc_pic works""... $ac_c" 1>&6 -echo "configure:4256: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 +echo "configure:4258: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 if eval "test \"`echo '$''{'lt_cv_prog_cc_pic_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4272: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* case $host_os in hpux9* | hpux10* | hpux11*) @@ -4318,7 +4320,7 @@ fi echo $ac_n "checking if $compiler static flag $lt_cv_prog_cc_static works""... $ac_c" 1>&6 -echo "configure:4322: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 +echo "configure:4324: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 if eval "test \"`echo '$''{'lt_cv_prog_cc_static_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4326,14 +4328,14 @@ save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_prog_cc_static_works=yes else @@ -4360,7 +4362,7 @@ # Check to see if options -o and -c are simultaneously supported by compiler echo $ac_n "checking if $compiler supports -c -o file.$ac_objext""... $ac_c" 1>&6 -echo "configure:4364: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo "configure:4366: checking if $compiler supports -c -o file.$ac_objext" >&5 if eval "test \"`echo '$''{'lt_cv_compiler_c_o'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4379,7 +4381,7 @@ save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no -if { (eval echo configure:4383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then +if { (eval echo configure:4385: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then @@ -4408,7 +4410,7 @@ if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo echo $ac_n "checking if $compiler supports -c -o file.lo""... $ac_c" 1>&6 -echo "configure:4412: checking if $compiler supports -c -o file.lo" >&5 +echo "configure:4414: checking if $compiler supports -c -o file.lo" >&5 if eval "test \"`echo '$''{'lt_cv_compiler_o_lo'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4419,14 +4421,14 @@ save_objext="$ac_objext" ac_objext=lo cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4432: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -4457,7 +4459,7 @@ if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo $ac_n "checking if we can lock with hard links""... $ac_c" 1>&6 -echo "configure:4461: checking if we can lock with hard links" >&5 +echo "configure:4463: checking if we can lock with hard links" >&5 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no @@ -4476,20 +4478,20 @@ if test "$GCC" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions""... $ac_c" 1>&6 -echo "configure:4480: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo "configure:4482: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo "int some_variable = 0;" > conftest.$ac_ext save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" compiler_rtti_exceptions=no cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4495: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -4516,7 +4518,7 @@ # See if the linker supports building shared libraries. echo $ac_n "checking whether the linker ($LD) supports shared libraries""... $ac_c" 1>&6 -echo "configure:4520: checking whether the linker ($LD) supports shared libraries" >&5 +echo "configure:4522: checking whether the linker ($LD) supports shared libraries" >&5 allow_undefined_flag= no_undefined_flag= @@ -4794,10 +4796,12 @@ # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + case $ld_flag in + *-brtl*) aix_use_runtimelinking=yes break - fi + ;; + esac done esac @@ -4869,7 +4873,7 @@ allow_undefined_flag='${wl}-berok' # This is a bit strange, but is similar to how AIX traditionally builds # it's shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; @@ -4913,7 +4917,7 @@ # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. Also zsh mangles # `"' quotes if we put them in here... so don't! - archive_cmds='$nonopt $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' + archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)' # We need to add '_' to the symbols in $export_symbols first #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' hardcode_direct=yes @@ -4968,10 +4972,11 @@ irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='-rpath $libdir' fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; @@ -4999,7 +5004,7 @@ hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else @@ -5009,7 +5014,7 @@ hardcode_libdir_flag_spec='-R$libdir' ;; *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac @@ -5212,7 +5217,7 @@ # Check hardcoding attributes. echo $ac_n "checking how to hardcode library paths into programs""... $ac_c" 1>&6 -echo "configure:5216: checking how to hardcode library paths into programs" >&5 +echo "configure:5221: checking how to hardcode library paths into programs" >&5 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then @@ -5240,7 +5245,7 @@ striplib= old_striplib= echo $ac_n "checking whether stripping libraries is possible""... $ac_c" 1>&6 -echo "configure:5244: checking whether stripping libraries is possible" >&5 +echo "configure:5249: checking whether stripping libraries is possible" >&5 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" @@ -5254,7 +5259,7 @@ # PORTME Fill in your ld.so characteristics echo $ac_n "checking dynamic linker characteristics""... $ac_c" 1>&6 -echo "configure:5258: checking dynamic linker characteristics" >&5 +echo "configure:5263: checking dynamic linker characteristics" >&5 library_names_spec= libname_spec='lib$name' soname_spec= @@ -5281,6 +5286,9 @@ aix4* | aix5*) version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' @@ -5319,6 +5327,7 @@ fi shlibpath_var=LIBPATH fi + hardcode_into_libs=yes ;; amigaos*) @@ -5398,6 +5407,18 @@ dynamic_linker=no ;; +freebsd*-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU/FreeBSD ld.so' + ;; + freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat @@ -5563,11 +5584,13 @@ osf3* | osf4* | osf5*) version_type=osf need_version=no - soname_spec='${libname}${release}.so' - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_lib_prefix=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + hardcode_into_libs=yes ;; sco3.2v5*) @@ -5660,11 +5683,11 @@ # Report the final consequences. echo $ac_n "checking if libtool supports shared libraries""... $ac_c" 1>&6 -echo "configure:5664: checking if libtool supports shared libraries" >&5 +echo "configure:5687: checking if libtool supports shared libraries" >&5 echo "$ac_t""$can_build_shared" 1>&6 echo $ac_n "checking whether to build shared libraries""... $ac_c" 1>&6 -echo "configure:5668: checking whether to build shared libraries" >&5 +echo "configure:5691: checking whether to build shared libraries" >&5 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and @@ -5687,7 +5710,7 @@ echo "$ac_t""$enable_shared" 1>&6 echo $ac_n "checking whether to build static libraries""... $ac_c" 1>&6 -echo "configure:5691: checking whether to build static libraries" >&5 +echo "configure:5714: checking whether to build static libraries" >&5 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$ac_t""$enable_static" 1>&6 @@ -5728,12 +5751,12 @@ *) echo $ac_n "checking for shl_load""... $ac_c" 1>&6 -echo "configure:5732: checking for shl_load" >&5 +echo "configure:5755: checking for shl_load" >&5 if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shl_load=yes" else @@ -5774,7 +5797,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:5778: checking for shl_load in -ldld" >&5 +echo "configure:5801: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5782,7 +5805,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5812,12 +5835,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen""... $ac_c" 1>&6 -echo "configure:5816: checking for dlopen" >&5 +echo "configure:5839: checking for dlopen" >&5 if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_dlopen=yes" else @@ -5858,7 +5881,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:5862: checking for dlopen in -ldl" >&5 +echo "configure:5885: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5866,7 +5889,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5904: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5896,7 +5919,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6 -echo "configure:5900: checking for dlopen in -lsvld" >&5 +echo "configure:5923: checking for dlopen in -lsvld" >&5 ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5904,7 +5927,7 @@ ac_save_LIBS="$LIBS" LIBS="-lsvld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5942: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5934,7 +5957,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 -echo "configure:5938: checking for dld_link in -ldld" >&5 +echo "configure:5961: checking for dld_link in -ldld" >&5 ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5942,7 +5965,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6009,7 +6032,7 @@ LIBS="$lt_cv_dlopen_libs $LIBS" echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 -echo "configure:6013: checking whether a program can dlopen itself" >&5 +echo "configure:6036: checking whether a program can dlopen itself" >&5 if eval "test \"`echo '$''{'lt_cv_dlopen_self'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6019,7 +6042,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then + if { (eval echo configure:6107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in @@ -6103,7 +6126,7 @@ if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 -echo "configure:6107: checking whether a statically linked program can dlopen itself" >&5 +echo "configure:6130: checking whether a statically linked program can dlopen itself" >&5 if eval "test \"`echo '$''{'lt_cv_dlopen_self_static'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6113,7 +6136,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then + if { (eval echo configure:6201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in @@ -6223,14 +6246,14 @@ # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo $ac_n "checking whether -lc should be explicitly linked in""... $ac_c" 1>&6 -echo "configure:6227: checking whether -lc should be explicitly linked in" >&5 +echo "configure:6250: checking whether -lc should be explicitly linked in" >&5 if eval "test \"`echo '$''{'lt_cv_archive_cmds_need_lc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else $rm conftest* echo 'static int dummy;' > conftest.$ac_ext - if { (eval echo configure:6234: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + if { (eval echo configure:6257: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then soname=conftest lib=conftest libobjs=conftest.$ac_objext @@ -6243,7 +6266,7 @@ libname=conftest save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= - if { (eval echo configure:6247: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; } + if { (eval echo configure:6270: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; } then lt_cv_archive_cmds_need_lc=no else @@ -6843,7 +6866,7 @@ # Figure build requirement echo $ac_n "checking whether make is GNU Make""... $ac_c" 1>&6 -echo "configure:6847: checking whether make is GNU Make" >&5 +echo "configure:6870: checking whether make is GNU Make" >&5 STRIP_BEGIN= STRIP_END= if $ac_make --version 2>/dev/null | grep '^GNU Make ' >/dev/null ; then @@ -6863,7 +6886,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6867: checking for $ac_word" >&5 +echo "configure:6890: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6909,7 +6932,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6913: checking for $ac_word" >&5 +echo "configure:6936: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6939,7 +6962,7 @@ done echo $ac_n "checking whether develoment build rules can be used""... $ac_c" 1>&6 -echo "configure:6943: checking whether develoment build rules can be used" >&5 +echo "configure:6966: checking whether develoment build rules can be used" >&5 TEST_SRCDIR=$(cd $srcdir ; /bin/pwd) TEST_BUILDDIR=$(cd . ; /bin/pwd) if test "$TEST_SRCDIR" == "$TEST_BUILDDIR" -a -n "$PERL" \ @@ -6970,7 +6993,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6974: checking for $ac_word" >&5 +echo "configure:6997: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7014,19 +7037,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for glib-2.0 >= 2.0.6 gobject-2.0 gmodule-2.0 gthread-2.0""... $ac_c" 1>&6 -echo "configure:7018: checking for glib-2.0 >= 2.0.6 gobject-2.0 gmodule-2.0 gthread-2.0" >&5 +echo "configure:7041: checking for glib-2.0 >= 2.0.6 gobject-2.0 gmodule-2.0 gthread-2.0" >&5 if $PKG_CONFIG --exists "glib-2.0 >= 2.0.6 gobject-2.0 gmodule-2.0 gthread-2.0" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking GLIB_CFLAGS""... $ac_c" 1>&6 -echo "configure:7025: checking GLIB_CFLAGS" >&5 +echo "configure:7048: checking GLIB_CFLAGS" >&5 GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.0.6 gobject-2.0 gmodule-2.0 gthread-2.0"` echo "$ac_t""$GLIB_CFLAGS" 1>&6 echo $ac_n "checking GLIB_LIBS""... $ac_c" 1>&6 -echo "configure:7030: checking GLIB_LIBS" >&5 +echo "configure:7053: checking GLIB_LIBS" >&5 GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.0.6 gobject-2.0 gmodule-2.0 gthread-2.0"` echo "$ac_t""$GLIB_LIBS" 1>&6 else @@ -7060,33 +7083,29 @@ - GSL_CFLAGS= - GSL_LIBS= - - ov_tests=0 - # check for ogg_stream_reset_serialno() to identify rc4 which changes ov_read_float() - GSL_OV_READ_FLOAT_ARGS=0 - echo $ac_n "checking for ov_read_float in -lvorbisfile""... $ac_c" 1>&6 -echo "configure:7071: checking for ov_read_float in -lvorbisfile" >&5 -ac_lib_var=`echo vorbisfile'_'ov_read_float | sed 'y%./+-%__p_%'` + OV_LIBS= + ov_tests=0 + echo $ac_n "checking for ogg_stream_reset_serialno in -lvorbisfile""... $ac_c" 1>&6 +echo "configure:7090: checking for ogg_stream_reset_serialno in -lvorbisfile" >&5 +ac_lib_var=`echo vorbisfile'_'ogg_stream_reset_serialno | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-lvorbisfile -lvorbisenc -lvorbis -logg $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7103,17 +7122,17 @@ echo "$ac_t""yes" 1>&6 ac_safe=`echo "ogg/ogg.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ogg/ogg.h""... $ac_c" 1>&6 -echo "configure:7107: checking for ogg/ogg.h" >&5 +echo "configure:7126: checking for ogg/ogg.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7117: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7136: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7136,17 +7155,17 @@ ac_safe=`echo "vorbis/vorbisfile.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vorbis/vorbisfile.h""... $ac_c" 1>&6 -echo "configure:7140: checking for vorbis/vorbisfile.h" >&5 +echo "configure:7159: checking for vorbis/vorbisfile.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7150: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7169: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7169,17 +7188,17 @@ ac_safe=`echo "vorbis/vorbisenc.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vorbis/vorbisenc.h""... $ac_c" 1>&6 -echo "configure:7173: checking for vorbis/vorbisenc.h" >&5 +echo "configure:7192: checking for vorbis/vorbisenc.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7183: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7202: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7207,54 +7226,136 @@ fi if test $ov_tests = 3 ; then - GSL_LIBS="-lvorbisfile -lvorbisenc -lvorbis -logg $GSL_LIBS" - echo $ac_n "checking whether ov_read_float() takes 4 arguments""... $ac_c" 1>&6 -echo "configure:7213: checking whether ov_read_float() takes 4 arguments" >&5 - cat > conftest.$ac_ext < -int main() { -ov_read_float(0,0,0,0); -; return 0; } -EOF -if { (eval echo configure:7222: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - GSL_OV_READ_FLOAT_ARGS=4 ; echo "$ac_t""yes" 1>&6 -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - GSL_OV_READ_FLOAT_ARGS=3 ; echo "$ac_t""no" 1>&6 -fi -rm -f conftest* + OV_LIBS="-lvorbisfile -lvorbisenc -lvorbis -logg" else - echo "configure: warning: failed to detect Ogg/Vorbis library (>=1.0rc3) or headers" 1>&2 + echo "configure: warning: failed to detect Ogg/Vorbis library (>=1.0) or headers" 1>&2 + fi + + + succeeded=no + + if test -z "$PKG_CONFIG"; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:7242: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$PKG_CONFIG" in + /*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word" + break fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +if test -n "$PKG_CONFIG"; then + echo "$ac_t""$PKG_CONFIG" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + fi + + if test "$PKG_CONFIG" = "no" ; then + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + PKG_CONFIG_MIN_VERSION=0.9.0 + if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then + echo $ac_n "checking for mad >= 0.14.2""... $ac_c" 1>&6 +echo "configure:7286: checking for mad >= 0.14.2" >&5 + + if $PKG_CONFIG --exists "mad >= 0.14.2" ; then + echo "$ac_t""yes" 1>&6 + succeeded=yes + + echo $ac_n "checking MAD_CFLAGS""... $ac_c" 1>&6 +echo "configure:7293: checking MAD_CFLAGS" >&5 + MAD_CFLAGS=`$PKG_CONFIG --cflags "mad >= 0.14.2"` + echo "$ac_t""$MAD_CFLAGS" 1>&6 + + echo $ac_n "checking MAD_LIBS""... $ac_c" 1>&6 +echo "configure:7298: checking MAD_LIBS" >&5 + MAD_LIBS=`$PKG_CONFIG --libs "mad >= 0.14.2"` + echo "$ac_t""$MAD_LIBS" 1>&6 + else + MAD_CFLAGS="" + MAD_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + MAD_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mad >= 0.14.2"` + + fi + + + + else + echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." + echo "*** See http://www.freedesktop.org/software/pkgconfig" + fi + fi + + if test $succeeded = yes; then + GSL_HAVE_LIBMAD=1 + + else + GSL_HAVE_LIBMAD=0 + echo "configure: warning: failed to detect libmad (MPEG I-III audio decoder) or headers" 1>&2 + fi + - mad_detect=0 - echo $ac_n "checking for mad_synth_frame in -lmad""... $ac_c" 1>&6 -echo "configure:7239: checking for mad_synth_frame in -lmad" >&5 -ac_lib_var=`echo mad'_'mad_synth_frame | sed 'y%./+-%__p_%'` + + echo $ac_n "checking the required GSL-Loader library set""... $ac_c" 1>&6 +echo "configure:7330: checking the required GSL-Loader library set" >&5 + if echo " $OV_LIBS" | grep ".*-lvorbis.*" >/dev/null ; then + echo "$ac_t""complete" 1>&6 + else + echo "$ac_t""" 1>&6 + { echo "configure: error: Ogg/Vorbis is missing, but required" 1>&2; exit 1; } + fi + + if test -z "$LIBZ"; then + echo $ac_n "checking for gzsetparams in -lz""... $ac_c" 1>&6 +echo "configure:7340: checking for gzsetparams in -lz" >&5 +ac_lib_var=`echo z'_'gzsetparams | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" -LIBS="-lmad -lmad $LIBS" +LIBS="-lz $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7269,19 +7370,19 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_safe=`echo "mad.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for mad.h""... $ac_c" 1>&6 -echo "configure:7275: checking for mad.h" >&5 + ac_safe=`echo "zlib.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for zlib.h""... $ac_c" 1>&6 +echo "configure:7376: checking for zlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7285: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7386: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7297,40 +7398,39 @@ fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - mad_detect=1 + LIBZ='-lz' else echo "$ac_t""no" 1>&6 +LIBZ='' fi - else echo "$ac_t""no" 1>&6 -mad_detect=0 +LIBZ='' fi - if test $mad_detect = 1 ; then - GSL_LIBS="-lmad $GSL_LIBS" - GSL_HAVE_LIBMAD=1 - else - echo "configure: warning: failed to detect libmad (MPEG I-III audio decoder) or headers" 1>&2 - GSL_HAVE_LIBMAD=0 + fi + if test -z "$LIBZ"; then + { echo "configure: error: Compression library libz is missing, but required" 1>&2; exit 1; } fi - echo $ac_n "checking the required GSL-Loader library set""... $ac_c" 1>&6 -echo "configure:7322: checking the required GSL-Loader library set" >&5 - if echo $GSL_LIBS | grep ".*-lvorbis.*" >/dev/null ; then - echo "$ac_t""complete" 1>&6 - else - echo "$ac_t""" 1>&6 - { echo "configure: error: Ogg/Vorbis is missing, but required" 1>&2; exit 1; } + BSE_CFLAGS="$MAD_CFLAGS $SFI_CFLAGS" + BSE_LIBS="$OV_LIBS $MAD_LIBS $SFI_LIBS $LIBZ" + + + BSE_PC_REQUIRE= + if test $GSL_HAVE_LIBMAD == 1 ; then + BSE_PC_REQUIRE=mad fi - + BSE_PC_CFLAGS= + BSE_PC_LIBS="$OV_LIBS $LIBZ" + echo $ac_n "checking size of pthread_mutex_t""... $ac_c" 1>&6 -echo "configure:7334: checking size of pthread_mutex_t" >&5 +echo "configure:7434: checking size of pthread_mutex_t" >&5 if eval "test \"`echo '$''{'glib_cv_sizeof_pth_mutex_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7338,7 +7438,7 @@ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7354,7 +7454,7 @@ exit(0); } EOF -if { (eval echo configure:7358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then glib_cv_sizeof_pth_mutex_t=`cat conftestval` else @@ -7377,7 +7477,7 @@ SFI_SIZEOF_PTH_MUTEX_T="$glib_cv_sizeof_pth_mutex_t" echo $ac_n "checking size of pthread_cond_t""... $ac_c" 1>&6 -echo "configure:7381: checking size of pthread_cond_t" >&5 +echo "configure:7481: checking size of pthread_cond_t" >&5 if eval "test \"`echo '$''{'glib_cv_sizeof_pth_cond_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7385,7 +7485,7 @@ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7401,7 +7501,7 @@ exit(0); } EOF -if { (eval echo configure:7405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then glib_cv_sizeof_pth_cond_t=`cat conftestval` else @@ -7424,7 +7524,7 @@ SFI_SIZEOF_PTH_COND_T="$glib_cv_sizeof_pth_cond_t" echo $ac_n "checking size of intmax_t""... $ac_c" 1>&6 -echo "configure:7428: checking size of intmax_t" >&5 +echo "configure:7528: checking size of intmax_t" >&5 if eval "test \"`echo '$''{'glib_cv_sizeof_std_intmax_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7432,7 +7532,7 @@ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7448,7 +7548,7 @@ exit(0); } EOF -if { (eval echo configure:7452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then glib_cv_sizeof_std_intmax_t=`cat conftestval` else @@ -7472,9 +7572,9 @@ echo $ac_n "checking for pthread_mutexattr_settype()""... $ac_c" 1>&6 -echo "configure:7476: checking for pthread_mutexattr_settype()" >&5 +echo "configure:7576: checking for pthread_mutexattr_settype()" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7592: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* SFI_HAVE_MUTEXATTR_SETTYPE=1 echo "$ac_t""yes" 1>&6 @@ -7504,97 +7604,11 @@ rm -f conftest* - - if test -z "$LIBZ"; then - echo $ac_n "checking for gzsetparams in -lz""... $ac_c" 1>&6 -echo "configure:7511: checking for gzsetparams in -lz" >&5 -ac_lib_var=`echo z'_'gzsetparams | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lz $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_safe=`echo "zlib.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for zlib.h""... $ac_c" 1>&6 -echo "configure:7547: checking for zlib.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7557: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - LIBZ='-lz' -else - echo "$ac_t""no" 1>&6 -LIBZ='' -fi - -else - echo "$ac_t""no" 1>&6 -LIBZ='' -fi - - fi - if test -z "$LIBZ"; then - { echo "configure: error: Compression library libz is missing, but required" 1>&2; exit 1; } - fi - - - BSE_CFLAGS="$GSL_CFLAGS $SFI_CFLAGS" - BSE_LIBS="$GSL_LIBS $SFI_LIBS $LIBZ" - - - - # setup BSE install paths - bselibdir=\${libdir}/bse/v$BSE_MAJOR_VERSION.$BSE_MINOR_VERSION.$BSE_MICRO_VERSION + bselibdir=\${libdir}/bse/v$BSE_MAJOR_VERSION.$BSE_MINOR_VERSION.$BSE_MICRO_VERSION bseplugindir=$bselibdir/plugins + bseladspadir=${libdir}/ladspa + BSE_SHELL_CFLAGS="$BSE_CFLAGS" @@ -7605,7 +7619,7 @@ # Extract the first word of "guile-config", so it can be a program name with args. set dummy guile-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:7609: checking for $ac_word" >&5 +echo "configure:7623: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GUILE_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7694,17 +7708,17 @@ ac_safe=`echo "sys/soundcard.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/soundcard.h""... $ac_c" 1>&6 -echo "configure:7698: checking for sys/soundcard.h" >&5 +echo "configure:7712: checking for sys/soundcard.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7708: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7722: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7763,7 +7777,7 @@ result="$result""MIDI:none " fi echo $ac_n "checking for available sound driver/devices""... $ac_c" 1>&6 -echo "configure:7767: checking for available sound driver/devices" >&5 +echo "configure:7781: checking for available sound driver/devices" >&5 echo "$ac_t""$result" 1>&6 if test "x$bse_have_pcmdev" \!= "xyes"; then @@ -7783,7 +7797,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:7787: checking for $ac_word" >&5 +echo "configure:7801: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7827,19 +7841,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for $DEPENDANCIES""... $ac_c" 1>&6 -echo "configure:7831: checking for $DEPENDANCIES" >&5 +echo "configure:7845: checking for $DEPENDANCIES" >&5 if $PKG_CONFIG --exists "$DEPENDANCIES" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking GUI_CFLAGS""... $ac_c" 1>&6 -echo "configure:7838: checking GUI_CFLAGS" >&5 +echo "configure:7852: checking GUI_CFLAGS" >&5 GUI_CFLAGS=`$PKG_CONFIG --cflags "$DEPENDANCIES"` echo "$ac_t""$GUI_CFLAGS" 1>&6 echo $ac_n "checking GUI_LIBS""... $ac_c" 1>&6 -echo "configure:7843: checking GUI_LIBS" >&5 +echo "configure:7857: checking GUI_LIBS" >&5 GUI_LIBS=`$PKG_CONFIG --libs "$DEPENDANCIES"` echo "$ac_t""$GUI_LIBS" 1>&6 else @@ -7883,7 +7897,7 @@ LDFLAGS=$BEAST_LIBS have_xkb= echo $ac_n "checking for XkbOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:7887: checking for XkbOpenDisplay in -lX11" >&5 +echo "configure:7901: checking for XkbOpenDisplay in -lX11" >&5 ac_lib_var=`echo X11'_'XkbOpenDisplay | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7891,7 +7905,7 @@ ac_save_LIBS="$LIBS" LIBS="-lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7923,7 +7937,7 @@ fi echo $ac_n "checking for XkbGetKeyboard in -lX11""... $ac_c" 1>&6 -echo "configure:7927: checking for XkbGetKeyboard in -lX11" >&5 +echo "configure:7941: checking for XkbGetKeyboard in -lX11" >&5 ac_lib_var=`echo X11'_'XkbGetKeyboard | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7931,7 +7945,7 @@ ac_save_LIBS="$LIBS" LIBS="-lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7964,17 +7978,17 @@ ac_safe=`echo "X11/XKBlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/XKBlib.h""... $ac_c" 1>&6 -echo "configure:7968: checking for X11/XKBlib.h" >&5 +echo "configure:7982: checking for X11/XKBlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7978: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7992: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7997,17 +8011,17 @@ ac_safe=`echo "X11/extensions/XKBgeom.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/XKBgeom.h""... $ac_c" 1>&6 -echo "configure:8001: checking for X11/extensions/XKBgeom.h" >&5 +echo "configure:8015: checking for X11/extensions/XKBgeom.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8011: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8045,7 +8059,7 @@ LDFLAGS=$ldflags echo $ac_n "checking what the fallback keytable should be""... $ac_c" 1>&6 -echo "configure:8049: checking what the fallback keytable should be" >&5 +echo "configure:8063: checking what the fallback keytable should be" >&5 cat >> confdefs.h <&6 -echo "configure:8102: checking for $ac_word" >&5 +echo "configure:8116: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_XMLMAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8129,7 +8143,7 @@ REQUIRED_VERSION=4.3 echo $ac_n "checking for makeinfo version >= $REQUIRED_VERSION""... $ac_c" 1>&6 -echo "configure:8133: checking for makeinfo version >= $REQUIRED_VERSION" >&5 +echo "configure:8147: checking for makeinfo version >= $REQUIRED_VERSION" >&5 version=`$XMLMAKEINFO --version 2>/dev/null | head -n 1` eval `echo "$version:0:0:0:0:0:0" | sed -e 's/^[^0-9]*//' -e 's/[^0-9]\+/:/g' \ @@ -8167,7 +8181,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8171: checking for $ac_word" >&5 +echo "configure:8185: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_XSLTPROC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8201,7 +8215,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8205: checking for $ac_word" >&5 +echo "configure:8219: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_GROFF'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8235,7 +8249,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8239: checking for $ac_word" >&5 +echo "configure:8253: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_SOELIM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8413,6 +8427,8 @@ docs/generated/Makefile test/Makefile bse/bseconfig.h +sfi.pc +bse.pc PKG_config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF diff -ruN beast-0.5.0/configure.in beast-0.5.1/configure.in --- beast-0.5.0/configure.in 2003-03-13 18:44:50.000000000 +0100 +++ beast-0.5.1/configure.in 2003-04-13 17:26:43.000000000 +0200 @@ -16,7 +16,7 @@ AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl BSE_MAJOR_VERSION=0 BSE_MINOR_VERSION=5 -BSE_MICRO_VERSION=0 +BSE_MICRO_VERSION=1 BSE_INTERFACE_AGE=0 BSE_BINARY_AGE=0 AC_DIVERT_POP()dnl @@ -119,58 +119,67 @@ AC_SUBST(SFI_CFLAGS) AC_SUBST(SFI_LIBS) ]) -AC_DEFUN(AC_GSL_REQUIREMENTS, +AC_DEFUN(AC_BSE_REQUIREMENTS, [ - GSL_CFLAGS= - GSL_LIBS= - dnl === Ogg/Vorbis check === + OV_LIBS= ov_tests=0 - # check for ogg_stream_reset_serialno() to identify rc4 which changes ov_read_float() - GSL_OV_READ_FLOAT_ARGS=0 - AC_CHECK_LIB(vorbisfile, ov_read_float, + AC_CHECK_LIB(vorbisfile, ogg_stream_reset_serialno, [AC_CHECK_HEADER(ogg/ogg.h, ov_tests=`expr $ov_tests + 1`)] [AC_CHECK_HEADER(vorbis/vorbisfile.h, ov_tests=`expr $ov_tests + 1`)] [AC_CHECK_HEADER(vorbis/vorbisenc.h, ov_tests=`expr $ov_tests + 1`)] , ov_tests=0, -lvorbisenc -lvorbis -logg) if test $ov_tests = 3 ; then - GSL_LIBS="-lvorbisfile -lvorbisenc -lvorbis -logg $GSL_LIBS" - AC_MSG_CHECKING([whether ov_read_float() takes 4 arguments]) - AC_TRY_COMPILE([#include ], [ov_read_float(0,0,0,0);], - GSL_OV_READ_FLOAT_ARGS=4 ; AC_MSG_RESULT(yes), - GSL_OV_READ_FLOAT_ARGS=3 ; AC_MSG_RESULT(no)) + OV_LIBS="-lvorbisfile -lvorbisenc -lvorbis -logg" else - AC_MSG_WARN([failed to detect Ogg/Vorbis library (>=1.0rc3) or headers]) + AC_MSG_WARN([failed to detect Ogg/Vorbis library (>=1.0) or headers]) fi - AC_SUBST(GSL_OV_READ_FLOAT_ARGS) dnl === libmad MPEG decoder check === - mad_detect=0 - AC_CHECK_LIB(mad, mad_synth_frame, - [AC_CHECK_HEADER(mad.h, mad_detect=1)] - , - mad_detect=0, -lmad) - if test $mad_detect = 1 ; then - GSL_LIBS="-lmad $GSL_LIBS" - GSL_HAVE_LIBMAD=1 - else - AC_MSG_WARN([failed to detect libmad (MPEG I-III audio decoder) or headers]) - GSL_HAVE_LIBMAD=0 - fi + PKG_CHECK_MODULES(MAD, mad >= 0.14.2, + GSL_HAVE_LIBMAD=1 + , + GSL_HAVE_LIBMAD=0 + AC_MSG_WARN([failed to detect libmad (MPEG I-III audio decoder) or headers]) + ) AC_SUBST(GSL_HAVE_LIBMAD) - dnl === Check library requirements === + dnl === check codec requirements === AC_MSG_CHECKING([the required GSL-Loader library set]) - if echo $GSL_LIBS | grep ".*-lvorbis.*" >/dev/null ; then + if echo " $OV_LIBS" | grep ".*-lvorbis.*" >/dev/null ; then AC_MSG_RESULT([complete]) else AC_MSG_RESULT([]) AC_MSG_ERROR([Ogg/Vorbis is missing, but required]) fi - AC_SUBST(GSL_CFLAGS) - AC_SUBST(GSL_LIBS) + dnl == require libz === + if test -z "$LIBZ"; then + AC_CHECK_LIB(z, gzsetparams, + [AC_CHECK_HEADER(zlib.h, LIBZ='-lz', LIBZ='')], + LIBZ='') + fi + if test -z "$LIBZ"; then + AC_MSG_ERROR([Compression library libz is missing, but required]) + fi + AC_SUBST(LIBZ) + + dnl === complete CFLAGS/LIBS setup === + BSE_CFLAGS="$MAD_CFLAGS $SFI_CFLAGS" + BSE_LIBS="$OV_LIBS $MAD_LIBS $SFI_LIBS $LIBZ" + AC_SUBST(BSE_CFLAGS) + AC_SUBST(BSE_LIBS) + dnl --- figure stuff for bse.pc --- + BSE_PC_REQUIRE= + if test $GSL_HAVE_LIBMAD == 1 ; then + BSE_PC_REQUIRE=mad + fi + BSE_PC_CFLAGS= + BSE_PC_LIBS="$OV_LIBS $LIBZ" + AC_SUBST(BSE_PC_REQUIRE) + AC_SUBST(BSE_PC_CFLAGS) + AC_SUBST(BSE_PC_LIBS) dnl === sizeof types === GLIB_SIZEOF([#include ], pthread_mutex_t, pth_mutex_t) @@ -200,30 +209,13 @@ AC_MSG_RESULT(no) ) AC_SUBST(SFI_HAVE_MUTEXATTR_SETTYPE) -]) -AC_DEFUN(AC_BSE_REQUIREMENTS, -[ - dnl Require libz - if test -z "$LIBZ"; then - AC_CHECK_LIB(z, gzsetparams, - [AC_CHECK_HEADER(zlib.h, LIBZ='-lz', LIBZ='')], - LIBZ='') - fi - if test -z "$LIBZ"; then - AC_MSG_ERROR([Compression library libz is missing, but required]) - fi - AC_SUBST(LIBZ) - dnl We need SFI and GSL - BSE_CFLAGS="$GSL_CFLAGS $SFI_CFLAGS" - BSE_LIBS="$GSL_LIBS $SFI_LIBS $LIBZ" - AC_SUBST(BSE_CFLAGS) - AC_SUBST(BSE_LIBS) - - # setup BSE install paths + dnl === setup BSE install paths === bselibdir=\${libdir}/bse/v$BSE_MAJOR_VERSION.$BSE_MINOR_VERSION.$BSE_MICRO_VERSION bseplugindir=$bselibdir/plugins AC_SUBST(bseplugindir) + bseladspadir=${libdir}/ladspa + AC_SUBST(bseladspadir) ]) AC_DEFUN(AC_BSE_SHELL_REQUIREMENTS, [ @@ -453,7 +445,6 @@ # Check requirement sets AC_SFI_REQUIREMENTS -AC_GSL_REQUIREMENTS AC_BSE_REQUIREMENTS AC_BSE_SHELL_REQUIREMENTS AC_BSE_SNDDEV_CHECK @@ -491,4 +482,6 @@ docs/generated/Makefile test/Makefile bse/bseconfig.h +sfi.pc +bse.pc ]) diff -ruN beast-0.5.0/docs/Makefile.in beast-0.5.1/docs/Makefile.in --- beast-0.5.0/docs/Makefile.in 2003-03-13 22:09:50.000000000 +0100 +++ beast-0.5.1/docs/Makefile.in 2003-04-14 00:12:36.000000000 +0200 @@ -69,6 +69,9 @@ BSE_MAJOR_VERSION = @BSE_MAJOR_VERSION@ BSE_MICRO_VERSION = @BSE_MICRO_VERSION@ BSE_MINOR_VERSION = @BSE_MINOR_VERSION@ +BSE_PC_CFLAGS = @BSE_PC_CFLAGS@ +BSE_PC_LIBS = @BSE_PC_LIBS@ +BSE_PC_REQUIRE = @BSE_PC_REQUIRE@ BSE_SHELL_CFLAGS = @BSE_SHELL_CFLAGS@ BSE_SHELL_LIBS = @BSE_SHELL_LIBS@ BSE_VERSION = @BSE_VERSION@ @@ -86,10 +89,7 @@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GROFF = @GROFF@ -GSL_CFLAGS = @GSL_CFLAGS@ GSL_HAVE_LIBMAD = @GSL_HAVE_LIBMAD@ -GSL_LIBS = @GSL_LIBS@ -GSL_OV_READ_FLOAT_ARGS = @GSL_OV_READ_FLOAT_ARGS@ GSL_SIZEOF_STD_INTMAX_T = @GSL_SIZEOF_STD_INTMAX_T@ GXK_CFLAGS = @GXK_CFLAGS@ GXK_LIBS = @GXK_LIBS@ @@ -125,6 +125,7 @@ beastdocsdir = @beastdocsdir@ beastimagesdir = @beastimagesdir@ beastsampledatadir = @beastsampledatadir@ +bseladspadir = @bseladspadir@ bseplugindir = @bseplugindir@ bsescriptdir = @bsescriptdir@ diff -ruN beast-0.5.0/docs/faq.texi beast-0.5.1/docs/faq.texi --- beast-0.5.0/docs/faq.texi 2003-03-10 05:40:38.000000000 +0100 +++ beast-0.5.1/docs/faq.texi 2003-04-13 17:21:59.000000000 +0200 @@ -36,8 +36,7 @@ @itemize @item WWW: @uref{http://beast.gtk.org} @item FTP: @uref{ftp://beast.gtk.org/pub/beast} -@item Mailing List: @uref{mailto://beast@@beast.gtk.org}. -Send subscription requests to @uref{mailto://timj@@beast.gtk.org}. +@item Mailing List: @uref{http://mail.gnome.org/mailman/listinfo/beast/}. @end itemize @section Why do I get "Cannot access memory at address 0x706f6e6d" when running @beast in gdb? @@ -99,13 +98,13 @@ appendix used to store wave data doesn't get corrupted. @* The recommended mime type image for @bse files looks like this: -@image{beast-mime,,,BSE-Mime-Logo,png} +@image{bse-mime,,,BSE-Mime-Logo,png} @section What are the minimum hardware requirements for @beast{}? This depends a lot on how you utilise @beast{}. If you simply want to create synthesis networks or very simple songs, any Pentium II ought to suffice. If you want to lay down a few tracks with effects you may need -something more modern: a Pentium III 500MHz is recommended. +something more modern like a CPU with 1 GHz or higher core frequency. @bye diff -ruN beast-0.5.0/docs/generated/Makefile.am beast-0.5.1/docs/generated/Makefile.am --- beast-0.5.0/docs/generated/Makefile.am 2003-03-10 20:23:25.000000000 +0100 +++ beast-0.5.1/docs/generated/Makefile.am 2003-04-01 05:19:50.000000000 +0200 @@ -65,7 +65,7 @@ # sfi_refsrc_globs=$(top_srcdir)/sfi/sfi*.[hc] bse_refsrc_globs=$(top_srcdir)/bse/bse*.[hc] $(top_srcdir)/bse/gsl*.[hc] -gxk_refsrc_globs=$(top_srcdir)/beast-gtk/gxk/gxk*.[hc] +gxk_refsrc_globs=$(top_srcdir)/beast-gtk/bstutils.[hc] $(top_srcdir)/beast-gtk/gxk/gxk*.[hc] AUTODOC=$(top_builddir)/bse/bseautodoc SCANDOCS=$(srcdir)/scandocs.pl sfi.3.texi: $(sfi_refsrc_globs) $(SCANDOCS) $(top_builddir)/config.status diff -ruN beast-0.5.0/docs/generated/Makefile.in beast-0.5.1/docs/generated/Makefile.in --- beast-0.5.0/docs/generated/Makefile.in 2003-03-13 22:09:51.000000000 +0100 +++ beast-0.5.1/docs/generated/Makefile.in 2003-04-14 00:12:37.000000000 +0200 @@ -73,6 +73,9 @@ BSE_MAJOR_VERSION = @BSE_MAJOR_VERSION@ BSE_MICRO_VERSION = @BSE_MICRO_VERSION@ BSE_MINOR_VERSION = @BSE_MINOR_VERSION@ +BSE_PC_CFLAGS = @BSE_PC_CFLAGS@ +BSE_PC_LIBS = @BSE_PC_LIBS@ +BSE_PC_REQUIRE = @BSE_PC_REQUIRE@ BSE_SHELL_CFLAGS = @BSE_SHELL_CFLAGS@ BSE_SHELL_LIBS = @BSE_SHELL_LIBS@ BSE_VERSION = @BSE_VERSION@ @@ -90,10 +93,7 @@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GROFF = @GROFF@ -GSL_CFLAGS = @GSL_CFLAGS@ GSL_HAVE_LIBMAD = @GSL_HAVE_LIBMAD@ -GSL_LIBS = @GSL_LIBS@ -GSL_OV_READ_FLOAT_ARGS = @GSL_OV_READ_FLOAT_ARGS@ GSL_SIZEOF_STD_INTMAX_T = @GSL_SIZEOF_STD_INTMAX_T@ GXK_CFLAGS = @GXK_CFLAGS@ GXK_LIBS = @GXK_LIBS@ @@ -129,6 +129,7 @@ beastdocsdir = @beastdocsdir@ beastimagesdir = @beastimagesdir@ beastsampledatadir = @beastsampledatadir@ +bseladspadir = @bseladspadir@ bseplugindir = @bseplugindir@ bsescriptdir = @bsescriptdir@ @@ -158,7 +159,7 @@ # sfi_refsrc_globs = $(top_srcdir)/sfi/sfi*.[hc] bse_refsrc_globs = $(top_srcdir)/bse/bse*.[hc] $(top_srcdir)/bse/gsl*.[hc] -gxk_refsrc_globs = $(top_srcdir)/beast-gtk/gxk/gxk*.[hc] +gxk_refsrc_globs = $(top_srcdir)/beast-gtk/bstutils.[hc] $(top_srcdir)/beast-gtk/gxk/gxk*.[hc] AUTODOC = $(top_builddir)/bse/bseautodoc SCANDOCS = $(srcdir)/scandocs.pl temp_ref_docu = sfi.3.texi bse.3.texi beast-gxk.3.texi bse-procs.3.texi bse-structs.3.texi diff -ruN beast-0.5.0/docs/generated/beast-gxk.3 beast-0.5.1/docs/generated/beast-gxk.3 --- beast-0.5.0/docs/generated/beast-gxk.3 2003-03-13 21:47:30.000000000 +0100 +++ beast-0.5.1/docs/generated/beast-gxk.3 2003-04-14 00:09:30.000000000 +0200 @@ -139,246 +139,354 @@ . .\" xref definitions .lf 1 beast-gxk.3.xrf -.ds 3-sect .nr g_object_get_long +.ds 3-sect .nr bst_gmask_container_create .ds 3 3 -.ds 3-sect .nr g_object_set_long -.ds 3 3 -.ds 3-sect .nr gxk_cell_editable_canceled -.ds 3 3 -.ds 3-sect .nr gxk_cell_editable_focus_out_handler -.ds 3 3 -.ds 3-sect .nr gxk_cell_renderer_popup_get_type -.ds 3 3 -.ds 3-sect .nr gxk_color_alloc -.ds 3 3 -.ds 4-sect .nr gxk_dialog_action* +.ds 4-sect .nr bst_gmask_foreach .ds 4 4 -.ds 4-sect .nr gxk_dialog_add_flags +.ds 4-sect .nr bst_gmask_form .ds 4 4 -.ds 4-sect .nr gxk_dialog_clear_flags +.ds 4-sect .nr bst_gmask_get_action .ds 4 4 -.ds 4-sect .nr gxk_dialog_get_child +.ds 4-sect .nr bst_gmask_get_ahead .ds 4 4 -.ds 4-sect .nr gxk_dialog_get_status_window +.ds 4-sect .nr bst_gmask_get_atail .ds 4 4 -.ds 4-sect .nr gxk_dialog_new -.ds 4 4 -.ds 5-sect .nr gxk_dialog_remove_actions -.ds 5 5 -.ds 5-sect .nr gxk_dialog_set_child -.ds 5 5 -.ds 5-sect .nr gxk_dialog_set_title -.ds 5 5 -.ds 5-sect .nr gxk_idle_show_widget -.ds 5 5 -.ds 5-sect .nr gxk_led_new +.ds 4-sect .nr bst_gmask_get_aux1 +.ds 4 5 +.ds 5-sect .nr bst_gmask_get_aux2 .ds 5 5 -.ds 5-sect .nr gxk_led_set_color +.ds 5-sect .nr bst_gmask_get_aux3 .ds 5 5 -.ds 5-sect .nr gxk_notebook_append +.ds 5-sect .nr bst_gmask_get_prompt .ds 5 5 -.ds 5-sect .nr gxk_notebook_set_current_page_widget +.ds 5-sect .nr bst_gmask_pack .ds 5 5 -.ds 5-sect .nr gxk_object_derive +.ds 5-sect .nr bst_gmask_quick .ds 5 5 -.ds 5-sect .nr gxk_polygon_new -.ds 5 6 -.ds 6-sect .nr gxk_polygon_set_arcs +.ds 6-sect .nr bst_gmask_set_ahead .ds 6 6 -.ds 6-sect .nr gxk_polygon_set_graph +.ds 6-sect .nr bst_gmask_set_atail .ds 6 6 -.ds 6-sect .nr gxk_polygon_set_length +.ds 6-sect .nr bst_gmask_set_aux1 .ds 6 6 -.ds 6-sect .nr gxk_polygon_set_lines +.ds 6-sect .nr bst_gmask_set_aux2 .ds 6 6 -.ds 6-sect .nr gxk_proxy_editable_get_type +.ds 6-sect .nr bst_gmask_set_aux3 .ds 6 6 -.ds 6-sect .nr gxk_proxy_editable_set_cell_editable +.ds 6-sect .nr bst_gmask_set_column .ds 6 6 -.ds 6-sect .nr gxk_scroll_text_advance +.ds 6-sect .nr bst_gmask_set_prompt .ds 6 6 -.ds 7-sect .nr gxk_scroll_text_append +.ds 6-sect .nr bst_gmask_set_tip +.ds 6 6 +.ds 6-sect .nr g_object_get_double +.ds 6 6 +.ds 7-sect .nr g_object_get_long +.ds 7 7 +.ds 7-sect .nr g_object_set_double .ds 7 7 -.ds 7-sect .nr gxk_scroll_text_append_file +.ds 7-sect .nr g_object_set_long .ds 7 7 -.ds 7-sect .nr gxk_scroll_text_append_file_tsm +.ds 7-sect .nr gnome_canvas_set_zoom .ds 7 7 -.ds 7-sect .nr gxk_scroll_text_append_tsm +.ds 7-sect .nr gnome_canvas_text_set_zoom_size .ds 7 7 -.ds 7-sect .nr gxk_scroll_text_aprintf +.ds 7-sect .nr gtk_notebook_current_widget .ds 7 7 -.ds 8-sect .nr gxk_scroll_text_clear +.ds 7-sect .nr gxk_cell_editable_canceled +.ds 7 8 +.ds 8-sect .nr gxk_cell_editable_focus_out_handler +.ds 8 8 +.ds 8-sect .nr gxk_cell_renderer_popup_get_type +.ds 8 8 +.ds 8-sect .nr gxk_color_alloc .ds 8 8 -.ds 8-sect .nr gxk_scroll_text_create +.ds 8-sect .nr gxk_dialog_action* .ds 8 8 -.ds 8-sect .nr gxk_scroll_text_display +.ds 8-sect .nr gxk_dialog_add_flags .ds 8 8 -.ds 8-sect .nr gxk_scroll_text_enter +.ds 8-sect .nr gxk_dialog_clear_flags .ds 8 8 -.ds 8-sect .nr gxk_scroll_text_get_text_view +.ds 8-sect .nr gxk_dialog_get_child .ds 8 8 -.ds 9-sect .nr gxk_scroll_text_pop_indent +.ds 9-sect .nr gxk_dialog_get_status_window .ds 9 9 -.ds 9-sect .nr gxk_scroll_text_push_indent +.ds 9-sect .nr gxk_dialog_new .ds 9 9 -.ds 9-sect .nr gxk_scroll_text_rewind +.ds 9-sect .nr gxk_dialog_remove_actions .ds 9 9 -.ds 9-sect .nr gxk_scroll_text_set +.ds 9-sect .nr gxk_dialog_set_child .ds 9 9 -.ds 9-sect .nr gxk_scroll_text_set_index +.ds 9-sect .nr gxk_dialog_set_title .ds 9 9 -.ds 9-sect .nr gxk_scroll_text_set_tsm +.ds 9-sect .nr gxk_file_selection_heal .ds 9 9 -.ds 10-sect .nr gxk_signal_handler_pending +.ds 9-sect .nr gxk_idle_show_widget +.ds 9 10 +.ds 10-sect .nr gxk_item_factory_get_item .ds 10 10 -.ds 10-sect .nr gxk_size_group +.ds 10-sect .nr gxk_item_factory_get_widget .ds 10 10 -.ds 10-sect .nr gxk_size_height +.ds 10-sect .nr gxk_led_new .ds 10 10 -.ds 10-sect .nr gxk_size_width +.ds 10-sect .nr gxk_led_set_color .ds 10 10 -.ds 10-sect .nr gxk_status_bar_create +.ds 10-sect .nr gxk_notebook_append .ds 10 10 -.ds 10-sect .nr gxk_status_clear +.ds 10-sect .nr gxk_notebook_set_current_page_widget .ds 10 10 -.ds 10-sect .nr gxk_status_errnoprintf +.ds 10-sect .nr gxk_object_derive .ds 10 10 -.ds 10-sect .nr gxk_status_printf -.ds 10 11 -.ds 11-sect .nr gxk_status_set +.ds 10-sect .nr gxk_polygon_new +.ds 10 10 +.ds 11-sect .nr gxk_polygon_set_arcs .ds 11 11 -.ds 11-sect .nr gxk_status_window_pop +.ds 11-sect .nr gxk_polygon_set_graph .ds 11 11 -.ds 11-sect .nr gxk_status_window_push +.ds 11-sect .nr gxk_polygon_set_length .ds 11 11 -.ds 11-sect .nr gxk_stock_button +.ds 11-sect .nr gxk_polygon_set_lines .ds 11 11 -.ds 11-sect .nr gxk_stock_button_child +.ds 11-sect .nr gxk_proxy_editable_get_type .ds 11 11 -.ds 11-sect .nr gxk_stock_fallback_pixbuf +.ds 11-sect .nr gxk_proxy_editable_set_cell_editable .ds 11 11 -.ds 12-sect .nr gxk_stock_icon_window -.ds 12 12 -.ds 12-sect .nr gxk_stock_image -.ds 12 12 -.ds 12-sect .nr gxk_stock_register_action -.ds 12 12 -.ds 12-sect .nr gxk_stock_register_actions +.ds 11-sect .nr gxk_scroll_text_advance +.ds 11 11 +.ds 11-sect .nr gxk_scroll_text_append +.ds 11 12 +.ds 12-sect .nr gxk_scroll_text_append_file .ds 12 12 -.ds 12-sect .nr gxk_stock_register_icon +.ds 12-sect .nr gxk_scroll_text_append_file_tsm .ds 12 12 -.ds 12-sect .nr gxk_stock_register_icons +.ds 12-sect .nr gxk_scroll_text_append_tsm .ds 12 12 -.ds 12-sect .nr gxk_text_view_cursor_to_end +.ds 12-sect .nr gxk_scroll_text_aprintf .ds 12 12 -.ds 13-sect .nr gxk_text_view_cursor_to_start +.ds 12-sect .nr gxk_scroll_text_clear +.ds 12 13 +.ds 13-sect .nr gxk_scroll_text_create .ds 13 13 -.ds 13-sect .nr gxk_text_view_enter_browse_mode +.ds 13-sect .nr gxk_scroll_text_display .ds 13 13 -.ds 13-sect .nr gxk_text_view_leave_browse_mode +.ds 13-sect .nr gxk_scroll_text_enter .ds 13 13 -.ds 13-sect .nr gxk_toolbar_append +.ds 13-sect .nr gxk_scroll_text_get_text_view .ds 13 13 -.ds 14-sect .nr gxk_toolbar_append_choice +.ds 14-sect .nr gxk_scroll_text_pop_indent +.ds 14 14 +.ds 14-sect .nr gxk_scroll_text_push_indent +.ds 14 14 +.ds 14-sect .nr gxk_scroll_text_rewind .ds 14 14 -.ds 14-sect .nr gxk_toolbar_append_stock +.ds 14-sect .nr gxk_scroll_text_set .ds 14 14 -.ds 14-sect .nr gxk_toolbar_choice_add +.ds 14-sect .nr gxk_scroll_text_set_index .ds 14 14 -.ds 15-sect .nr gxk_toolbar_choice_is_item +.ds 14-sect .nr gxk_scroll_text_set_tsm +.ds 14 14 +.ds 15-sect .nr gxk_signal_handler_pending .ds 15 15 -.ds 15-sect .nr gxk_toolbar_choice_is_selected +.ds 15-sect .nr gxk_size_group .ds 15 15 -.ds 15-sect .nr gxk_toolbar_choice_select +.ds 15-sect .nr gxk_size_height .ds 15 15 -.ds 15-sect .nr gxk_toolbar_choice_set +.ds 15-sect .nr gxk_size_width .ds 15 15 -.ds 15-sect .nr gxk_toolbar_new +.ds 15-sect .nr gxk_status_bar_create .ds 15 15 -.ds 15-sect .nr gxk_toplevel_activate_default +.ds 15-sect .nr gxk_status_clear .ds 15 15 -.ds 16-sect .nr gxk_toplevel_delete -.ds 16 16 -.ds 16-sect .nr gxk_toplevel_hide -.ds 16 16 -.ds 16-sect .nr gxk_tree_path_prev +.ds 15-sect .nr gxk_status_errnoprintf +.ds 15 15 +.ds 15-sect .nr gxk_status_printf +.ds 15 16 +.ds 16-sect .nr gxk_status_set .ds 16 16 -.ds 16-sect .nr gxk_tree_selection_force_browse +.ds 16-sect .nr gxk_status_window_pop .ds 16 16 -.ds 16-sect .nr gxk_tree_selection_select_ipath +.ds 16-sect .nr gxk_status_window_push .ds 16 16 -.ds 16-sect .nr gxk_tree_selection_select_spath +.ds 16-sect .nr gxk_stock_button .ds 16 16 -.ds 16-sect .nr gxk_tree_selection_unselect_ipath +.ds 16-sect .nr gxk_stock_button_child .ds 16 16 -.ds 16-sect .nr gxk_tree_selection_unselect_spath +.ds 16-sect .nr gxk_stock_fallback_pixbuf .ds 16 16 -.ds 17-sect .nr gxk_tree_spath_index0 +.ds 17-sect .nr gxk_stock_icon_window .ds 17 17 -.ds 17-sect .nr gxk_tree_view_add_column +.ds 17-sect .nr gxk_stock_image .ds 17 17 -.ds 17-sect .nr gxk_tree_view_add_popup_column +.ds 17-sect .nr gxk_stock_register_action .ds 17 17 -.ds 17-sect .nr gxk_tree_view_add_text_column +.ds 17-sect .nr gxk_stock_register_actions .ds 17 17 -.ds 18-sect .nr gxk_tree_view_add_toggle_column -.ds 18 18 -.ds 18-sect .nr gxk_tree_view_append_text_columns +.ds 17-sect .nr gxk_stock_register_icon +.ds 17 17 +.ds 17-sect .nr gxk_stock_register_icons +.ds 17 17 +.ds 17-sect .nr gxk_text_view_cursor_to_end +.ds 17 17 +.ds 18-sect .nr gxk_text_view_cursor_to_start .ds 18 18 -.ds 18-sect .nr gxk_tree_view_column_set_tip_title +.ds 18-sect .nr gxk_text_view_enter_browse_mode .ds 18 18 -.ds 18-sect .nr gxk_tree_view_focus_row +.ds 18-sect .nr gxk_text_view_leave_browse_mode .ds 18 18 -.ds 18-sect .nr gxk_tree_view_get_bin_window_pos +.ds 18-sect .nr gxk_toolbar_append .ds 18 18 -.ds 19-sect .nr gxk_tree_view_get_row_area -.ds 19 19 -.ds 19-sect .nr gxk_tree_view_get_row_from_coord -.ds 19 19 -.ds 19-sect .nr gxk_tree_view_get_selected_row -.ds 19 19 -.ds 19-sect .nr gxk_tree_view_is_row_selected +.ds 19-sect .nr gxk_toolbar_append_choice .ds 19 19 -.ds 19-sect .nr gxk_type_register_generated +.ds 19-sect .nr gxk_toolbar_append_stock .ds 19 19 -.ds 19-sect .nr gxk_widget_activate_accel_group +.ds 19-sect .nr gxk_toolbar_choice_add .ds 19 19 -.ds 20-sect .nr gxk_widget_force_bg_clear +.ds 20-sect .nr gxk_toolbar_choice_is_item .ds 20 20 -.ds 20-sect .nr gxk_widget_make_insensitive +.ds 20-sect .nr gxk_toolbar_choice_is_selected .ds 20 20 -.ds 20-sect .nr gxk_widget_make_sensitive +.ds 20-sect .nr gxk_toolbar_choice_select .ds 20 20 -.ds 20-sect .nr gxk_widget_modify_as_title +.ds 20-sect .nr gxk_toolbar_choice_set .ds 20 20 -.ds 20-sect .nr gxk_widget_modify_base_as_bg +.ds 20-sect .nr gxk_toolbar_new .ds 20 20 -.ds 20-sect .nr gxk_widget_modify_bg_as_base +.ds 20-sect .nr gxk_toplevel_activate_default .ds 20 20 -.ds 20-sect .nr gxk_widget_showraise -.ds 20 20 -.ds 20-sect .nr gxk_window_process_next -.ds 20 20 -.ds 20-sect .nr gxk_window_set_cursor_type -.ds 20 21 +.ds 21-sect .nr gxk_toplevel_delete +.ds 21 21 +.ds 21-sect .nr gxk_toplevel_hide +.ds 21 21 +.ds 21-sect .nr gxk_tree_path_prev +.ds 21 21 +.ds 21-sect .nr gxk_tree_selection_force_browse +.ds 21 21 +.ds 21-sect .nr gxk_tree_selection_select_ipath +.ds 21 21 +.ds 21-sect .nr gxk_tree_selection_select_spath +.ds 21 21 +.ds 21-sect .nr gxk_tree_selection_unselect_ipath +.ds 21 21 +.ds 21-sect .nr gxk_tree_selection_unselect_spath +.ds 21 21 +.ds 22-sect .nr gxk_tree_spath_index0 +.ds 22 22 +.ds 22-sect .nr gxk_tree_view_add_column +.ds 22 22 +.ds 22-sect .nr gxk_tree_view_add_popup_column +.ds 22 22 +.ds 22-sect .nr gxk_tree_view_add_text_column +.ds 22 22 +.ds 23-sect .nr gxk_tree_view_add_toggle_column +.ds 23 23 +.ds 23-sect .nr gxk_tree_view_append_text_columns +.ds 23 23 +.ds 23-sect .nr gxk_tree_view_column_set_tip_title +.ds 23 23 +.ds 23-sect .nr gxk_tree_view_focus_row +.ds 23 23 +.ds 23-sect .nr gxk_tree_view_get_bin_window_pos +.ds 23 23 +.ds 24-sect .nr gxk_tree_view_get_row_area +.ds 24 24 +.ds 24-sect .nr gxk_tree_view_get_row_from_coord +.ds 24 24 +.ds 24-sect .nr gxk_tree_view_get_selected_row +.ds 24 24 +.ds 24-sect .nr gxk_tree_view_is_row_selected +.ds 24 24 +.ds 24-sect .nr gxk_type_register_generated +.ds 24 24 +.ds 24-sect .nr gxk_widget_activate_accel_group +.ds 24 24 +.ds 25-sect .nr gxk_widget_force_bg_clear +.ds 25 25 +.ds 25-sect .nr gxk_widget_make_insensitive +.ds 25 25 +.ds 25-sect .nr gxk_widget_make_sensitive +.ds 25 25 +.ds 25-sect .nr gxk_widget_modify_as_title +.ds 25 25 +.ds 25-sect .nr gxk_widget_modify_base_as_bg +.ds 25 25 +.ds 25-sect .nr gxk_widget_modify_bg_as_base +.ds 25 25 +.ds 25-sect .nr gxk_widget_proxy_requisition +.ds 25 25 +.ds 25-sect .nr gxk_widget_showraise +.ds 25 25 +.ds 25-sect .nr gxk_window_process_next +.ds 25 26 +.ds 26-sect .nr gxk_window_set_cursor_type +.ds 26 26 .lf 140 - . .\" Start the document -.TH "GXK-Functions" "3" "13 Mar 2003" "BEAST-0.5.0" "BEAST-0.5.0" +.TH "GXK-Functions" "3" "14 Apr 2003" "BEAST-0.5.1" "BEAST-0.5.1" .H1 NAME .PP GXK-Functions - Gtk+ Extension Kit Function Reference .PP -\fIDocument Revised:\fP Thu Mar 13 21:47:17 CET 2003 +\fIDocument Revised:\fP Sun Apr 13 22:19:14 CEST 2003 .br .H1 SYNOPSIS .PP .na +\fB\f6bst_gmask_container_create\fP\f1(\fI\f7border_width\fP\f1, \fI\f7dislodge_columns\fP\f1); +.br +\fB\f6bst_gmask_foreach\fP\f1(\fI\f7mask\fP\f1, \fI\f7func\fP\f1, \fI\f7data\fP\f1); +.br +\fB\f6bst_gmask_form\fP\f1(\fI\f7gmask_container\fP\f1, \fI\f7action\fP\f1, \fI\f7gpack\fP\f1); +.br +\fB\f6bst_gmask_get_action\fP\f1(\fI\f7mask\fP\f1); +.br +\fB\f6bst_gmask_get_ahead\fP\f1(\fI\f7mask\fP\f1); +.br +\fB\f6bst_gmask_get_atail\fP\f1(\fI\f7mask\fP\f1); +.br +\fB\f6bst_gmask_get_aux1\fP\f1(\fI\f7mask\fP\f1); +.br +\fB\f6bst_gmask_get_aux2\fP\f1(\fI\f7mask\fP\f1); +.br +\fB\f6bst_gmask_get_aux3\fP\f1(\fI\f7mask\fP\f1); +.br +\fB\f6bst_gmask_get_prompt\fP\f1(\fI\f7mask\fP\f1); +.br +\fB\f6bst_gmask_pack\fP\f1(\fI\f7mask\fP\f1); +.br +\fB\f6bst_gmask_quick\fP\f1(\fI\f7gmask_container\fP\f1, \fI\f7column\fP\f1, \fI\f7prompt\fP\f1, \fI\f7action\fP\f1, \fI\f7tip_text\fP\f1); +.br +\fB\f6bst_gmask_set_ahead\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.br +\fB\f6bst_gmask_set_atail\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.br +\fB\f6bst_gmask_set_aux1\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.br +\fB\f6bst_gmask_set_aux2\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.br +\fB\f6bst_gmask_set_aux3\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.br +\fB\f6bst_gmask_set_column\fP\f1(\fI\f7mask\fP\f1, \fI\f7column\fP\f1); +.br +\fB\f6bst_gmask_set_prompt\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.br +\fB\f6bst_gmask_set_tip\fP\f1(\fI\f7mask\fP\f1, \fI\f7tip_text\fP\f1); +.br +\fB\f6g_object_get_double\fP\f1(\fI\f7object\fP\f1, \fI\f7name\fP\f1); +.br \fB\f6g_object_get_long\fP\f1(\fI\f7object\fP\f1, \fI\f7name\fP\f1); .br +\fB\f6g_object_set_double\fP\f1(\fI\f7object\fP\f1, \fI\f7name\fP\f1, \fI\f7v_double\fP\f1); +.br \fB\f6g_object_set_long\fP\f1(\fI\f7object\fP\f1, \fI\f7name\fP\f1, \fI\f7v_long\fP\f1); .br +\fB\f6gnome_canvas_set_zoom\fP\f1(\fI\f7canvas\fP\f1, \fI\f7pixels_per_unit\fP\f1); +.br +\fB\f6gnome_canvas_text_set_zoom_size\fP\f1(\fI\f7item\fP\f1, \fI\f7pixels\fP\f1); +.br +\fB\f6gtk_notebook_current_widget\fP\f1(\fI\f7notebook\fP\f1); +.br \fB\f6gxk_cell_editable_canceled\fP\f1(\fI\f7ecell\fP\f1); .br \fB\f6gxk_cell_editable_focus_out_handler\fP\f1(\fI\f7ecell\fP\f1); @@ -405,8 +513,14 @@ .br \fB\f6gxk_dialog_set_title\fP\f1(\fI\f7dialog\fP\f1, \fI\f7title\fP\f1); .br +\fB\f6gxk_file_selection_heal\fP\f1(\fI\f7fs\fP\f1); +.br \fB\f6gxk_idle_show_widget\fP\f1(\fI\f7widget\fP\f1); .br +\fB\f6gxk_item_factory_get_item\fP\f1(\fI\f7ifactory\fP\f1, \fI\f7path\fP\f1); +.br +\fB\f6gxk_item_factory_get_widget\fP\f1(\fI\f7ifactory\fP\f1, \fI\f7path\fP\f1); +.br \fB\f6gxk_led_new\fP\f1(\fI\f7color\fP\f1); .br \fB\f6gxk_led_set_color\fP\f1(\fI\f7self\fP\f1, \fI\f7color\fP\f1); @@ -591,6 +705,8 @@ .br \fB\f6gxk_widget_modify_bg_as_base\fP\f1(\fI\f7widget\fP\f1); .br +\fB\f6gxk_widget_proxy_requisition\fP\f1(\fI\f7widget\fP\f1); +.br \fB\f6gxk_widget_showraise\fP\f1(\fI\f7widget\fP\f1); .br \fB\f6gxk_window_process_next\fP\f1(\fI\f7window\fP\f1, \fI\f7update_children\fP\f1); @@ -599,7 +715,522 @@ .br .ad -.H1 DESCRIPTION +.H1 DESCRIPTION + +.TP +.PD 0 + +.XR - - bst_gmask_container_create +\fB\f6bst_gmask_container_create\fP\f1(\fI\f7border_width\fP\f1, \fI\f7dislodge_columns\fP\f1); +.IX DESCRIPTION!bst_gmask_container_create(border_width, dislodge_columns);@\fB\f6bst_gmask_container_create\fP\f1(\fI\f7border_width\fP\f1, \fI\f7dislodge_columns\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7guint \fP\f1 \fI\f7border_width\fP\f1; T{ + Border width of this GUI mask +T} +\fI\f7gboolean \fP\f1 \fI\f7dislodge_columns\fP\f1; T{ + Provide expandable space between columns +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + GUI field mask container +T} +.TE +.ad + +Create a container capable to hold GUI field masks. This is the container to be passed into \fB\f6bst_gmask_form()\fP\f1. In case multiple field mask columns are packed into the container (by using \fB\f6bst_gmask_set_column()\fP\f1 on the filed masks), \fI\f7dislodge_columns\fP\f1 specifies whether the field mask columns are to be closely aligned. + +.TP +.PD 0 + +.XR - - bst_gmask_foreach +\fB\f6bst_gmask_foreach\fP\f1(\fI\f7mask\fP\f1, \fI\f7func\fP\f1, \fI\f7data\fP\f1); +.IX DESCRIPTION!bst_gmask_foreach(mask, func, data);@\fB\f6bst_gmask_foreach\fP\f1(\fI\f7mask\fP\f1, \fI\f7func\fP\f1, \fI\f7data\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\fI\f7gpointer \fP\f1 \fI\f7func\fP\f1; T{ + foreach function as: void \fB\f6func(GtkWidget*, gpointer data)\fP\f1; +T} +\fI\f7gpointer \fP\f1 \fI\f7data\fP\f1; T{ + data passed in to \fI\f7func\fP\f1 +T} +.TE +.ad + +Invoke \fI\f7func\fP\f1() with each of the widgets set for this field mask. + +.TP +.PD 0 + +.XR - - bst_gmask_form +\fB\f6bst_gmask_form\fP\f1(\fI\f7gmask_container\fP\f1, \fI\f7action\fP\f1, \fI\f7gpack\fP\f1); +.IX DESCRIPTION!bst_gmask_form(gmask_container, action, gpack);@\fB\f6bst_gmask_form\fP\f1(\fI\f7gmask_container\fP\f1, \fI\f7action\fP\f1, \fI\f7gpack\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7GtkWidget*\fP\f1 \fI\f7gmask_container\fP\f1; T{ + container created with \fB\f6bst_gmask_container_create()\fP\f1 +T} +\fI\f7GtkWidget*\fP\f1 \fI\f7action\fP\f1; T{ + valid \fI\f7GtkWidget\fP\f1 +T} +\fI\f7BstGMaskPack \fP\f1 \fI\f7gpack\fP\f1; T{ +\fI\f7BstGMaskPack\fP\f1 packing type +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + a new GUI field mask +T} +.TE +.ad + +Create a new GUI field mask with \fI\f7action\fP\f1 as action widget. Each GUI field mask consists of an action widget which may be neighboured by pre and post action widgets, the action widget is usually something like a \fI\f7GtkEntry\fP\f1 input widget. Also, most field masks have a prompt widget, usually a \fI\f7GtkLabel\fP\f1, labeling the field mask with a name. Optionally, up to three auxillary widgets are supported per field mask, layed out between the prompt and the action widgets. The second auxillary widget will expand if additional space is available. Other layout details are configured through the \fI\f7gpack\fP\f1 packing type: +.br +\f5BST_GMASK_FIT\f1 - the action widget is not expanded, +.br +\f5BST_GMASK_FILL\f1 - the action widget can expand within the action column, +.br +\f5BST_GMASK_INTERLEAVE\f1 - allow the action widget to expand across auxillary columns if it requests that much space, +.br +\f5BST_GMASK_BIG\f1 - force expansion of the action widget across all possible columns up to the prompt. + +.TP +.PD 0 + +.XR - - bst_gmask_get_action +\fB\f6bst_gmask_get_action\fP\f1(\fI\f7mask\fP\f1); +.IX DESCRIPTION!bst_gmask_get_action(mask);@\fB\f6bst_gmask_get_action\fP\f1(\fI\f7mask\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + the requested \fI\f7GtkWidget\fP\f1 or \f5NULL\f1 +T} +.TE +.ad + +Retrieve the action widget of this GUI field \fI\f7mask\fP\f1. + +.TP +.PD 0 + +.XR - - bst_gmask_get_ahead +\fB\f6bst_gmask_get_ahead\fP\f1(\fI\f7mask\fP\f1); +.IX DESCRIPTION!bst_gmask_get_ahead(mask);@\fB\f6bst_gmask_get_ahead\fP\f1(\fI\f7mask\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + the requested \fI\f7GtkWidget\fP\f1 or \f5NULL\f1 +T} +.TE +.ad + +Retrieve the pre action widget of this GUI field \fI\f7mask\fP\f1. + +.TP +.PD 0 + +.XR - - bst_gmask_get_atail +\fB\f6bst_gmask_get_atail\fP\f1(\fI\f7mask\fP\f1); +.IX DESCRIPTION!bst_gmask_get_atail(mask);@\fB\f6bst_gmask_get_atail\fP\f1(\fI\f7mask\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + the requested \fI\f7GtkWidget\fP\f1 or \f5NULL\f1 +T} +.TE +.ad + +Retrieve the post action widget of this GUI field \fI\f7mask\fP\f1. + +.TP +.PD 0 + +.XR - - bst_gmask_get_aux1 +\fB\f6bst_gmask_get_aux1\fP\f1(\fI\f7mask\fP\f1); +.IX DESCRIPTION!bst_gmask_get_aux1(mask);@\fB\f6bst_gmask_get_aux1\fP\f1(\fI\f7mask\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + the requested \fI\f7GtkWidget\fP\f1 or \f5NULL\f1 +T} +.TE +.ad + +Retrieve the first auxillary widget of this GUI field \fI\f7mask\fP\f1. + +.TP +.PD 0 + +.XR - - bst_gmask_get_aux2 +\fB\f6bst_gmask_get_aux2\fP\f1(\fI\f7mask\fP\f1); +.IX DESCRIPTION!bst_gmask_get_aux2(mask);@\fB\f6bst_gmask_get_aux2\fP\f1(\fI\f7mask\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + the requested \fI\f7GtkWidget\fP\f1 or \f5NULL\f1 +T} +.TE +.ad + +Retrieve the second auxillary widget of this GUI field \fI\f7mask\fP\f1. + +.TP +.PD 0 + +.XR - - bst_gmask_get_aux3 +\fB\f6bst_gmask_get_aux3\fP\f1(\fI\f7mask\fP\f1); +.IX DESCRIPTION!bst_gmask_get_aux3(mask);@\fB\f6bst_gmask_get_aux3\fP\f1(\fI\f7mask\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + the requested \fI\f7GtkWidget\fP\f1 or \f5NULL\f1 +T} +.TE +.ad + +Retrieve the third auxillary widget of this GUI field \fI\f7mask\fP\f1. + +.TP +.PD 0 + +.XR - - bst_gmask_get_prompt +\fB\f6bst_gmask_get_prompt\fP\f1(\fI\f7mask\fP\f1); +.IX DESCRIPTION!bst_gmask_get_prompt(mask);@\fB\f6bst_gmask_get_prompt\fP\f1(\fI\f7mask\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + the requested \fI\f7GtkWidget\fP\f1 or \f5NULL\f1 +T} +.TE +.ad + +Retrieve the prompt widget of this GUI field \fI\f7mask\fP\f1. + +.TP +.PD 0 + +.XR - - bst_gmask_pack +\fB\f6bst_gmask_pack\fP\f1(\fI\f7mask\fP\f1); +.IX DESCRIPTION!bst_gmask_pack(mask);@\fB\f6bst_gmask_pack\fP\f1(\fI\f7mask\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +.TE +.ad + +After the GUI field mask is fully configured, by setting all associated widgets on it, column tooltip text, etc., this function actually packs it into its container. The field mask setters shouldn't be used after this point. + +.TP +.PD 0 + +.XR - - bst_gmask_quick +\fB\f6bst_gmask_quick\fP\f1(\fI\f7gmask_container\fP\f1, \fI\f7column\fP\f1, \fI\f7prompt\fP\f1, \fI\f7action\fP\f1, \fI\f7tip_text\fP\f1); +.IX DESCRIPTION!bst_gmask_quick(gmask_container, column, prompt, action, tip_text);@\fB\f6bst_gmask_quick\fP\f1(\fI\f7gmask_container\fP\f1, \fI\f7column\fP\f1, \fI\f7prompt\fP\f1, \fI\f7action\fP\f1, \fI\f7tip_text\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7GtkWidget*\fP\f1 \fI\f7gmask_container\fP\f1; T{ + container created with \fB\f6bst_gmask_container_create()\fP\f1 +T} +\fI\f7guint \fP\f1 \fI\f7column\fP\f1; T{ + column number for \fB\f6bst_gmask_set_column()\fP\f1 +T} +\fI\f7const gchar*\fP\f1 \fI\f7prompt\fP\f1; T{ + valid \fI\f7GtkWidget\fP\f1 for \fB\f6bst_gmask_set_prompt()\fP\f1 +T} +\fI\f7gpointer \fP\f1 \fI\f7action\fP\f1; T{ + valid \fI\f7GtkWidget\fP\f1 as with \fB\f6bst_gmask_form()\fP\f1 +T} +\fI\f7const gchar*\fP\f1 \fI\f7tip_text\fP\f1; T{ + text for \fB\f6bst_gmask_set_tip()\fP\f1 +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + an already packed GUI field mask +T} +.TE +.ad + +Shorthand to form a GUI field mask in \fI\f7column\fP\f1 of type \f5BST_GMASK_FILL\f1, with \fI\f7prompt\fP\f1 and \fI\f7tip_text\fP\f1. Note that this function already calls \fB\f6bst_gmask_pack()\fP\f1, so the returned field mask already can't be modified anymore. + +.TP +.PD 0 + +.XR - - bst_gmask_set_ahead +\fB\f6bst_gmask_set_ahead\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.IX DESCRIPTION!bst_gmask_set_ahead(mask, widget);@\fB\f6bst_gmask_set_ahead\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\fI\f7gpointer \fP\f1 \fI\f7widget\fP\f1; T{ + valid \fI\f7GtkWidget\fP\f1 +T} +.TE +.ad + +Set the pre action widget of this GUI field \fI\f7mask\fP\f1. + +.TP +.PD 0 + +.XR - - bst_gmask_set_atail +\fB\f6bst_gmask_set_atail\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.IX DESCRIPTION!bst_gmask_set_atail(mask, widget);@\fB\f6bst_gmask_set_atail\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\fI\f7gpointer \fP\f1 \fI\f7widget\fP\f1; T{ + valid \fI\f7GtkWidget\fP\f1 +T} +.TE +.ad + +Set the post action widget of this GUI field \fI\f7mask\fP\f1. + +.TP +.PD 0 + +.XR - - bst_gmask_set_aux1 +\fB\f6bst_gmask_set_aux1\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.IX DESCRIPTION!bst_gmask_set_aux1(mask, widget);@\fB\f6bst_gmask_set_aux1\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\fI\f7gpointer \fP\f1 \fI\f7widget\fP\f1; T{ + valid \fI\f7GtkWidget\fP\f1 +T} +.TE +.ad + +Set the first auxillary widget of this GUI field \fI\f7mask\fP\f1. + +.TP +.PD 0 + +.XR - - bst_gmask_set_aux2 +\fB\f6bst_gmask_set_aux2\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.IX DESCRIPTION!bst_gmask_set_aux2(mask, widget);@\fB\f6bst_gmask_set_aux2\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\fI\f7gpointer \fP\f1 \fI\f7widget\fP\f1; T{ + valid \fI\f7GtkWidget\fP\f1 +T} +.TE +.ad + +Set the second auxillary widget of this GUI field \fI\f7mask\fP\f1. In contrast to the first and third auxillary widget, this one is expanded if extra space is available. + +.TP +.PD 0 + +.XR - - bst_gmask_set_aux3 +\fB\f6bst_gmask_set_aux3\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.IX DESCRIPTION!bst_gmask_set_aux3(mask, widget);@\fB\f6bst_gmask_set_aux3\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\fI\f7gpointer \fP\f1 \fI\f7widget\fP\f1; T{ + valid \fI\f7GtkWidget\fP\f1 +T} +.TE +.ad + +Set the third auxillary widget of this GUI field \fI\f7mask\fP\f1. + +.TP +.PD 0 + +.XR - - bst_gmask_set_column +\fB\f6bst_gmask_set_column\fP\f1(\fI\f7mask\fP\f1, \fI\f7column\fP\f1); +.IX DESCRIPTION!bst_gmask_set_column(mask, column);@\fB\f6bst_gmask_set_column\fP\f1(\fI\f7mask\fP\f1, \fI\f7column\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\fI\f7guint \fP\f1 \fI\f7column\fP\f1; T{ + column number +T} +.TE +.ad + +Set the field mask column. By default all field masks are packed into column \f50\f1, so that only vertical packing occours. + +.TP +.PD 0 + +.XR - - bst_gmask_set_prompt +\fB\f6bst_gmask_set_prompt\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.IX DESCRIPTION!bst_gmask_set_prompt(mask, widget);@\fB\f6bst_gmask_set_prompt\fP\f1(\fI\f7mask\fP\f1, \fI\f7widget\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\fI\f7gpointer \fP\f1 \fI\f7widget\fP\f1; T{ + valid \fI\f7GtkWidget\fP\f1 +T} +.TE +.ad + +Set the prompt widget of this GUI field \fI\f7mask\fP\f1. + +.TP +.PD 0 + +.XR - - bst_gmask_set_tip +\fB\f6bst_gmask_set_tip\fP\f1(\fI\f7mask\fP\f1, \fI\f7tip_text\fP\f1); +.IX DESCRIPTION!bst_gmask_set_tip(mask, tip_text);@\fB\f6bst_gmask_set_tip\fP\f1(\fI\f7mask\fP\f1, \fI\f7tip_text\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7BstGMask*\fP\f1 \fI\f7mask\fP\f1; T{ + valid \fI\f7BstGMask\fP\f1 +T} +\fI\f7const gchar*\fP\f1 \fI\f7tip_text\fP\f1; T{ + tooltip text +T} +.TE +.ad + +Set the tooltip text of this GUI field \fI\f7mask\fP\f1. + +.TP +.PD 0 + +.XR - - g_object_get_double +\fB\f6g_object_get_double\fP\f1(\fI\f7object\fP\f1, \fI\f7name\fP\f1); +.IX DESCRIPTION!g_object_get_double(object, name);@\fB\f6g_object_get_double\fP\f1(\fI\f7object\fP\f1, \fI\f7name\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7gpointer \fP\f1 \fI\f7object\fP\f1; T{ + a valid GObject +T} +\fI\f7const gchar*\fP\f1 \fI\f7name\fP\f1; T{ + name of the double value to retrieve +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + the actual value +T} +.TE +.ad + +Convenience variant of \fB\f6g_object_get_data()\fP\f1 to retrieve a double instead of a pointer. .TP .PD 0 @@ -630,6 +1261,32 @@ .TP .PD 0 +.XR - - g_object_set_double +\fB\f6g_object_set_double\fP\f1(\fI\f7object\fP\f1, \fI\f7name\fP\f1, \fI\f7v_double\fP\f1); +.IX DESCRIPTION!g_object_set_double(object, name, v_double);@\fB\f6g_object_set_double\fP\f1(\fI\f7object\fP\f1, \fI\f7name\fP\f1, \fI\f7v_double\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7gpointer \fP\f1 \fI\f7object\fP\f1; T{ + a valid GObject +T} +\fI\f7const gchar*\fP\f1 \fI\f7name\fP\f1; T{ + name of the double value to set +T} +\fI\f7gdouble \fP\f1 \fI\f7v_double\fP\f1; T{ + the actual value +T} +.TE +.ad + +Convenience variant of \fB\f6g_object_set_data()\fP\f1 to set a double instead of a pointer. + +.TP +.PD 0 + .XR - - g_object_set_long \fB\f6g_object_set_long\fP\f1(\fI\f7object\fP\f1, \fI\f7name\fP\f1, \fI\f7v_long\fP\f1); .IX DESCRIPTION!g_object_set_long(object, name, v_long);@\fB\f6g_object_set_long\fP\f1(\fI\f7object\fP\f1, \fI\f7name\fP\f1, \fI\f7v_long\fP\f1); @@ -656,6 +1313,75 @@ .TP .PD 0 +.XR - - gnome_canvas_set_zoom +\fB\f6gnome_canvas_set_zoom\fP\f1(\fI\f7canvas\fP\f1, \fI\f7pixels_per_unit\fP\f1); +.IX DESCRIPTION!gnome_canvas_set_zoom(canvas, pixels_per_unit);@\fB\f6gnome_canvas_set_zoom\fP\f1(\fI\f7canvas\fP\f1, \fI\f7pixels_per_unit\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7GnomeCanvas*\fP\f1 \fI\f7canvas\fP\f1; T{ + valid \fI\f7GnomeCanvas\fP\f1 +T} +\fI\f7gdouble \fP\f1 \fI\f7pixels_per_unit\fP\f1; T{ + zoom factor (defaults to \f51.0\f1) +T} +.TE +.ad + +This function calls \fB\f6gnome_canvas_set_pixels_per_unit()\fP\f1 with its arguments and in addition adjusts the font sizes of all canvas text items where \fB\f6gnome_canvas_text_set_zoom_size()\fP\f1 was used before. + +.TP +.PD 0 + +.XR - - gnome_canvas_text_set_zoom_size +\fB\f6gnome_canvas_text_set_zoom_size\fP\f1(\fI\f7item\fP\f1, \fI\f7pixels\fP\f1); +.IX DESCRIPTION!gnome_canvas_text_set_zoom_size(item, pixels);@\fB\f6gnome_canvas_text_set_zoom_size\fP\f1(\fI\f7item\fP\f1, \fI\f7pixels\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7GnomeCanvasText*\fP\f1 \fI\f7item\fP\f1; T{ + canvas text item +T} +\fI\f7gdouble \fP\f1 \fI\f7pixels\fP\f1; T{ + default font size +T} +.TE +.ad + +Set the default font size in pixels of a canvas text item. The size will be adjusted when the canvas zoomed via \fB\f6gnome_canvas_set_zoom()\fP\f1. + +.TP +.PD 0 + +.XR - - gtk_notebook_current_widget +\fB\f6gtk_notebook_current_widget\fP\f1(\fI\f7notebook\fP\f1); +.IX DESCRIPTION!gtk_notebook_current_widget(notebook);@\fB\f6gtk_notebook_current_widget\fP\f1(\fI\f7notebook\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7GtkNotebook*\fP\f1 \fI\f7notebook\fP\f1; T{ + valid \fI\f7GtkNotebook\fP\f1 +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + the widget corresponding to the current page +T} +.TE +.ad + +This function is essentially a shortcut for \fB\f6gtk_notebook_get_current_page()\fP\f1 and \fB\f6gtk_notebook_get_nth_page()\fP\f1. + +.TP +.PD 0 + .XR - - gxk_cell_editable_canceled \fB\f6gxk_cell_editable_canceled\fP\f1(\fI\f7ecell\fP\f1); .IX DESCRIPTION!gxk_cell_editable_canceled(ecell);@\fB\f6gxk_cell_editable_canceled\fP\f1(\fI\f7ecell\fP\f1); @@ -958,6 +1684,26 @@ .TP .PD 0 +.XR - - gxk_file_selection_heal +\fB\f6gxk_file_selection_heal\fP\f1(\fI\f7fs\fP\f1); +.IX DESCRIPTION!gxk_file_selection_heal(fs);@\fB\f6gxk_file_selection_heal\fP\f1(\fI\f7fs\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7GtkFileSelection*\fP\f1 \fI\f7fs\fP\f1; T{ + valid \fI\f7GtkFileSelection\fP\f1 +T} +.TE +.ad + +Fixup various oddities that happened to the Gtk+ file selection widget over time. This function corrects container border widths, spacing, button placement and the default and focus widgets. + +.TP +.PD 0 + .XR - - gxk_idle_show_widget \fB\f6gxk_idle_show_widget\fP\f1(\fI\f7widget\fP\f1); .IX DESCRIPTION!gxk_idle_show_widget(widget);@\fB\f6gxk_idle_show_widget\fP\f1(\fI\f7widget\fP\f1); @@ -978,6 +1724,58 @@ .TP .PD 0 +.XR - - gxk_item_factory_get_item +\fB\f6gxk_item_factory_get_item\fP\f1(\fI\f7ifactory\fP\f1, \fI\f7path\fP\f1); +.IX DESCRIPTION!gxk_item_factory_get_item(ifactory, path);@\fB\f6gxk_item_factory_get_item\fP\f1(\fI\f7ifactory\fP\f1, \fI\f7path\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7GtkItemFactory*\fP\f1 \fI\f7ifactory\fP\f1; T{ + valid \fI\f7GtkItemFactory\fP\f1 +T} +\fI\f7const gchar*\fP\f1 \fI\f7path\fP\f1; T{ + item factory path +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + menu item according to \fI\f7path\fP\f1 +T} +.TE +.ad + +This function strips unescaped underlines ('_') from \fI\f7path\fP\f1 and then calls \fB\f6gtk_item_factory_get_item()\fP\f1. + +.TP +.PD 0 + +.XR - - gxk_item_factory_get_widget +\fB\f6gxk_item_factory_get_widget\fP\f1(\fI\f7ifactory\fP\f1, \fI\f7path\fP\f1); +.IX DESCRIPTION!gxk_item_factory_get_widget(ifactory, path);@\fB\f6gxk_item_factory_get_widget\fP\f1(\fI\f7ifactory\fP\f1, \fI\f7path\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7GtkItemFactory*\fP\f1 \fI\f7ifactory\fP\f1; T{ + valid \fI\f7GtkItemFactory\fP\f1 +T} +\fI\f7const gchar*\fP\f1 \fI\f7path\fP\f1; T{ + item factory path +T} +\h'-2m'\fI\f7RETURNS:\fP\f1 T{ + widget according to \fI\f7path\fP\f1 +T} +.TE +.ad + +This function strips unescaped underlines ('_') from \fI\f7path\fP\f1 and then calls \fB\f6gtk_item_factory_get_widget()\fP\f1. + +.TP +.PD 0 + .XR - - gxk_led_new \fB\f6gxk_led_new\fP\f1(\fI\f7color\fP\f1); .IX DESCRIPTION!gxk_led_new(color);@\fB\f6gxk_led_new\fP\f1(\fI\f7color\fP\f1); @@ -3190,6 +3988,26 @@ .TP .PD 0 +.XR - - gxk_widget_proxy_requisition +\fB\f6gxk_widget_proxy_requisition\fP\f1(\fI\f7widget\fP\f1); +.IX DESCRIPTION!gxk_widget_proxy_requisition(widget);@\fB\f6gxk_widget_proxy_requisition\fP\f1(\fI\f7widget\fP\f1); +.sp -1 + +.na +.TS +nokeep; +l l l. +\fI\f7GtkWidget*\fP\f1 \fI\f7widget\fP\f1; T{ + valid \fI\f7GtkWidget\fP\f1 +T} +.TE +.ad + +Proxy the size requisition of \fI\f7widget\fP\f1 through the ::width_request and ::height_request properties. This is usefull only for immediate children of a \fI\f7GtkScrolledWindow\fP\f1, to have the \fI\f7GtkScrolledWindow\fP\f1 honour the widgets size requisition. + +.TP +.PD 0 + .XR - - gxk_widget_showraise \fB\f6gxk_widget_showraise\fP\f1(\fI\f7widget\fP\f1); .IX DESCRIPTION!gxk_widget_showraise(widget);@\fB\f6gxk_widget_showraise\fP\f1(\fI\f7widget\fP\f1); @@ -3257,6 +4075,6 @@ .br .PP -\fIDocument Revised:\fP Thu Mar 13 21:47:17 CET 2003 +\fIDocument Revised:\fP Sun Apr 13 22:19:14 CEST 2003 .br diff -ruN beast-0.5.0/docs/generated/beast-gxk.3.markup beast-0.5.1/docs/generated/beast-gxk.3.markup --- beast-0.5.0/docs/generated/beast-gxk.3.markup 2003-03-13 21:47:48.000000000 +0100 +++ beast-0.5.1/docs/generated/beast-gxk.3.markup 2003-04-14 00:09:24.000000000 +0200 @@ -1,3 +1,3 @@ - NAME GXK-Functions - Gtk+ Extension Kit Function Reference Document Revised: Thu Mar 13 21:47:17 CET 2003 SYNOPSIS g_object_get_long(object, name);g_object_set_long(object, name, v_long);gxk_cell_editable_canceled(ecell);gxk_cell_editable_focus_out_handler(ecell);gxk_cell_renderer_popup_get_type();gxk_color_alloc(colormap, color);gxk_dialog_action*(dialog, action, callback, data);gxk_dialog_add_flags(dialog, flags);gxk_dialog_clear_flags(dialog, flags);gxk_dialog_get_child(dialog);gxk_dialog_get_status_window();gxk_dialog_new(pointer_loc, alive_object, flags, title, child);gxk_dialog_remove_actions(dialog);gxk_dialog_set_child(dialog, child);gxk_dialog_set_title(dialog, title);gxk_idle_show_widget(widget);gxk_led_new(color);gxk_led_set_color(self, color);gxk_notebook_append(notebook, child, label);gxk_notebook_set_current_page_widget(notebook, page);gxk_object_derive();gxk_polygon_new(polygon_graph);gxk_polygon_set_arcs(self, n_arcs, arcs);gxk_polygon_set_graph(self, polygon_graph);gxk_polygon_set_length(self, length);gxk_polygon_set_lines(self, n_lines, lines);gxk_proxy_editable_get_type();gxk_proxy_editable_set_cell_editable(self, ecell);gxk_scroll_text_advance(sctext, uri);gxk_scroll_text_append(sctext, string);gxk_scroll_text_append_file(sctext, file_name);gxk_scroll_text_append_file_tsm(sctext, file_name);gxk_scroll_text_append_tsm(sctext, string);gxk_scroll_text_aprintf(sctext, text_fmt);gxk_scroll_text_clear(sctext);gxk_scroll_text_create(flags, string);gxk_scroll_text_display(sctext, uri);gxk_scroll_text_enter(sctext, uri);gxk_scroll_text_get_text_view(sctext);gxk_scroll_text_pop_indent(sctext);gxk_scroll_text_push_indent(sctext);gxk_scroll_text_rewind(sctext);gxk_scroll_text_set(sctext, string);gxk_scroll_text_set_index(sctext, uri);gxk_scroll_text_set_tsm(sctext, string);gxk_signal_handler_pending(instance, detailed_signal, callback, data);gxk_size_group(sgmode, ...);gxk_size_height(icon_size);gxk_size_width(icon_size);gxk_status_bar_create();gxk_status_clear();gxk_status_errnoprintf(libc_errno, message_fmt);gxk_status_printf(percentage, status_msg, message_fmt);gxk_status_set(percentage, message, status_msg);gxk_status_window_pop();gxk_status_window_push(widget);gxk_stock_button(stock_id, label);gxk_stock_button_child(stock_id, label);gxk_stock_fallback_pixbuf(stock_id);gxk_stock_icon_window(stock_id);gxk_stock_image(stock_icon_id, icon_size);gxk_stock_register_action(action);gxk_stock_register_actions(n_actions, actions);gxk_stock_register_icon(icon);gxk_stock_register_icons(n_icons, icons);gxk_text_view_cursor_to_end(tview);gxk_text_view_cursor_to_start(tview);gxk_text_view_enter_browse_mode(tview);gxk_text_view_leave_browse_mode(tview);gxk_toolbar_append(self, child_type, name, tooltip, icon);gxk_toolbar_append_choice(self, child_type, choice_func, data, data_free);gxk_toolbar_append_stock(self, child_type, name, tooltip, stock_id);gxk_toolbar_choice_add(widget, name, tooltip, icon, choice);gxk_toolbar_choice_is_item(item);gxk_toolbar_choice_is_selected(item);gxk_toolbar_choice_select(item);gxk_toolbar_choice_set(widget, name, tooltip, icon, choice);gxk_toolbar_new(nullify_pointer);gxk_toplevel_activate_default(widget);gxk_toplevel_delete(widget);gxk_toplevel_hide(widget);gxk_tree_path_prev(path);gxk_tree_selection_force_browse(selection, model);gxk_tree_selection_select_ipath(selection, ...);gxk_tree_selection_select_spath(selection, str_path);gxk_tree_selection_unselect_ipath(selection, ...);gxk_tree_selection_unselect_spath(selection, str_path);gxk_tree_spath_index0(strpath);gxk_tree_view_add_column(tree_view, position, column, cell, ...);gxk_tree_view_add_popup_column(tree_view, model_column, xalign, title, tooltip, edited_callback, data, cflags);gxk_tree_view_add_text_column(tree_view, model_column, xalign, title, tooltip, edited_callback, data, cflags);gxk_tree_view_add_toggle_column(tree_view, model_column, xalign, title, tooltip, toggled_callback, data, cflags);gxk_tree_view_append_text_columns(tree_view, n_cols, ...);gxk_tree_view_column_set_tip_title(tree_column, title, tooltip);gxk_tree_view_focus_row(tree, row);gxk_tree_view_get_bin_window_pos(tree, x_p, y_p);gxk_tree_view_get_row_area(tree, row, y_p, height_p);gxk_tree_view_get_row_from_coord(tree, y, row_p);gxk_tree_view_get_selected_row(tree);gxk_tree_view_is_row_selected(tree, row);gxk_type_register_generated(n_entries, entries);gxk_widget_activate_accel_group(widget, accel_group);gxk_widget_force_bg_clear(widget);gxk_widget_make_insensitive(widget);gxk_widget_make_sensitive(widget);gxk_widget_modify_as_title(widget);gxk_widget_modify_base_as_bg(widget);gxk_widget_modify_bg_as_base(widget);gxk_widget_showraise(widget);gxk_window_process_next(window, update_children);gxk_window_set_cursor_type(window, cursor); DESCRIPTION g_object_get_long(object, name); gpointer object; a valid GObject const gchar* name; name of the long value to retrieve RETURNS: the actual value Convenience variant of g_object_get_data() to retrieve a long instead of a pointer. g_object_set_long(object, name, v_long); gpointer object; a valid GObject const gchar* name; name of the long value to set glong v_long; the actual value Convenience variant of g_object_set_data() to set a long instead of a pointer. gxk_cell_editable_canceled(ecell); GtkCellEditable* ecell; valid GtkCellEditable RETURNS: whether editing got aborted Return whether editing was canceled (currently supported by GtkEntry and triggered by pressing Escape during editing). gxk_cell_editable_focus_out_handler(ecell); GtkCellEditable* ecell; valid GtkCellEditable RETURNS: returns FALSE Call gtk_cell_editable_editing_done() if necessary and return FALSE. This function is meant to be used to handle focus out events on GtkCellEditable widgets. gxk_cell_renderer_popup_get_type(); RETURNS: GXK_TYPE_CELL_RENDERER_POPUP GxkCellRendererPopup is an editable text cell renderer which supports popping up an auxillary window. gxk_color_alloc(colormap, color); GdkColormap* colormap; valid GdkColormap GdkColor* color; valid GdkColor Allocate a color like gdk_color_alloc() with automated error checking. gxk_dialog_action*(dialog, action, callback, data); dialog; valid GxkDialog action; button label or stock ID callback; callback function for button activation data; callback data Add a new (stock) button to a dialog. gxk_dialog_add_flags(dialog, flags); GxkDialog* dialog; valid GxkDialog GxkDialogFlags flags; additional flags to set on the dialog. Alter dialog flags, see gxk_dialog_new(). gxk_dialog_clear_flags(dialog, flags); GxkDialog* dialog; valid GxkDialog GxkDialogFlags flags; flags to unset on the dialog. Alter dialog flags, see gxk_dialog_new(). gxk_dialog_get_child(dialog); GxkDialog* dialog; valid GxkDialog Retrieve the primary child of the dialog. gxk_dialog_get_status_window(); RETURNS: a valid GxkDialog or NULL Retrieve the most recently entered GxkDialog if any. gxk_dialog_new(pointer_loc, alive_object, flags, title, child); gpointer pointer_loc; pointer to nullify upon dialog destruction GtkObject* alive_object; object which upon destruction, takes the dialog with it GxkDialogFlags flags; dialog flags const gchar* title; window title for the dialog GtkWidget* child; child to pack into the dialog Create a new configurable dialog. Possible values for the flags are: GXK_DIALOG_HIDE_ON_DELETE: only hide and not desroy the dialog upon window manager delete events; GXK_DIALOG_STATUS_SHELL: the dialog has a status bar and acts as a shell window for primary application data; GXK_DIALOG_MODAL: the dialog is modal while visible; GXK_DIALOG_POPUP_POS: popup the dialog below mouse pointer; GXK_DIALOG_DELETE_BUTTON: add a "Close" button to the dialog (not recommended for GXK_DIALOG_STATUS_SHELL dialogs, which usually have menus). gxk_dialog_remove_actions(dialog); GxkDialog* dialog; valid GxkDialog Remove all action buttons setup for this dialog. gxk_dialog_set_child(dialog, child); GxkDialog* dialog; valid GxkDialog GtkWidget* child; new child Change the dialog's primary child to child. Destroys the old child if any. gxk_dialog_set_title(dialog, title); GxkDialog* dialog; valid GxkDialog const gchar* title; dialog window manager title Change the dialog's window manager title and role. gxk_idle_show_widget(widget); GtkWidget* widget; a valid widget Defer showing this widget until the next idle handler is run. This is usefull if other things are pending which need to be processed first, for instance hiding other toplevels. gxk_led_new(color); guint color; rgb color Create a new led widget. It's active color can be specified as 24bit RGB color value. gxk_led_set_color(self, color); GxkLed* self; valid GxkLed guint color; color as RGB byte triple Set the current led color as 24bit RGB values. gxk_notebook_append(notebook, child, label); GtkNotebook* notebook; a valid notebook GtkWidget* child; a valid parent-less widget const gchar* label; notebook page name Add a new page containing child to notebook, naming the page label. gxk_notebook_set_current_page_widget(notebook, page); GtkNotebook* notebook; valid GtkNotebook GtkWidget* page; notebook page widget Set the current notebook page from a page widget, instead of a page number. gxk_object_derive(); Derive a new object type, giving a list of methods which are implemented for this new object type. gxk_polygon_new(polygon_graph); GxkPolygonGraph* polygon_graph; set of lines and arcs Create a new polygon widget. gxk_polygon_set_arcs(self, n_arcs, arcs); GxkPolygon* self; valid GxkPolygon guint n_arcs; number of arcs GxkPolygonArc* arcs; array of arcs Set the arcs for this polygon. The direction of an arc determines it's shadow type. gxk_polygon_set_graph(self, polygon_graph); GxkPolygon* self; valid GxkPolygon GxkPolygonGraph* polygon_graph; set of lines and arcs Set the lines and arcs for this polygon, see gxk_polygon_set_lines() and gxk_polygon_set_arcs(). gxk_polygon_set_length(self, length); GxkPolygon* self; valid GxkPolygon guint length; set of lines and arcs Set the desired width and height for this polygon to length. gxk_polygon_set_lines(self, n_lines, lines); GxkPolygon* self; valid GxkPolygon guint n_lines; number of lines GxkPolygonLine* lines; array of lines Set the lines for this polygon. The direction of a line determines it's shadow type. gxk_proxy_editable_get_type(); RETURNS: GXK_TYPE_PROXY_EDITABLE GxkProxyEditable is a GtkEventBox which proxies the GtkCellEditable interface onto a backend widget which also implements the GtkCellEditable interface. gxk_proxy_editable_set_cell_editable(self, ecell); GxkProxyEditable* self; valid GxkProxyEditable GtkCellEditable* ecell; valid GtkCellEditable Set the backend ecell onto which GtkCellEditable methods issued on self are to be forwarded. This function may only be called once per GxkProxyEditable. gxk_scroll_text_advance(sctext, uri); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* uri; resource locator Relative to the url currently being displayed load and display the possibly partial (relative) url uri. Navigation history is affected. gxk_scroll_text_append(sctext, string); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* string; the text to be displayed Append string to the textual contents of this sctext. gxk_scroll_text_append_file(sctext, file_name); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* file_name; file holding the text to be displayed Append the contents of file_name to the textual contents of this sctext. gxk_scroll_text_append_file_tsm(sctext, file_name); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* file_name; file holding the text to be displayed in tag-span-markup Append the contents of file_name to the textual contents of this sctext, where those contents are marked up with tag-span-markup. gxk_scroll_text_append_tsm(sctext, string); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* string; the text to be displayed in tag-span-markup Append string to the textual contents of this sctext, where string is marked up with tag-span-markup. gxk_scroll_text_aprintf(sctext, text_fmt); sctext; a scroll text widget as returned from gxk_scroll_text_create() text_fmt; printf(3) style format string Append text_fmt to the textual contents of this sctext. gxk_scroll_text_clear(sctext); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() Clear the textual contents of this sctext and reset the indentation level. gxk_scroll_text_create(flags, string); GxkScrollTextFlags flags; const gchar* string; default contents Create a scrollable text view. Behaviour and apperance can GXK_SCROLL_TEXT_MONO - use a fixed width font; GXK_SCROLL_TEXT_SANS - use a sans serif font; GXK_SCROLL_TEXT_SERIF - use a serif font; GXK_SCROLL_TEXT_WRAP - allow word wrapping of string; GXK_SCROLL_TEXT_CENTER - center string; GXK_SCROLL_TEXT_WIDGET_BG - do not use white as background, but keep the usual (grey) widget background; GXK_SCROLL_TEXT_NAVIGATABLE - add a navigation bar and allow the user to navigate through clickable links; GXK_SCROLL_TEXT_EDITABLE - permit modifications of the text; GXK_SCROLL_TEXT_WIDGET_LOOK - this is a combination of flags to adjust the scroll text to look like an ordinary GtkLabel, which amounts to using a sans serif font, normal widget background and allowing word wrapping. gxk_scroll_text_display(sctext, uri); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* uri; resource locator Load and display the resource from uri without altering the navigation history. gxk_scroll_text_enter(sctext, uri); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* uri; resource locator Load and display the url uri. Navigation history is affected. gxk_scroll_text_get_text_view(sctext); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() RETURNS: a GtkTextView widget Return the internally used GtkTextView of this sctext. gxk_scroll_text_pop_indent(sctext); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() Decrement the global indentation level after a previous increment with gxk_scroll_text_push_indent(). gxk_scroll_text_push_indent(sctext); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() Increment the global indentation level, which affects overall indentation of text added with gxk_scroll_text_append() and friends. gxk_scroll_text_rewind(sctext); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() Go back in navigation history as far as possible. gxk_scroll_text_set(sctext, string); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* string; the new text to be displayed Replace the textual contents of this sctext with string. gxk_scroll_text_set_index(sctext, uri); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* uri; resource locator Affect what uri is being displayed by pressing on the "Index" navigation button. gxk_scroll_text_set_tsm(sctext, string); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* string; the new text to be displayed in tag-span-markup Replace the textual contents of this sctext with string, where string is marked up with tag-span-markup. gxk_signal_handler_pending(instance, detailed_signal, callback, data); gpointer instance; object instance with signals const gchar* detailed_signal; signal name GCallback callback; custom callback function gpointer data; callback data RETURNS: whether callback is connected Find out whether a specific callback is pending for a specific signal on an instance. detailed_signal may be NULL to act as a wildcard. TRUE is returned if the callback is found, FALSE otherwise. gxk_size_group(sgmode, ...); sgmode; size group mode, one of GTK_SIZE_GROUP_NONE, ...; NULL terminated list of widgets to group together GTK_SIZE_GROUP_HORIZONTAL, GTK_SIZE_GROUP_VERTICAL or GTK_SIZE_GROUP_BOTH Group horizontal and/or vertical resizing behaviour of widgets. See gtk_size_group_set_mode() on the effect of the various grouping modes. gxk_size_height(icon_size); GtkIconSize icon_size; image size id RETURNS: image size height Return the height of a specific image size. gxk_size_width(icon_size); GtkIconSize icon_size; image size id RETURNS: image size width Return the width of a specific image size. gxk_status_bar_create(); RETURNS: status bar container Create a status bar suitable to be packed into windows with status bar support. gxk_status_clear(); Clear the current status bar. gxk_status_errnoprintf(libc_errno, message_fmt); libc_errno; errno value message_fmt; printf style message to be displayed Similar to gxk_status_printf() but figures the error status automatically from the passed in libc_errno. gxk_status_printf(percentage, status_msg, message_fmt); percentage; progress percentage status_msg; error status message_fmt; printf style message to be displayed Similar to gxk_status_set() but supports construction of the message through a printf(3) style argument list. gxk_status_set(percentage, message, status_msg); gfloat percentage; progress percentage const gchar* message; message to be displayed const gchar* status_msg; error status Set the current status bar message, progress percentage (usually 0% - 100% or one of the special values: GXK_STATUS_ERROR, GXK_STATUS_WAIT, GXK_STATUS_IDLE, GXK_STATUS_IDLE_HINT or GXK_STATUS_PROGRESS) and error status. gxk_status_window_pop(); Pop the most recently pushed window from the status bar window stack. gxk_status_window_push(widget); gpointer widget; status bar window Push a window onto the stack of windows that have the current status bar. gxk_stock_button(stock_id, label); const gchar* stock_id; stock name const gchar* label; button text RETURNS: a visible GtkButton widget Create a GtkButton widget with a stock image and custom label text. gxk_stock_button_child(stock_id, label); const gchar* stock_id; stock name const gchar* label; button text RETURNS: a visible widget suitable as GtkButton child This function does the same as gxk_stock_button() except for creating the actual button. The button's child is instead returned to the caller, this might e.g. be usefull if a button is created containing multiple children which are shown only selectively during runtime. gxk_stock_fallback_pixbuf(stock_id); const gchar* stock_id; stock name RETURNS: this stock_id's pixbuf (or NULL for invalid stock ids) Return the pixbuf associated with stock_id, the pixbuf is owned by the stock system and persists throughout runtime. To display stock icons in widgets use gxk_stock_image() and not this pixbuf. gxk_stock_icon_window(stock_id); const gchar* stock_id; a valid stock icon name RETURNS: a window showing the stock icon Create a window displaying a stock icon which is transparent according to the icon's alpha mask. Such windows are mostly usefull to implement drag-and-drop operations with stock icons. gxk_stock_image(stock_icon_id, icon_size); const gchar* stock_icon_id; stock name GtkIconSize icon_size; image size RETURNS: a visible GtkImage widget or NULL Create a GtkImage widget with a stock image of a certain size, or return NULL if the image doesn't exist. The returned image widget correctly displays the stock icon, honouring prelight and sensitivity state of the widget. gxk_stock_register_action(action); const GxkStockAction* action; a validly filled out GxkStockAction Register a new stock action. The new stock action action->stock_id is registered with an action label of action->label and the stock icon action->stock_fallback. If action->label is NULL, action->stock_fallback must not be NULL, and action->stock_id becomes merely an alias of action->stock_fallback. gxk_stock_register_actions(n_actions, actions); guint n_actions; number of actions to register const GxkStockAction* actions; a validly filled out array of GxkStockAction For all n_actions contained in actions, call gxk_stock_register_action(). gxk_stock_register_icon(icon); const GxkStockIcon* icon; a validly filled out GxkStockIcon Register a new stock icon from an inlined pixbuf. The inlined pixbuf pixels are not copied, so the caller must make sure for the data to remain valid. gxk_stock_register_icons(n_icons, icons); guint n_icons; number of icons to register const GxkStockIcon* icons; a validly filled out array of GxkStockIcon For all n_icons contained in icons, call gxk_stock_register_icon(). gxk_text_view_cursor_to_end(tview); GtkTextView* tview; a GtkTextView object Move the insertion and selection bound mark to the end of the text view's buffer and keep the cursor on screen. gxk_text_view_cursor_to_start(tview); GtkTextView* tview; a GtkTextView object Move the insertion and selection bound mark to the start of the text view's buffer and keep the cursor on screen. gxk_text_view_enter_browse_mode(tview); GtkTextView* tview; a GtkTextView object Install key press handlers on a text view which allow scrolling its contents into any direction. gxk_text_view_leave_browse_mode(tview); GtkTextView* tview; a GtkTextView object Deinstall key press handlers previously installed with gxk_text_view_enter_browse_mode(). gxk_toolbar_append(self, child_type, name, tooltip, icon); GxkToolbar* self; a toolbar as returned from gxk_toolbar_new() GxkToolbarChild child_type; child type const gchar* name; name of the child wiget (underscores indicate hotkeys) const gchar* tooltip; tooltip to be displayed with this child GtkWidget* icon; image widget for buttons or a custom widget RETURNS: newly created toolbar child Append a new child to the toolbar, named name, with tooltip tooltip and containing icon. icon is usually an image widget, unless GXK_TOOLBAR_WIDGET or one of its variants was specified as child type. The possible child types are: GXK_TOOLBAR_SPACE - add a vertical space; GXK_TOOLBAR_SEPARATOR - add a vertical seperator; GXK_TOOLBAR_BUTTON - add a button widget; GXK_TOOLBAR_TRUNC_BUTTON - like GXK_TOOLBAR_BUTTON, but clip the name label if it width exceeds the button size; GXK_TOOLBAR_EXTRA_BUTTON - like GXK_TOOLBAR_BUTTON, but leave the button's size alone, it is not made homogeneous with other toolbar children. GXK_TOOLBAR_TOGGLE - add a toggle button widget; GXK_TOOLBAR_TRUNC_TOGGLE - like GXK_TOOLBAR_TRUNC_BUTTON for toggle buttons; GXK_TOOLBAR_EXTRA_TOGGLE - like GXK_TOOLBAR_EXTRA_BUTTON for toggle buttons; GXK_TOOLBAR_WIDGET - treat icon as a custom widget, and don't put it into a button, toggle button or other activatable container; GXK_TOOLBAR_TRUNC_WIDGET - like GXK_TOOLBAR_TRUNC_BUTTON for custom widgets; GXK_TOOLBAR_EXTRA_WIDGET - like GXK_TOOLBAR_EXTRA_BUTTON for custom widgets; GXK_TOOLBAR_FILL_WIDGET - like GXK_TOOLBAR_EXTRA_WIDGET but extra unused space of the toolbar is given to this child. gxk_toolbar_append_choice(self, child_type, choice_func, data, data_free); GxkToolbar* self; a toolbar as returned from gxk_toolbar_new() GxkToolbarChild child_type; child type (one of the button variants) GxkToolbarChoiceFunc choice_func; callback notified if the choice changes gpointer data; extra data argument to the callback GDestroyNotify data_free; callback to destroy data RETURNS: newly created toolbar choice child Create and append a new toolbar child which offers a choice menu of various options to the user. gxk_toolbar_append_stock(self, child_type, name, tooltip, stock_id); GxkToolbar* self; a toolbar as returned from gxk_toolbar_new() GxkToolbarChild child_type; child type const gchar* name; name of the child wiget (underscores indicate hotkeys) const gchar* tooltip; tooltip to be displayed with this child const gchar* stock_id; stock name RETURNS: newly created toolbar child Like gxk_toolbar_append() but create the icon widget from stock_id. gxk_toolbar_choice_add(widget, name, tooltip, icon, choice); GtkWidget* widget; a toolbar child as returned from gxk_toolbar_append_choice() const gchar* name; name of the choice item const gchar* tooltip; tooltip to be displayed with this choice item GtkWidget* icon; image widget for this choice guint choice; unique integer id to identify this choice RETURNS: newly created toolbar choice item Add a choice item to a toolbar choice child. gxk_toolbar_choice_is_item(item); GtkWidget* item; a valid GtkWidget RETURNS: either TRUE or FALSE Check whether the passed in widget is a choice item as returned from gxk_toolbar_choice_add() (so calling e.g. gxk_toolbar_choice_is_selected() is safe on this widget). gxk_toolbar_choice_is_selected(item); GtkWidget* item; a toolbar choice child as returned from gxk_toolbar_choice_add() RETURNS: either TRUE or FALSE depending on whether item is selected Check whether the passed in choice item is currently selected. gxk_toolbar_choice_select(item); GtkWidget* item; a toolbar choice child as returned from gxk_toolbar_choice_add() Select the passed in choice item. gxk_toolbar_choice_set(widget, name, tooltip, icon, choice); GtkWidget* widget; a toolbar child as returned from gxk_toolbar_append_choice() const gchar* name; name of the choice item const gchar* tooltip; tooltip to be displayed with this choice item GtkWidget* icon; image widget for this choice guint choice; unique integer id to identify this choice RETURNS: newly created toolbar choice item Add a choice item to a toolbar choice child and make this item the currently selected one. gxk_toolbar_new(nullify_pointer); gpointer nullify_pointer; location of a pointer to nullify or NULL RETURNS: newly created toolbar Create a new toolbar and setup handlers to nullify nullify_pointer once the toolbar is destructed. gxk_toplevel_activate_default(widget); GtkWidget* widget; a widget having a toplevel Activate the default widget of the toplevel of widget. gxk_toplevel_delete(widget); GtkWidget* widget; a widget having a toplevel This function is usefull to produce the exact same effect as if the user caused window manager triggered window deletion on the toplevel of widget. gxk_toplevel_hide(widget); GtkWidget* widget; a widget having a toplevel Hide the toplevel of widget. gxk_tree_path_prev(path); GtkTreePath* path; valid GtkTreePath Workaround for gtk_tree_path_prev() which corrupts memory if called on empty paths (up to version 2.2 at least). gxk_tree_selection_force_browse(selection, model); GtkTreeSelection* selection; GtkTreeSelection to watch GtkTreeModel* model; tree model used with selection Watch deletion and insertions into empty trees to ensure valid selections across these events. gxk_tree_selection_select_ipath(selection, ...); selection; GtkTreeSelection to modify ...; GtkTreePath indices Select the row denoted by the path to be constructed from the -1 terminated indices. gxk_tree_selection_select_spath(selection, str_path); GtkTreeSelection* selection; GtkTreeSelection to modify const gchar* str_path; a stringified GtkTreePath Select the row denoted by str_path. gxk_tree_selection_unselect_ipath(selection, ...); selection; GtkTreeSelection to modify ...; GtkTreePath indices Select the row denoted by the path to be constructed from the -1 terminated indices. gxk_tree_selection_unselect_spath(selection, str_path); GtkTreeSelection* selection; GtkTreeSelection to modify const gchar* str_path; a stringified GtkTreePath Unselect the row denoted by str_path. gxk_tree_spath_index0(strpath); const gchar* strpath; stringified GtkTreePath Return index[0] of strpath. Usefull for paths in lists, where index[0] usually corresponds to the nth row. gxk_tree_view_add_column(tree_view, position, column, cell, ...); tree_view; valid GtkTreeView position; column position (or -1 to append) column; valid GtkTreeViewColumn cell; valid GtkCellRenderer ...; attribute mappings Appends cell to column and adds column to tree_view at the specified position. This function takes a NULL-terminated list of attribute mappings consisting of a string and a guint, mapping cell attributes to model columns as documented in gtk_tree_view_column_add_attribute(). gxk_tree_view_add_popup_column(tree_view, model_column, xalign, title, tooltip, edited_callback, data, cflags); GtkTreeView* tree_view; valid GtkTreeView guint model_column; model column gdouble xalign; horizontal text alignment const gchar* title; column title const gchar* tooltip; column tooltip gpointer edited_callback; notification callback gpointer data; data passed in to toggled_callback GConnectFlags cflags; connection flags Add a text column with popup facility, similar to gxk_tree_view_add_text_column(). gxk_tree_view_add_text_column(tree_view, model_column, xalign, title, tooltip, edited_callback, data, cflags); GtkTreeView* tree_view; valid GtkTreeView guint model_column; model column gdouble xalign; horizontal text alignment const gchar* title; column title const gchar* tooltip; column tooltip gpointer edited_callback; notification callback gpointer data; data passed in to toggled_callback GConnectFlags cflags; connection flags Add a text column, similar to gxk_tree_view_append_text_columns(). edited_callback(data) is connected with cflags (see g_signal_connect_data()) to the "edited" signal of the text cell, or passed as NULL which makes the column non-editable. gxk_tree_view_add_toggle_column(tree_view, model_column, xalign, title, tooltip, toggled_callback, data, cflags); GtkTreeView* tree_view; valid GtkTreeView guint model_column; model column gdouble xalign; horizontal text alignment const gchar* title; column title const gchar* tooltip; column tooltip gpointer toggled_callback; notification callback gpointer data; data passed in to toggled_callback GConnectFlags cflags; connection flags Add a toggle button column, similar to gxk_tree_view_add_text_column(). edited_callback(data) is connected with cflags (see g_signal_connect_data()) to the "toggled" signal of the toggle cell, or passed as NULL which makes the column non-editable. gxk_tree_view_append_text_columns(tree_view, n_cols, ...); tree_view; valid GtkTreeView n_cols; number of columns to append ...; column arguments Add n_cols new columns with text cells to tree_view. Per column, the caller needs to supply a guint, a gdouble and a string, to be used as model column number (for the text to be displayed), the horizontal cell alignment (between 0 and 1) and the column title respectively. gxk_tree_view_column_set_tip_title(tree_column, title, tooltip); GtkTreeViewColumn* tree_column; valid GtkTreeViewColumn const gchar* title; column title const gchar* tooltip; column tooltip Set a tree view column title and its tooltip. This is a bug workaroud for missing tree view column API to set tooltips, so the column title or column title widget shouldn't be changed after calling this function. gxk_tree_view_focus_row(tree, row); GtkTreeView* tree; valid GtkTreeView gint row; row to focus Force focus to row, causes automatic selection of row in browse mode. gxk_tree_view_get_bin_window_pos(tree, x_p, y_p); GtkTreeView* tree; valid GtkTreeView gint* x_p; x position gint* y_p; y position Retrieve the position of the bin window (row display area) of a GtkTreeView widget once it's realized. gxk_tree_view_get_row_area(tree, row, y_p, height_p); GtkTreeView* tree; valid GtkTreeView gint row; row to retrieve area coordinates for gint* y_p; y position of row gint* height_p; height of row Retrieve the position and height of a row of a GtkTreeView widget within its bin window. gxk_tree_view_get_row_from_coord(tree, y, row_p); GtkTreeView* tree; valid GtkTreeView gint y; bin window y coordinate gint* row_p; row pointed to by y RETURNS: whether y lies within the visible area Retrieve the row within which y lies. If y lies outside the visible area, the row is clamped to visible rows. gxk_tree_view_get_selected_row(tree); GtkTreeView* tree; valid GtkTreeView RETURNS: first selected row or -1 Retrieve the selected row in browse mode (for other selection modes, return the first selected row if any). gxk_tree_view_is_row_selected(tree, row); GtkTreeView* tree; valid GtkTreeView gint row; row to test RETURNS: whether row is selected Check whether row in tree is selected. gxk_type_register_generated(n_entries, entries); guint n_entries; number of generated types to register const GxkTypeGenerated* entries; GxkTypeGenerated type descriptions Register each of the generated type entries with the type system. Currently supported parent types are G_TYPE_ENUM and G_TYPE_FLAGS in which cases the type_data member must point to a NULL terminated array of GEnumValue or GFlagValue structures. No extra copying is performed, so the passed in structures have to persist throughout runtime. gxk_widget_activate_accel_group(widget, accel_group); GtkWidget* widget; a valid GtkWidget GtkAccelGroup* accel_group; a valid GtkAccelGroup Activate accelerators within accel group when widget receives key press events. This function isn't pure convenience, as it works around Gtk 2.2 not exporting _gtk_accel_group_activate(), _gtk_accel_group_attach() or _gtk_accel_group_detach(). gxk_widget_force_bg_clear(widget); GtkWidget* widget; a valid GtkWidget Enforce drawing of a widget's background. Some widgets do not explicitely draw their background, but simply draw themsleves on top of their parent's background. This function forces the widget into drawing its background according to its style settings. gxk_widget_make_insensitive(widget); GtkWidget* widget; a valid GtkWidget This function is euqivalent to gtk_widget_set_sensitive (widget, FALSE); It exists as a convenient signal connection callback. gxk_widget_make_sensitive(widget); GtkWidget* widget; a valid GtkWidget This function is euqivalent to gtk_widget_set_sensitive (widget, TRUE); It exists as a convenient signal connection callback. gxk_widget_modify_as_title(widget); GtkWidget* widget; a valid GtkWidget Modify the widget and it's style, so that it is insensitive, but doesn't quite look that way. Usefull for inactive title menu items in menus. gxk_widget_modify_base_as_bg(widget); GtkWidget* widget; a valid GtkWidget Modify the widget's base background (used by list and text widgets) to look like an ordinary widget background. This is usefull if a list, text or similar widget shouldn't stand out as such, e.g. when the GtkTextView widget displaying a long non-editable text should look similar to a GtkLabel. gxk_widget_modify_bg_as_base(widget); GtkWidget* widget; a valid GtkWidget Modify the widget's background to look like the background of a text or list widget (usually white). This is usefull if a hbox or similar widget is used to "simulate" a list, text, or similar widget. gxk_widget_showraise(widget); GtkWidget* widget; a valid widget Show the widget. If the widget is a toplevel, also raise its window to top. gxk_window_process_next(window, update_children); GdkWindow* window; valid GdkWindow gboolean update_children; whether to also process updates for child windows Cause window to be updated asyncronously as soon as possible via gdk_window_process_updates(). gxk_window_set_cursor_type(window, cursor); GdkWindow* window; valid GdkWindow* GdkCursorType cursor; GdkCursorType cursor type Set a window's cursor type. If GXK_DEFAULT_CURSOR is specified the window's cursor will be inherited from it's parent. Document Revised: Thu Mar 13 21:47:17 CET 2003 + NAME GXK-Functions - Gtk+ Extension Kit Function Reference Document Revised: Sun Apr 13 22:19:14 CEST 2003 SYNOPSIS bst_gmask_container_create(border_width, dislodge_columns);bst_gmask_foreach(mask, func, data);bst_gmask_form(gmask_container, action, gpack);bst_gmask_get_action(mask);bst_gmask_get_ahead(mask);bst_gmask_get_atail(mask);bst_gmask_get_aux1(mask);bst_gmask_get_aux2(mask);bst_gmask_get_aux3(mask);bst_gmask_get_prompt(mask);bst_gmask_pack(mask);bst_gmask_quick(gmask_container, column, prompt, action, tip_text);bst_gmask_set_ahead(mask, widget);bst_gmask_set_atail(mask, widget);bst_gmask_set_aux1(mask, widget);bst_gmask_set_aux2(mask, widget);bst_gmask_set_aux3(mask, widget);bst_gmask_set_column(mask, column);bst_gmask_set_prompt(mask, widget);bst_gmask_set_tip(mask, tip_text);g_object_get_double(object, name);g_object_get_long(object, name);g_object_set_double(object, name, v_double);g_object_set_long(object, name, v_long);gnome_canvas_set_zoom(canvas, pixels_per_unit);gnome_canvas_text_set_zoom_size(item, pixels);gtk_notebook_current_widget(notebook);gxk_cell_editable_canceled(ecell);gxk_cell_editable_focus_out_handler(ecell);gxk_cell_renderer_popup_get_type();gxk_color_alloc(colormap, color);gxk_dialog_action*(dialog, action, callback, data);gxk_dialog_add_flags(dialog, flags);gxk_dialog_clear_flags(dialog, flags);gxk_dialog_get_child(dialog);gxk_dialog_get_status_window();gxk_dialog_new(pointer_loc, alive_object, flags, title, child);gxk_dialog_remove_actions(dialog);gxk_dialog_set_child(dialog, child);gxk_dialog_set_title(dialog, title);gxk_file_selection_heal(fs);gxk_idle_show_widget(widget);gxk_item_factory_get_item(ifactory, path);gxk_item_factory_get_widget(ifactory, path);gxk_led_new(color);gxk_led_set_color(self, color);gxk_notebook_append(notebook, child, label);gxk_notebook_set_current_page_widget(notebook, page);gxk_object_derive();gxk_polygon_new(polygon_graph);gxk_polygon_set_arcs(self, n_arcs, arcs);gxk_polygon_set_graph(self, polygon_graph);gxk_polygon_set_length(self, length);gxk_polygon_set_lines(self, n_lines, lines);gxk_proxy_editable_get_type();gxk_proxy_editable_set_cell_editable(self, ecell);gxk_scroll_text_advance(sctext, uri);gxk_scroll_text_append(sctext, string);gxk_scroll_text_append_file(sctext, file_name);gxk_scroll_text_append_file_tsm(sctext, file_name);gxk_scroll_text_append_tsm(sctext, string);gxk_scroll_text_aprintf(sctext, text_fmt);gxk_scroll_text_clear(sctext);gxk_scroll_text_create(flags, string);gxk_scroll_text_display(sctext, uri);gxk_scroll_text_enter(sctext, uri);gxk_scroll_text_get_text_view(sctext);gxk_scroll_text_pop_indent(sctext);gxk_scroll_text_push_indent(sctext);gxk_scroll_text_rewind(sctext);gxk_scroll_text_set(sctext, string);gxk_scroll_text_set_index(sctext, uri);gxk_scroll_text_set_tsm(sctext, string);gxk_signal_handler_pending(instance, detailed_signal, callback, data);gxk_size_group(sgmode, ...);gxk_size_height(icon_size);gxk_size_width(icon_size);gxk_status_bar_create();gxk_status_clear();gxk_status_errnoprintf(libc_errno, message_fmt);gxk_status_printf(percentage, status_msg, message_fmt);gxk_status_set(percentage, message, status_msg);gxk_status_window_pop();gxk_status_window_push(widget);gxk_stock_button(stock_id, label);gxk_stock_button_child(stock_id, label);gxk_stock_fallback_pixbuf(stock_id);gxk_stock_icon_window(stock_id);gxk_stock_image(stock_icon_id, icon_size);gxk_stock_register_action(action);gxk_stock_register_actions(n_actions, actions);gxk_stock_register_icon(icon);gxk_stock_register_icons(n_icons, icons);gxk_text_view_cursor_to_end(tview);gxk_text_view_cursor_to_start(tview);gxk_text_view_enter_browse_mode(tview);gxk_text_view_leave_browse_mode(tview);gxk_toolbar_append(self, child_type, name, tooltip, icon);gxk_toolbar_append_choice(self, child_type, choice_func, data, data_free);gxk_toolbar_append_stock(self, child_type, name, tooltip, stock_id);gxk_toolbar_choice_add(widget, name, tooltip, icon, choice);gxk_toolbar_choice_is_item(item);gxk_toolbar_choice_is_selected(item);gxk_toolbar_choice_select(item);gxk_toolbar_choice_set(widget, name, tooltip, icon, choice);gxk_toolbar_new(nullify_pointer);gxk_toplevel_activate_default(widget);gxk_toplevel_delete(widget);gxk_toplevel_hide(widget);gxk_tree_path_prev(path);gxk_tree_selection_force_browse(selection, model);gxk_tree_selection_select_ipath(selection, ...);gxk_tree_selection_select_spath(selection, str_path);gxk_tree_selection_unselect_ipath(selection, ...);gxk_tree_selection_unselect_spath(selection, str_path);gxk_tree_spath_index0(strpath);gxk_tree_view_add_column(tree_view, position, column, cell, ...);gxk_tree_view_add_popup_column(tree_view, model_column, xalign, title, tooltip, edited_callback, data, cflags);gxk_tree_view_add_text_column(tree_view, model_column, xalign, title, tooltip, edited_callback, data, cflags);gxk_tree_view_add_toggle_column(tree_view, model_column, xalign, title, tooltip, toggled_callback, data, cflags);gxk_tree_view_append_text_columns(tree_view, n_cols, ...);gxk_tree_view_column_set_tip_title(tree_column, title, tooltip);gxk_tree_view_focus_row(tree, row);gxk_tree_view_get_bin_window_pos(tree, x_p, y_p);gxk_tree_view_get_row_area(tree, row, y_p, height_p);gxk_tree_view_get_row_from_coord(tree, y, row_p);gxk_tree_view_get_selected_row(tree);gxk_tree_view_is_row_selected(tree, row);gxk_type_register_generated(n_entries, entries);gxk_widget_activate_accel_group(widget, accel_group);gxk_widget_force_bg_clear(widget);gxk_widget_make_insensitive(widget);gxk_widget_make_sensitive(widget);gxk_widget_modify_as_title(widget);gxk_widget_modify_base_as_bg(widget);gxk_widget_modify_bg_as_base(widget);gxk_widget_proxy_requisition(widget);gxk_widget_showraise(widget);gxk_window_process_next(window, update_children);gxk_window_set_cursor_type(window, cursor); DESCRIPTION bst_gmask_container_create(border_width, dislodge_columns); guint border_width; Border width of this GUI mask gboolean dislodge_columns; Provide expandable space between columns RETURNS: GUI field mask container Create a container capable to hold GUI field masks. This is the container to be passed into bst_gmask_form(). In case multiple field mask columns are packed into the container (by using bst_gmask_set_column() on the filed masks), dislodge_columns specifies whether the field mask columns are to be closely aligned. bst_gmask_foreach(mask, func, data); BstGMask* mask; valid BstGMask gpointer func; foreach function as: void func(GtkWidget*, gpointer data); gpointer data; data passed in to func Invoke func() with each of the widgets set for this field mask. bst_gmask_form(gmask_container, action, gpack); GtkWidget* gmask_container; container created with bst_gmask_container_create() GtkWidget* action; valid GtkWidget BstGMaskPack gpack; BstGMaskPack packing type RETURNS: a new GUI field mask Create a new GUI field mask with action as action widget. Each GUI field mask consists of an action widget which may be neighboured by pre and post action widgets, the action widget is usually something like a GtkEntry input widget. Also, most field masks have a prompt widget, usually a GtkLabel, labeling the field mask with a name. Optionally, up to three auxillary widgets are supported per field mask, layed out between the prompt and the action widgets. The second auxillary widget will expand if additional space is available. Other layout details are configured through the gpack packing type: BST_GMASK_FIT - the action widget is not expanded, BST_GMASK_FILL - the action widget can expand within the action column, BST_GMASK_INTERLEAVE - allow the action widget to expand across auxillary columns if it requests that much space, BST_GMASK_BIG - force expansion of the action widget across all possible columns up to the prompt. bst_gmask_get_action(mask); BstGMask* mask; valid BstGMask RETURNS: the requested GtkWidget or NULL Retrieve the action widget of this GUI field mask. bst_gmask_get_ahead(mask); BstGMask* mask; valid BstGMask RETURNS: the requested GtkWidget or NULL Retrieve the pre action widget of this GUI field mask. bst_gmask_get_atail(mask); BstGMask* mask; valid BstGMask RETURNS: the requested GtkWidget or NULL Retrieve the post action widget of this GUI field mask. bst_gmask_get_aux1(mask); BstGMask* mask; valid BstGMask RETURNS: the requested GtkWidget or NULL Retrieve the first auxillary widget of this GUI field mask. bst_gmask_get_aux2(mask); BstGMask* mask; valid BstGMask RETURNS: the requested GtkWidget or NULL Retrieve the second auxillary widget of this GUI field mask. bst_gmask_get_aux3(mask); BstGMask* mask; valid BstGMask RETURNS: the requested GtkWidget or NULL Retrieve the third auxillary widget of this GUI field mask. bst_gmask_get_prompt(mask); BstGMask* mask; valid BstGMask RETURNS: the requested GtkWidget or NULL Retrieve the prompt widget of this GUI field mask. bst_gmask_pack(mask); BstGMask* mask; valid BstGMask After the GUI field mask is fully configured, by setting all associated widgets on it, column tooltip text, etc., this function actually packs it into its container. The field mask setters shouldn't be used after this point. bst_gmask_quick(gmask_container, column, prompt, action, tip_text); GtkWidget* gmask_container; container created with bst_gmask_container_create() guint column; column number for bst_gmask_set_column() const gchar* prompt; valid GtkWidget for bst_gmask_set_prompt() gpointer action; valid GtkWidget as with bst_gmask_form() const gchar* tip_text; text for bst_gmask_set_tip() RETURNS: an already packed GUI field mask Shorthand to form a GUI field mask in column of type BST_GMASK_FILL, with prompt and tip_text. Note that this function already calls bst_gmask_pack(), so the returned field mask already can't be modified anymore. bst_gmask_set_ahead(mask, widget); BstGMask* mask; valid BstGMask gpointer widget; valid GtkWidget Set the pre action widget of this GUI field mask. bst_gmask_set_atail(mask, widget); BstGMask* mask; valid BstGMask gpointer widget; valid GtkWidget Set the post action widget of this GUI field mask. bst_gmask_set_aux1(mask, widget); BstGMask* mask; valid BstGMask gpointer widget; valid GtkWidget Set the first auxillary widget of this GUI field mask. bst_gmask_set_aux2(mask, widget); BstGMask* mask; valid BstGMask gpointer widget; valid GtkWidget Set the second auxillary widget of this GUI field mask. In contrast to the first and third auxillary widget, this one is expanded if extra space is available. bst_gmask_set_aux3(mask, widget); BstGMask* mask; valid BstGMask gpointer widget; valid GtkWidget Set the third auxillary widget of this GUI field mask. bst_gmask_set_column(mask, column); BstGMask* mask; valid BstGMask guint column; column number Set the field mask column. By default all field masks are packed into column 0, so that only vertical packing occours. bst_gmask_set_prompt(mask, widget); BstGMask* mask; valid BstGMask gpointer widget; valid GtkWidget Set the prompt widget of this GUI field mask. bst_gmask_set_tip(mask, tip_text); BstGMask* mask; valid BstGMask const gchar* tip_text; tooltip text Set the tooltip text of this GUI field mask. g_object_get_double(object, name); gpointer object; a valid GObject const gchar* name; name of the double value to retrieve RETURNS: the actual value Convenience variant of g_object_get_data() to retrieve a double instead of a pointer. g_object_get_long(object, name); gpointer object; a valid GObject const gchar* name; name of the long value to retrieve RETURNS: the actual value Convenience variant of g_object_get_data() to retrieve a long instead of a pointer. g_object_set_double(object, name, v_double); gpointer object; a valid GObject const gchar* name; name of the double value to set gdouble v_double; the actual value Convenience variant of g_object_set_data() to set a double instead of a pointer. g_object_set_long(object, name, v_long); gpointer object; a valid GObject const gchar* name; name of the long value to set glong v_long; the actual value Convenience variant of g_object_set_data() to set a long instead of a pointer. gnome_canvas_set_zoom(canvas, pixels_per_unit); GnomeCanvas* canvas; valid GnomeCanvas gdouble pixels_per_unit; zoom factor (defaults to 1.0) This function calls gnome_canvas_set_pixels_per_unit() with its arguments and in addition adjusts the font sizes of all canvas text items where gnome_canvas_text_set_zoom_size() was used before. gnome_canvas_text_set_zoom_size(item, pixels); GnomeCanvasText* item; canvas text item gdouble pixels; default font size Set the default font size in pixels of a canvas text item. The size will be adjusted when the canvas zoomed via gnome_canvas_set_zoom(). gtk_notebook_current_widget(notebook); GtkNotebook* notebook; valid GtkNotebook RETURNS: the widget corresponding to the current page This function is essentially a shortcut for gtk_notebook_get_current_page() and gtk_notebook_get_nth_page(). gxk_cell_editable_canceled(ecell); GtkCellEditable* ecell; valid GtkCellEditable RETURNS: whether editing got aborted Return whether editing was canceled (currently supported by GtkEntry and triggered by pressing Escape during editing). gxk_cell_editable_focus_out_handler(ecell); GtkCellEditable* ecell; valid GtkCellEditable RETURNS: returns FALSE Call gtk_cell_editable_editing_done() if necessary and return FALSE. This function is meant to be used to handle focus out events on GtkCellEditable widgets. gxk_cell_renderer_popup_get_type(); RETURNS: GXK_TYPE_CELL_RENDERER_POPUP GxkCellRendererPopup is an editable text cell renderer which supports popping up an auxillary window. gxk_color_alloc(colormap, color); GdkColormap* colormap; valid GdkColormap GdkColor* color; valid GdkColor Allocate a color like gdk_color_alloc() with automated error checking. gxk_dialog_action*(dialog, action, callback, data); dialog; valid GxkDialog action; button label or stock ID callback; callback function for button activation data; callback data Add a new (stock) button to a dialog. gxk_dialog_add_flags(dialog, flags); GxkDialog* dialog; valid GxkDialog GxkDialogFlags flags; additional flags to set on the dialog. Alter dialog flags, see gxk_dialog_new(). gxk_dialog_clear_flags(dialog, flags); GxkDialog* dialog; valid GxkDialog GxkDialogFlags flags; flags to unset on the dialog. Alter dialog flags, see gxk_dialog_new(). gxk_dialog_get_child(dialog); GxkDialog* dialog; valid GxkDialog Retrieve the primary child of the dialog. gxk_dialog_get_status_window(); RETURNS: a valid GxkDialog or NULL Retrieve the most recently entered GxkDialog if any. gxk_dialog_new(pointer_loc, alive_object, flags, title, child); gpointer pointer_loc; pointer to nullify upon dialog destruction GtkObject* alive_object; object which upon destruction, takes the dialog with it GxkDialogFlags flags; dialog flags const gchar* title; window title for the dialog GtkWidget* child; child to pack into the dialog Create a new configurable dialog. Possible values for the flags are: GXK_DIALOG_HIDE_ON_DELETE: only hide and not desroy the dialog upon window manager delete events; GXK_DIALOG_STATUS_SHELL: the dialog has a status bar and acts as a shell window for primary application data; GXK_DIALOG_MODAL: the dialog is modal while visible; GXK_DIALOG_POPUP_POS: popup the dialog below mouse pointer; GXK_DIALOG_DELETE_BUTTON: add a "Close" button to the dialog (not recommended for GXK_DIALOG_STATUS_SHELL dialogs, which usually have menus). gxk_dialog_remove_actions(dialog); GxkDialog* dialog; valid GxkDialog Remove all action buttons setup for this dialog. gxk_dialog_set_child(dialog, child); GxkDialog* dialog; valid GxkDialog GtkWidget* child; new child Change the dialog's primary child to child. Destroys the old child if any. gxk_dialog_set_title(dialog, title); GxkDialog* dialog; valid GxkDialog const gchar* title; dialog window manager title Change the dialog's window manager title and role. gxk_file_selection_heal(fs); GtkFileSelection* fs; valid GtkFileSelection Fixup various oddities that happened to the Gtk+ file selection widget over time. This function corrects container border widths, spacing, button placement and the default and focus widgets. gxk_idle_show_widget(widget); GtkWidget* widget; a valid widget Defer showing this widget until the next idle handler is run. This is usefull if other things are pending which need to be processed first, for instance hiding other toplevels. gxk_item_factory_get_item(ifactory, path); GtkItemFactory* ifactory; valid GtkItemFactory const gchar* path; item factory path RETURNS: menu item according to path This function strips unescaped underlines ('_') from path and then calls gtk_item_factory_get_item(). gxk_item_factory_get_widget(ifactory, path); GtkItemFactory* ifactory; valid GtkItemFactory const gchar* path; item factory path RETURNS: widget according to path This function strips unescaped underlines ('_') from path and then calls gtk_item_factory_get_widget(). gxk_led_new(color); guint color; rgb color Create a new led widget. It's active color can be specified as 24bit RGB color value. gxk_led_set_color(self, color); GxkLed* self; valid GxkLed guint color; color as RGB byte triple Set the current led color as 24bit RGB values. gxk_notebook_append(notebook, child, label); GtkNotebook* notebook; a valid notebook GtkWidget* child; a valid parent-less widget const gchar* label; notebook page name Add a new page containing child to notebook, naming the page label. gxk_notebook_set_current_page_widget(notebook, page); GtkNotebook* notebook; valid GtkNotebook GtkWidget* page; notebook page widget Set the current notebook page from a page widget, instead of a page number. gxk_object_derive(); Derive a new object type, giving a list of methods which are implemented for this new object type. gxk_polygon_new(polygon_graph); GxkPolygonGraph* polygon_graph; set of lines and arcs Create a new polygon widget. gxk_polygon_set_arcs(self, n_arcs, arcs); GxkPolygon* self; valid GxkPolygon guint n_arcs; number of arcs GxkPolygonArc* arcs; array of arcs Set the arcs for this polygon. The direction of an arc determines it's shadow type. gxk_polygon_set_graph(self, polygon_graph); GxkPolygon* self; valid GxkPolygon GxkPolygonGraph* polygon_graph; set of lines and arcs Set the lines and arcs for this polygon, see gxk_polygon_set_lines() and gxk_polygon_set_arcs(). gxk_polygon_set_length(self, length); GxkPolygon* self; valid GxkPolygon guint length; set of lines and arcs Set the desired width and height for this polygon to length. gxk_polygon_set_lines(self, n_lines, lines); GxkPolygon* self; valid GxkPolygon guint n_lines; number of lines GxkPolygonLine* lines; array of lines Set the lines for this polygon. The direction of a line determines it's shadow type. gxk_proxy_editable_get_type(); RETURNS: GXK_TYPE_PROXY_EDITABLE GxkProxyEditable is a GtkEventBox which proxies the GtkCellEditable interface onto a backend widget which also implements the GtkCellEditable interface. gxk_proxy_editable_set_cell_editable(self, ecell); GxkProxyEditable* self; valid GxkProxyEditable GtkCellEditable* ecell; valid GtkCellEditable Set the backend ecell onto which GtkCellEditable methods issued on self are to be forwarded. This function may only be called once per GxkProxyEditable. gxk_scroll_text_advance(sctext, uri); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* uri; resource locator Relative to the url currently being displayed load and display the possibly partial (relative) url uri. Navigation history is affected. gxk_scroll_text_append(sctext, string); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* string; the text to be displayed Append string to the textual contents of this sctext. gxk_scroll_text_append_file(sctext, file_name); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* file_name; file holding the text to be displayed Append the contents of file_name to the textual contents of this sctext. gxk_scroll_text_append_file_tsm(sctext, file_name); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* file_name; file holding the text to be displayed in tag-span-markup Append the contents of file_name to the textual contents of this sctext, where those contents are marked up with tag-span-markup. gxk_scroll_text_append_tsm(sctext, string); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* string; the text to be displayed in tag-span-markup Append string to the textual contents of this sctext, where string is marked up with tag-span-markup. gxk_scroll_text_aprintf(sctext, text_fmt); sctext; a scroll text widget as returned from gxk_scroll_text_create() text_fmt; printf(3) style format string Append text_fmt to the textual contents of this sctext. gxk_scroll_text_clear(sctext); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() Clear the textual contents of this sctext and reset the indentation level. gxk_scroll_text_create(flags, string); GxkScrollTextFlags flags; const gchar* string; default contents Create a scrollable text view. Behaviour and apperance can GXK_SCROLL_TEXT_MONO - use a fixed width font; GXK_SCROLL_TEXT_SANS - use a sans serif font; GXK_SCROLL_TEXT_SERIF - use a serif font; GXK_SCROLL_TEXT_WRAP - allow word wrapping of string; GXK_SCROLL_TEXT_CENTER - center string; GXK_SCROLL_TEXT_WIDGET_BG - do not use white as background, but keep the usual (grey) widget background; GXK_SCROLL_TEXT_NAVIGATABLE - add a navigation bar and allow the user to navigate through clickable links; GXK_SCROLL_TEXT_EDITABLE - permit modifications of the text; GXK_SCROLL_TEXT_WIDGET_LOOK - this is a combination of flags to adjust the scroll text to look like an ordinary GtkLabel, which amounts to using a sans serif font, normal widget background and allowing word wrapping. gxk_scroll_text_display(sctext, uri); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* uri; resource locator Load and display the resource from uri without altering the navigation history. gxk_scroll_text_enter(sctext, uri); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* uri; resource locator Load and display the url uri. Navigation history is affected. gxk_scroll_text_get_text_view(sctext); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() RETURNS: a GtkTextView widget Return the internally used GtkTextView of this sctext. gxk_scroll_text_pop_indent(sctext); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() Decrement the global indentation level after a previous increment with gxk_scroll_text_push_indent(). gxk_scroll_text_push_indent(sctext); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() Increment the global indentation level, which affects overall indentation of text added with gxk_scroll_text_append() and friends. gxk_scroll_text_rewind(sctext); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() Go back in navigation history as far as possible. gxk_scroll_text_set(sctext, string); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* string; the new text to be displayed Replace the textual contents of this sctext with string. gxk_scroll_text_set_index(sctext, uri); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* uri; resource locator Affect what uri is being displayed by pressing on the "Index" navigation button. gxk_scroll_text_set_tsm(sctext, string); GtkWidget* sctext; a scroll text widget as returned from gxk_scroll_text_create() const gchar* string; the new text to be displayed in tag-span-markup Replace the textual contents of this sctext with string, where string is marked up with tag-span-markup. gxk_signal_handler_pending(instance, detailed_signal, callback, data); gpointer instance; object instance with signals const gchar* detailed_signal; signal name GCallback callback; custom callback function gpointer data; callback data RETURNS: whether callback is connected Find out whether a specific callback is pending for a specific signal on an instance. detailed_signal may be NULL to act as a wildcard. TRUE is returned if the callback is found, FALSE otherwise. gxk_size_group(sgmode, ...); sgmode; size group mode, one of GTK_SIZE_GROUP_NONE, ...; NULL terminated list of widgets to group together GTK_SIZE_GROUP_HORIZONTAL, GTK_SIZE_GROUP_VERTICAL or GTK_SIZE_GROUP_BOTH Group horizontal and/or vertical resizing behaviour of widgets. See gtk_size_group_set_mode() on the effect of the various grouping modes. gxk_size_height(icon_size); GtkIconSize icon_size; image size id RETURNS: image size height Return the height of a specific image size. gxk_size_width(icon_size); GtkIconSize icon_size; image size id RETURNS: image size width Return the width of a specific image size. gxk_status_bar_create(); RETURNS: status bar container Create a status bar suitable to be packed into windows with status bar support. gxk_status_clear(); Clear the current status bar. gxk_status_errnoprintf(libc_errno, message_fmt); libc_errno; errno value message_fmt; printf style message to be displayed Similar to gxk_status_printf() but figures the error status automatically from the passed in libc_errno. gxk_status_printf(percentage, status_msg, message_fmt); percentage; progress percentage status_msg; error status message_fmt; printf style message to be displayed Similar to gxk_status_set() but supports construction of the message through a printf(3) style argument list. gxk_status_set(percentage, message, status_msg); gfloat percentage; progress percentage const gchar* message; message to be displayed const gchar* status_msg; error status Set the current status bar message, progress percentage (usually 0% - 100% or one of the special values: GXK_STATUS_ERROR, GXK_STATUS_WAIT, GXK_STATUS_IDLE, GXK_STATUS_IDLE_HINT or GXK_STATUS_PROGRESS) and error status. gxk_status_window_pop(); Pop the most recently pushed window from the status bar window stack. gxk_status_window_push(widget); gpointer widget; status bar window Push a window onto the stack of windows that have the current status bar. gxk_stock_button(stock_id, label); const gchar* stock_id; stock name const gchar* label; button text RETURNS: a visible GtkButton widget Create a GtkButton widget with a stock image and custom label text. gxk_stock_button_child(stock_id, label); const gchar* stock_id; stock name const gchar* label; button text RETURNS: a visible widget suitable as GtkButton child This function does the same as gxk_stock_button() except for creating the actual button. The button's child is instead returned to the caller, this might e.g. be usefull if a button is created containing multiple children which are shown only selectively during runtime. gxk_stock_fallback_pixbuf(stock_id); const gchar* stock_id; stock name RETURNS: this stock_id's pixbuf (or NULL for invalid stock ids) Return the pixbuf associated with stock_id, the pixbuf is owned by the stock system and persists throughout runtime. To display stock icons in widgets use gxk_stock_image() and not this pixbuf. gxk_stock_icon_window(stock_id); const gchar* stock_id; a valid stock icon name RETURNS: a window showing the stock icon Create a window displaying a stock icon which is transparent according to the icon's alpha mask. Such windows are mostly usefull to implement drag-and-drop operations with stock icons. gxk_stock_image(stock_icon_id, icon_size); const gchar* stock_icon_id; stock name GtkIconSize icon_size; image size RETURNS: a visible GtkImage widget or NULL Create a GtkImage widget with a stock image of a certain size, or return NULL if the image doesn't exist. The returned image widget correctly displays the stock icon, honouring prelight and sensitivity state of the widget. gxk_stock_register_action(action); const GxkStockAction* action; a validly filled out GxkStockAction Register a new stock action. The new stock action action->stock_id is registered with an action label of action->label and the stock icon action->stock_fallback. If action->label is NULL, action->stock_fallback must not be NULL, and action->stock_id becomes merely an alias of action->stock_fallback. gxk_stock_register_actions(n_actions, actions); guint n_actions; number of actions to register const GxkStockAction* actions; a validly filled out array of GxkStockAction For all n_actions contained in actions, call gxk_stock_register_action(). gxk_stock_register_icon(icon); const GxkStockIcon* icon; a validly filled out GxkStockIcon Register a new stock icon from an inlined pixbuf. The inlined pixbuf pixels are not copied, so the caller must make sure for the data to remain valid. gxk_stock_register_icons(n_icons, icons); guint n_icons; number of icons to register const GxkStockIcon* icons; a validly filled out array of GxkStockIcon For all n_icons contained in icons, call gxk_stock_register_icon(). gxk_text_view_cursor_to_end(tview); GtkTextView* tview; a GtkTextView object Move the insertion and selection bound mark to the end of the text view's buffer and keep the cursor on screen. gxk_text_view_cursor_to_start(tview); GtkTextView* tview; a GtkTextView object Move the insertion and selection bound mark to the start of the text view's buffer and keep the cursor on screen. gxk_text_view_enter_browse_mode(tview); GtkTextView* tview; a GtkTextView object Install key press handlers on a text view which allow scrolling its contents into any direction. gxk_text_view_leave_browse_mode(tview); GtkTextView* tview; a GtkTextView object Deinstall key press handlers previously installed with gxk_text_view_enter_browse_mode(). gxk_toolbar_append(self, child_type, name, tooltip, icon); GxkToolbar* self; a toolbar as returned from gxk_toolbar_new() GxkToolbarChild child_type; child type const gchar* name; name of the child wiget (underscores indicate hotkeys) const gchar* tooltip; tooltip to be displayed with this child GtkWidget* icon; image widget for buttons or a custom widget RETURNS: newly created toolbar child Append a new child to the toolbar, named name, with tooltip tooltip and containing icon. icon is usually an image widget, unless GXK_TOOLBAR_WIDGET or one of its variants was specified as child type. The possible child types are: GXK_TOOLBAR_SPACE - add a vertical space; GXK_TOOLBAR_SEPARATOR - add a vertical seperator; GXK_TOOLBAR_BUTTON - add a button widget; GXK_TOOLBAR_TRUNC_BUTTON - like GXK_TOOLBAR_BUTTON, but clip the name label if it width exceeds the button size; GXK_TOOLBAR_EXTRA_BUTTON - like GXK_TOOLBAR_BUTTON, but leave the button's size alone, it is not made homogeneous with other toolbar children. GXK_TOOLBAR_TOGGLE - add a toggle button widget; GXK_TOOLBAR_TRUNC_TOGGLE - like GXK_TOOLBAR_TRUNC_BUTTON for toggle buttons; GXK_TOOLBAR_EXTRA_TOGGLE - like GXK_TOOLBAR_EXTRA_BUTTON for toggle buttons; GXK_TOOLBAR_WIDGET - treat icon as a custom widget, and don't put it into a button, toggle button or other activatable container; GXK_TOOLBAR_TRUNC_WIDGET - like GXK_TOOLBAR_TRUNC_BUTTON for custom widgets; GXK_TOOLBAR_EXTRA_WIDGET - like GXK_TOOLBAR_EXTRA_BUTTON for custom widgets; GXK_TOOLBAR_FILL_WIDGET - like GXK_TOOLBAR_EXTRA_WIDGET but extra unused space of the toolbar is given to this child. gxk_toolbar_append_choice(self, child_type, choice_func, data, data_free); GxkToolbar* self; a toolbar as returned from gxk_toolbar_new() GxkToolbarChild child_type; child type (one of the button variants) GxkToolbarChoiceFunc choice_func; callback notified if the choice changes gpointer data; extra data argument to the callback GDestroyNotify data_free; callback to destroy data RETURNS: newly created toolbar choice child Create and append a new toolbar child which offers a choice menu of various options to the user. gxk_toolbar_append_stock(self, child_type, name, tooltip, stock_id); GxkToolbar* self; a toolbar as returned from gxk_toolbar_new() GxkToolbarChild child_type; child type const gchar* name; name of the child wiget (underscores indicate hotkeys) const gchar* tooltip; tooltip to be displayed with this child const gchar* stock_id; stock name RETURNS: newly created toolbar child Like gxk_toolbar_append() but create the icon widget from stock_id. gxk_toolbar_choice_add(widget, name, tooltip, icon, choice); GtkWidget* widget; a toolbar child as returned from gxk_toolbar_append_choice() const gchar* name; name of the choice item const gchar* tooltip; tooltip to be displayed with this choice item GtkWidget* icon; image widget for this choice guint choice; unique integer id to identify this choice RETURNS: newly created toolbar choice item Add a choice item to a toolbar choice child. gxk_toolbar_choice_is_item(item); GtkWidget* item; a valid GtkWidget RETURNS: either TRUE or FALSE Check whether the passed in widget is a choice item as returned from gxk_toolbar_choice_add() (so calling e.g. gxk_toolbar_choice_is_selected() is safe on this widget). gxk_toolbar_choice_is_selected(item); GtkWidget* item; a toolbar choice child as returned from gxk_toolbar_choice_add() RETURNS: either TRUE or FALSE depending on whether item is selected Check whether the passed in choice item is currently selected. gxk_toolbar_choice_select(item); GtkWidget* item; a toolbar choice child as returned from gxk_toolbar_choice_add() Select the passed in choice item. gxk_toolbar_choice_set(widget, name, tooltip, icon, choice); GtkWidget* widget; a toolbar child as returned from gxk_toolbar_append_choice() const gchar* name; name of the choice item const gchar* tooltip; tooltip to be displayed with this choice item GtkWidget* icon; image widget for this choice guint choice; unique integer id to identify this choice RETURNS: newly created toolbar choice item Add a choice item to a toolbar choice child and make this item the currently selected one. gxk_toolbar_new(nullify_pointer); gpointer nullify_pointer; location of a pointer to nullify or NULL RETURNS: newly created toolbar Create a new toolbar and setup handlers to nullify nullify_pointer once the toolbar is destructed. gxk_toplevel_activate_default(widget); GtkWidget* widget; a widget having a toplevel Activate the default widget of the toplevel of widget. gxk_toplevel_delete(widget); GtkWidget* widget; a widget having a toplevel This function is usefull to produce the exact same effect as if the user caused window manager triggered window deletion on the toplevel of widget. gxk_toplevel_hide(widget); GtkWidget* widget; a widget having a toplevel Hide the toplevel of widget. gxk_tree_path_prev(path); GtkTreePath* path; valid GtkTreePath Workaround for gtk_tree_path_prev() which corrupts memory if called on empty paths (up to version 2.2 at least). gxk_tree_selection_force_browse(selection, model); GtkTreeSelection* selection; GtkTreeSelection to watch GtkTreeModel* model; tree model used with selection Watch deletion and insertions into empty trees to ensure valid selections across these events. gxk_tree_selection_select_ipath(selection, ...); selection; GtkTreeSelection to modify ...; GtkTreePath indices Select the row denoted by the path to be constructed from the -1 terminated indices. gxk_tree_selection_select_spath(selection, str_path); GtkTreeSelection* selection; GtkTreeSelection to modify const gchar* str_path; a stringified GtkTreePath Select the row denoted by str_path. gxk_tree_selection_unselect_ipath(selection, ...); selection; GtkTreeSelection to modify ...; GtkTreePath indices Select the row denoted by the path to be constructed from the -1 terminated indices. gxk_tree_selection_unselect_spath(selection, str_path); GtkTreeSelection* selection; GtkTreeSelection to modify const gchar* str_path; a stringified GtkTreePath Unselect the row denoted by str_path. gxk_tree_spath_index0(strpath); const gchar* strpath; stringified GtkTreePath Return index[0] of strpath. Usefull for paths in lists, where index[0] usually corresponds to the nth row. gxk_tree_view_add_column(tree_view, position, column, cell, ...); tree_view; valid GtkTreeView position; column position (or -1 to append) column; valid GtkTreeViewColumn cell; valid GtkCellRenderer ...; attribute mappings Appends cell to column and adds column to tree_view at the specified position. This function takes a NULL-terminated list of attribute mappings consisting of a string and a guint, mapping cell attributes to model columns as documented in gtk_tree_view_column_add_attribute(). gxk_tree_view_add_popup_column(tree_view, model_column, xalign, title, tooltip, edited_callback, data, cflags); GtkTreeView* tree_view; valid GtkTreeView guint model_column; model column gdouble xalign; horizontal text alignment const gchar* title; column title const gchar* tooltip; column tooltip gpointer edited_callback; notification callback gpointer data; data passed in to toggled_callback GConnectFlags cflags; connection flags Add a text column with popup facility, similar to gxk_tree_view_add_text_column(). gxk_tree_view_add_text_column(tree_view, model_column, xalign, title, tooltip, edited_callback, data, cflags); GtkTreeView* tree_view; valid GtkTreeView guint model_column; model column gdouble xalign; horizontal text alignment const gchar* title; column title const gchar* tooltip; column tooltip gpointer edited_callback; notification callback gpointer data; data passed in to toggled_callback GConnectFlags cflags; connection flags Add a text column, similar to gxk_tree_view_append_text_columns(). edited_callback(data) is connected with cflags (see g_signal_connect_data()) to the "edited" signal of the text cell, or passed as NULL which makes the column non-editable. gxk_tree_view_add_toggle_column(tree_view, model_column, xalign, title, tooltip, toggled_callback, data, cflags); GtkTreeView* tree_view; valid GtkTreeView guint model_column; model column gdouble xalign; horizontal text alignment const gchar* title; column title const gchar* tooltip; column tooltip gpointer toggled_callback; notification callback gpointer data; data passed in to toggled_callback GConnectFlags cflags; connection flags Add a toggle button column, similar to gxk_tree_view_add_text_column(). edited_callback(data) is connected with cflags (see g_signal_connect_data()) to the "toggled" signal of the toggle cell, or passed as NULL which makes the column non-editable. gxk_tree_view_append_text_columns(tree_view, n_cols, ...); tree_view; valid GtkTreeView n_cols; number of columns to append ...; column arguments Add n_cols new columns with text cells to tree_view. Per column, the caller needs to supply a guint, a gdouble and a string, to be used as model column number (for the text to be displayed), the horizontal cell alignment (between 0 and 1) and the column title respectively. gxk_tree_view_column_set_tip_title(tree_column, title, tooltip); GtkTreeViewColumn* tree_column; valid GtkTreeViewColumn const gchar* title; column title const gchar* tooltip; column tooltip Set a tree view column title and its tooltip. This is a bug workaroud for missing tree view column API to set tooltips, so the column title or column title widget shouldn't be changed after calling this function. gxk_tree_view_focus_row(tree, row); GtkTreeView* tree; valid GtkTreeView gint row; row to focus Force focus to row, causes automatic selection of row in browse mode. gxk_tree_view_get_bin_window_pos(tree, x_p, y_p); GtkTreeView* tree; valid GtkTreeView gint* x_p; x position gint* y_p; y position Retrieve the position of the bin window (row display area) of a GtkTreeView widget once it's realized. gxk_tree_view_get_row_area(tree, row, y_p, height_p); GtkTreeView* tree; valid GtkTreeView gint row; row to retrieve area coordinates for gint* y_p; y position of row gint* height_p; height of row Retrieve the position and height of a row of a GtkTreeView widget within its bin window. gxk_tree_view_get_row_from_coord(tree, y, row_p); GtkTreeView* tree; valid GtkTreeView gint y; bin window y coordinate gint* row_p; row pointed to by y RETURNS: whether y lies within the visible area Retrieve the row within which y lies. If y lies outside the visible area, the row is clamped to visible rows. gxk_tree_view_get_selected_row(tree); GtkTreeView* tree; valid GtkTreeView RETURNS: first selected row or -1 Retrieve the selected row in browse mode (for other selection modes, return the first selected row if any). gxk_tree_view_is_row_selected(tree, row); GtkTreeView* tree; valid GtkTreeView gint row; row to test RETURNS: whether row is selected Check whether row in tree is selected. gxk_type_register_generated(n_entries, entries); guint n_entries; number of generated types to register const GxkTypeGenerated* entries; GxkTypeGenerated type descriptions Register each of the generated type entries with the type system. Currently supported parent types are G_TYPE_ENUM and G_TYPE_FLAGS in which cases the type_data member must point to a NULL terminated array of GEnumValue or GFlagValue structures. No extra copying is performed, so the passed in structures have to persist throughout runtime. gxk_widget_activate_accel_group(widget, accel_group); GtkWidget* widget; a valid GtkWidget GtkAccelGroup* accel_group; a valid GtkAccelGroup Activate accelerators within accel group when widget receives key press events. This function isn't pure convenience, as it works around Gtk 2.2 not exporting _gtk_accel_group_activate(), _gtk_accel_group_attach() or _gtk_accel_group_detach(). gxk_widget_force_bg_clear(widget); GtkWidget* widget; a valid GtkWidget Enforce drawing of a widget's background. Some widgets do not explicitely draw their background, but simply draw themsleves on top of their parent's background. This function forces the widget into drawing its background according to its style settings. gxk_widget_make_insensitive(widget); GtkWidget* widget; a valid GtkWidget This function is euqivalent to gtk_widget_set_sensitive (widget, FALSE); It exists as a convenient signal connection callback. gxk_widget_make_sensitive(widget); GtkWidget* widget; a valid GtkWidget This function is euqivalent to gtk_widget_set_sensitive (widget, TRUE); It exists as a convenient signal connection callback. gxk_widget_modify_as_title(widget); GtkWidget* widget; a valid GtkWidget Modify the widget and it's style, so that it is insensitive, but doesn't quite look that way. Usefull for inactive title menu items in menus. gxk_widget_modify_base_as_bg(widget); GtkWidget* widget; a valid GtkWidget Modify the widget's base background (used by list and text widgets) to look like an ordinary widget background. This is usefull if a list, text or similar widget shouldn't stand out as such, e.g. when the GtkTextView widget displaying a long non-editable text should look similar to a GtkLabel. gxk_widget_modify_bg_as_base(widget); GtkWidget* widget; a valid GtkWidget Modify the widget's background to look like the background of a text or list widget (usually white). This is usefull if a hbox or similar widget is used to "simulate" a list, text, or similar widget. gxk_widget_proxy_requisition(widget); GtkWidget* widget; valid GtkWidget Proxy the size requisition of widget through the ::width_request and ::height_request properties. This is usefull only for immediate children of a GtkScrolledWindow, to have the GtkScrolledWindow honour the widgets size requisition. gxk_widget_showraise(widget); GtkWidget* widget; a valid widget Show the widget. If the widget is a toplevel, also raise its window to top. gxk_window_process_next(window, update_children); GdkWindow* window; valid GdkWindow gboolean update_children; whether to also process updates for child windows Cause window to be updated asyncronously as soon as possible via gdk_window_process_updates(). gxk_window_set_cursor_type(window, cursor); GdkWindow* window; valid GdkWindow* GdkCursorType cursor; GdkCursorType cursor type Set a window's cursor type. If GXK_DEFAULT_CURSOR is specified the window's cursor will be inherited from it's parent. Document Revised: Sun Apr 13 22:19:14 CEST 2003 diff -ruN beast-0.5.0/docs/generated/bse-procs.3 beast-0.5.1/docs/generated/bse-procs.3 --- beast-0.5.0/docs/generated/bse-procs.3 2003-03-13 21:47:45.000000000 +0100 +++ beast-0.5.1/docs/generated/bse-procs.3 2003-04-14 00:09:32.000000000 +0200 @@ -623,22 +623,22 @@ .ds 24 24 .ds 24-sect .nr bse_source_ichannel_blurb .ds 24 24 -.ds 24-sect .nr bse-source-ichannel-cname -.ds 24 24 -.ds 24-sect .nr bse_source_ichannel_cname -.ds 24 24 .ds 24-sect .nr bse-source-ichannel-get-n-joints .ds 24 24 .ds 24-sect .nr bse_source_ichannel_get_n_joints .ds 24 24 -.ds 25-sect .nr bse-source-ichannel-get-ochannel -.ds 25 25 -.ds 25-sect .nr bse_source_ichannel_get_ochannel -.ds 25 25 +.ds 24-sect .nr bse-source-ichannel-get-ochannel +.ds 24 24 +.ds 24-sect .nr bse_source_ichannel_get_ochannel +.ds 24 24 .ds 25-sect .nr bse-source-ichannel-get-osource .ds 25 25 .ds 25-sect .nr bse_source_ichannel_get_osource .ds 25 25 +.ds 25-sect .nr bse-source-ichannel-ident +.ds 25 25 +.ds 25-sect .nr bse_source_ichannel_ident +.ds 25 25 .ds 25-sect .nr bse-source-ichannel-name .ds 25 25 .ds 25-sect .nr bse_source_ichannel_name @@ -663,9 +663,9 @@ .ds 26 26 .ds 26-sect .nr bse_source_ochannel_blurb .ds 26 26 -.ds 26-sect .nr bse-source-ochannel-cname +.ds 26-sect .nr bse-source-ochannel-ident .ds 26 26 -.ds 26-sect .nr bse_source_ochannel_cname +.ds 26-sect .nr bse_source_ochannel_ident .ds 26 26 .ds 26-sect .nr bse-source-ochannel-name .ds 26 26 @@ -794,12 +794,12 @@ .lf 140 - . .\" Start the document -.TH "BSE-Procedures" "3" "13 Mar 2003" "BEAST-0.5.0" "BEAST-0.5.0" +.TH "BSE-Procedures" "3" "14 Apr 2003" "BEAST-0.5.1" "BEAST-0.5.1" .H1 NAME .PP BSE-Procedures - BSE Procedures Reference .PP -\fIDocument Revised:\fP Thu Mar 13 21:32:00 CET 2003 +\fIDocument Revised:\fP Mon Apr 14 00:09:18 CEST 2003 .br .H1 SYNOPSIS @@ -1069,14 +1069,14 @@ .br \fB\f6bse_source_ichannel_blurb\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); .br -\fB\f6bse_source_ichannel_cname\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); -.br \fB\f6bse_source_ichannel_get_n_joints\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); .br \fB\f6bse_source_ichannel_get_ochannel\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1, \fI\f7input-joint\fP\f1); .br \fB\f6bse_source_ichannel_get_osource\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1, \fI\f7input-joint\fP\f1); .br +\fB\f6bse_source_ichannel_ident\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); +.br \fB\f6bse_source_ichannel_name\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); .br \fB\f6bse_source_is_joint_ichannel\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); @@ -1089,7 +1089,7 @@ .br \fB\f6bse_source_ochannel_blurb\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); .br -\fB\f6bse_source_ochannel_cname\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); +\fB\f6bse_source_ochannel_ident\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); .br \fB\f6bse_source_ochannel_name\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); .br @@ -5096,16 +5096,16 @@ .TP .PD 0 -.XR - - bse-source-ichannel-cname -(\fB\f6bse-source-ichannel-cname\fP\f1 \fI\f7module\fP\f1 \fI\f7input-channel\fP\f1) -.IX DESCRIPTION!bse_source_ichannel_cname (module, input-channel);@\fB\f6bse_source_ichannel_cname\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); +.XR - - bse-source-ichannel-get-n-joints +(\fB\f6bse-source-ichannel-get-n-joints\fP\f1 \fI\f7module\fP\f1 \fI\f7input-channel\fP\f1) +.IX DESCRIPTION!bse_source_ichannel_get_n_joints (module, input-channel);@\fB\f6bse_source_ichannel_get_n_joints\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); .sp -1 .TP .PD 0 -.XR - - bse_source_ichannel_cname -\fB\f6bse_source_ichannel_cname\fP\f1 (\fI\f7module\fP\f1, \fI\f7input_channel\fP\f1); +.XR - - bse_source_ichannel_get_n_joints +\fB\f6bse_source_ichannel_get_n_joints\fP\f1 (\fI\f7module\fP\f1, \fI\f7input_channel\fP\f1); .na .TS nokeep; @@ -5119,27 +5119,27 @@ \h'-2m'\fI\f7RETURNS:\fP\f1 T{ T} -\fI\f7const gchar*\fP\f1 \fI\f7channel_name\fP\f1; T{ +\fI\f7SfiInt\fP\f1 \fI\f7n_joints\fP\f1; T{ T} .TE .ad -Get canonical input channel name. +Retrieve the number of inputs connected to an input channel. .TP .PD 0 -.XR - - bse-source-ichannel-get-n-joints -(\fB\f6bse-source-ichannel-get-n-joints\fP\f1 \fI\f7module\fP\f1 \fI\f7input-channel\fP\f1) -.IX DESCRIPTION!bse_source_ichannel_get_n_joints (module, input-channel);@\fB\f6bse_source_ichannel_get_n_joints\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); +.XR - - bse-source-ichannel-get-ochannel +(\fB\f6bse-source-ichannel-get-ochannel\fP\f1 \fI\f7module\fP\f1 \fI\f7input-channel\fP\f1 \fI\f7input-joint\fP\f1) +.IX DESCRIPTION!bse_source_ichannel_get_ochannel (module, input-channel, input-joint);@\fB\f6bse_source_ichannel_get_ochannel\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1, \fI\f7input-joint\fP\f1); .sp -1 .TP .PD 0 -.XR - - bse_source_ichannel_get_n_joints -\fB\f6bse_source_ichannel_get_n_joints\fP\f1 (\fI\f7module\fP\f1, \fI\f7input_channel\fP\f1); +.XR - - bse_source_ichannel_get_ochannel +\fB\f6bse_source_ichannel_get_ochannel\fP\f1 (\fI\f7module\fP\f1, \fI\f7input_channel\fP\f1, \fI\f7input_joint\fP\f1); .na .TS nokeep; @@ -5150,30 +5150,33 @@ \fI\f7SfiInt\fP\f1 \fI\f7input_channel\fP\f1; T{ Input Channel T} +\fI\f7SfiInt\fP\f1 \fI\f7input_joint\fP\f1; T{ +Input Joint +T} \h'-2m'\fI\f7RETURNS:\fP\f1 T{ T} -\fI\f7SfiInt\fP\f1 \fI\f7n_joints\fP\f1; T{ +\fI\f7SfiInt\fP\f1 \fI\f7ochannel\fP\f1; T{ T} .TE .ad -Retrieve the number of inputs connected to an input channel. +Retrieve output channel of the module connected to a specific joint of an input channel. .TP .PD 0 -.XR - - bse-source-ichannel-get-ochannel -(\fB\f6bse-source-ichannel-get-ochannel\fP\f1 \fI\f7module\fP\f1 \fI\f7input-channel\fP\f1 \fI\f7input-joint\fP\f1) -.IX DESCRIPTION!bse_source_ichannel_get_ochannel (module, input-channel, input-joint);@\fB\f6bse_source_ichannel_get_ochannel\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1, \fI\f7input-joint\fP\f1); +.XR - - bse-source-ichannel-get-osource +(\fB\f6bse-source-ichannel-get-osource\fP\f1 \fI\f7module\fP\f1 \fI\f7input-channel\fP\f1 \fI\f7input-joint\fP\f1) +.IX DESCRIPTION!bse_source_ichannel_get_osource (module, input-channel, input-joint);@\fB\f6bse_source_ichannel_get_osource\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1, \fI\f7input-joint\fP\f1); .sp -1 .TP .PD 0 -.XR - - bse_source_ichannel_get_ochannel -\fB\f6bse_source_ichannel_get_ochannel\fP\f1 (\fI\f7module\fP\f1, \fI\f7input_channel\fP\f1, \fI\f7input_joint\fP\f1); +.XR - - bse_source_ichannel_get_osource +\fB\f6bse_source_ichannel_get_osource\fP\f1 (\fI\f7module\fP\f1, \fI\f7input_channel\fP\f1, \fI\f7input_joint\fP\f1); .na .TS nokeep; @@ -5190,27 +5193,27 @@ \h'-2m'\fI\f7RETURNS:\fP\f1 T{ T} -\fI\f7SfiInt\fP\f1 \fI\f7ochannel\fP\f1; T{ +\fI\f7BseSource*\fP\f1 \fI\f7osource\fP\f1; T{ T} .TE .ad -Retrieve output channel of the module connected to a specific joint of an input channel. +Retrieve output module connected to a specific joint of an input channel .TP .PD 0 -.XR - - bse-source-ichannel-get-osource -(\fB\f6bse-source-ichannel-get-osource\fP\f1 \fI\f7module\fP\f1 \fI\f7input-channel\fP\f1 \fI\f7input-joint\fP\f1) -.IX DESCRIPTION!bse_source_ichannel_get_osource (module, input-channel, input-joint);@\fB\f6bse_source_ichannel_get_osource\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1, \fI\f7input-joint\fP\f1); +.XR - - bse-source-ichannel-ident +(\fB\f6bse-source-ichannel-ident\fP\f1 \fI\f7module\fP\f1 \fI\f7input-channel\fP\f1) +.IX DESCRIPTION!bse_source_ichannel_ident (module, input-channel);@\fB\f6bse_source_ichannel_ident\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); .sp -1 .TP .PD 0 -.XR - - bse_source_ichannel_get_osource -\fB\f6bse_source_ichannel_get_osource\fP\f1 (\fI\f7module\fP\f1, \fI\f7input_channel\fP\f1, \fI\f7input_joint\fP\f1); +.XR - - bse_source_ichannel_ident +\fB\f6bse_source_ichannel_ident\fP\f1 (\fI\f7module\fP\f1, \fI\f7input_channel\fP\f1); .na .TS nokeep; @@ -5221,19 +5224,16 @@ \fI\f7SfiInt\fP\f1 \fI\f7input_channel\fP\f1; T{ Input Channel T} -\fI\f7SfiInt\fP\f1 \fI\f7input_joint\fP\f1; T{ -Input Joint -T} \h'-2m'\fI\f7RETURNS:\fP\f1 T{ T} -\fI\f7BseSource*\fP\f1 \fI\f7osource\fP\f1; T{ +\fI\f7const gchar*\fP\f1 \fI\f7channel_name\fP\f1; T{ T} .TE .ad -Retrieve output module connected to a specific joint of an input channel +Get canonical input channel name. .TP .PD 0 @@ -5436,16 +5436,16 @@ .TP .PD 0 -.XR - - bse-source-ochannel-cname -(\fB\f6bse-source-ochannel-cname\fP\f1 \fI\f7module\fP\f1 \fI\f7input-channel\fP\f1) -.IX DESCRIPTION!bse_source_ochannel_cname (module, input-channel);@\fB\f6bse_source_ochannel_cname\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); +.XR - - bse-source-ochannel-ident +(\fB\f6bse-source-ochannel-ident\fP\f1 \fI\f7module\fP\f1 \fI\f7input-channel\fP\f1) +.IX DESCRIPTION!bse_source_ochannel_ident (module, input-channel);@\fB\f6bse_source_ochannel_ident\fP\f1 (\fI\f7module\fP\f1, \fI\f7input-channel\fP\f1); .sp -1 .TP .PD 0 -.XR - - bse_source_ochannel_cname -\fB\f6bse_source_ochannel_cname\fP\f1 (\fI\f7module\fP\f1, \fI\f7input_channel\fP\f1); +.XR - - bse_source_ochannel_ident +\fB\f6bse_source_ochannel_ident\fP\f1 (\fI\f7module\fP\f1, \fI\f7input_channel\fP\f1); .na .TS nokeep; @@ -6482,6 +6482,6 @@ .br .PP -\fIDocument Revised:\fP Thu Mar 13 21:32:00 CET 2003 +\fIDocument Revised:\fP Mon Apr 14 00:09:18 CEST 2003 .br diff -ruN beast-0.5.0/docs/generated/bse-procs.3.markup beast-0.5.1/docs/generated/bse-procs.3.markup --- beast-0.5.0/docs/generated/bse-procs.3.markup 2003-03-13 21:47:50.000000000 +0100 +++ beast-0.5.1/docs/generated/bse-procs.3.markup 2003-04-14 00:09:25.000000000 +0200 @@ -1,3 +1,3 @@ - NAME BSE-Procedures - BSE Procedures Reference Document Revised: Thu Mar 13 21:32:00 CET 2003 SYNOPSIS bse_categories_match (pattern);bse_categories_match_typed (pattern, type);bse_category_from_id (category-id);bse_container_get_item (container, item-type, seq-id); - Get an item by seqidbse_container_list_items (container);bse_container_lookup_item (container, uname); - Find an item within a container.bse_data_pocket_create_entry (data-pocket);bse_data_pocket_delete_entry (data-pocket, entry-id);bse_data_pocket_get_float (data-pocket, entry-id, name);bse_data_pocket_get_int (data-pocket, entry-id, name);bse_data_pocket_get_n_entries (data-pocket);bse_data_pocket_get_nth_entry_id (data-pocket, entry-index);bse_data_pocket_get_object (data-pocket, entry-id, name);bse_data_pocket_get_string (data-pocket, entry-id, name);bse_data_pocket_set_float (data-pocket, entry-id, name, number);bse_data_pocket_set_int (data-pocket, entry-id, name, number);bse_data_pocket_set_object (data-pocket, entry-id, name, item);bse_data_pocket_set_string (data-pocket, entry-id, name, string);bse_editable_sample_close (esample);bse_editable_sample_collect_stats (esample, voffset, offset-scale, block-size, stepping, max-pairs);bse_editable_sample_get_length (esample);bse_editable_sample_get_n_channels (esample);bse_editable_sample_get_osc_freq (esample);bse_editable_sample_open (esample);bse_editable_sample_read_samples (esample, voffset);bse_error_blurb (error);bse_error_name (error);bse_hello_world ();bse_item_check_is_a (item, type-name); - Check whether an item has a certain type.bse_item_common_ancestor (item, item2);bse_item_fixme_get_parasite (item, name);bse_item_fixme_set_parasite (item, name, parasite);bse_item_get_icon (item);bse_item_get_name (item);bse_item_get_name_or_type (item);bse_item_get_parent (item);bse_item_get_project (item);bse_item_get_seqid (item);bse_item_get_type (item);bse_item_get_type_blurb (item);bse_item_get_type_name (item);bse_item_get_uname_path (item);bse_item_list_proxies (item, property-name);bse_item_set_name (item, name);bse_item_unuse (item);bse_item_use (item);bse_janitor_add_action (janitor, action, name, blurb);bse_janitor_exit (janitor, msg-type, message);bse_janitor_get_action (janitor, nth-action);bse_janitor_get_action_blurb (janitor, nth-action);bse_janitor_get_action_name (janitor, nth-action);bse_janitor_get_proc_name (janitor);bse_janitor_get_script_name (janitor);bse_janitor_get_specific ();bse_janitor_kill (janitor);bse_janitor_n_actions (janitor);bse_janitor_progress (janitor, progress);bse_janitor_remove_action (janitor, action);bse_janitor_set_msg (janitor, msg-type, message);bse_janitor_trigger_action (janitor, action);bse_midi_notifier_current_time (midi-notifier);bse_note_from_freq (frequency);bse_note_to_freq (note, fine-tune);bse_object_is_a (item, type-name);bse_part_change_note (part, id, tick, duration, note, fine-tune, velocity);bse_part_check_overlap (part, tick, duration, note);bse_part_delete_event (part, id);bse_part_deselect_event (part, id);bse_part_deselect_rectangle (part, tick, duration, min-note, max-note);bse_part_get_max_note (part);bse_part_get_max_tick (part);bse_part_get_min_note (part);bse_part_get_notes (part, tick, note);bse_part_get_timing (part, tick);bse_part_insert_note (part, tick, duration, note, fine-tune, velocity);bse_part_is_selected_event (part, id);bse_part_list_notes_crossing (part, tick, duration);bse_part_list_selected_notes (part);bse_part_queue_notes_within (part, tick, duration, min-note, max-note);bse_part_select_event (part, id);bse_part_select_rectangle (part, tick, duration, min-note, max-note);bse_part_select_rectangle_exclusive (part, tick, duration, min-note, max-note);bse_project_activate (project);bse_project_auto_deactivate (project, msec-delay);bse_project_can_play (project);bse_project_create_midi_synth (project, name); - Create a MIDI synthesizer network for this project.bse_project_create_snet (project, name); - Create a synthsizer network for this project.bse_project_create_song (project, name); - Create a song for this project.bse_project_deactivate (project);bse_project_ensure_wave_repo (project);bse_project_find_item (project, uname-path);bse_project_get_data_pocket (project, name);bse_project_get_state (project);bse_project_get_supers (project);bse_project_is_playing (project);bse_project_list_uname_paths (project, item-type);bse_project_match_items_by_uname (project, item-type, uname);bse_project_play (project);bse_project_restore_from_file (project, file-name);bse_project_start_playback (project);bse_project_stop (project);bse_project_stop_playback (project);bse_project_store_bse (project, file-name, self-contained);bse_proxy_check (item, type-name); - Check whether a proxy has a certain type.bse_randomizer (use-seed, seed);bse_server_can_load (server, file-name);bse_server_construct_note (server, semitone, octave, fine-tune);bse_server_describe_note (server, note, fine-tune);bse_server_get_midi_notifier (server);bse_server_n_scripts (server);bse_server_note_from_freq (server, freq);bse_server_note_from_string (server, name);bse_server_preferences_locked (server);bse_server_register_plugins (server);bse_server_register_scripts (server);bse_server_save_preferences (server);bse_server_use_new_project (server, name);bse_snet_can_create_source (snet, module-type);bse_snet_create_source (snet, module-type);bse_snet_remove_source (snet, module);bse_snet_supports_user_synths (snet);bse_song_create_part (song);bse_song_create_track (song);bse_song_find_track_for_part (song, part);bse_song_get_timing (song, tick);bse_song_remove_part (song, part);bse_song_remove_track (song, track);bse_song_synthesize_note (song, track, duration, note, fine-tune, velocity);bse_source_clear_inputs (module);bse_source_clear_outputs (module);bse_source_has_outputs (module);bse_source_ichannel_blurb (module, input-channel);bse_source_ichannel_cname (module, input-channel);bse_source_ichannel_get_n_joints (module, input-channel);bse_source_ichannel_get_ochannel (module, input-channel, input-joint);bse_source_ichannel_get_osource (module, input-channel, input-joint);bse_source_ichannel_name (module, input-channel);bse_source_is_joint_ichannel (module, input-channel);bse_source_is_joint_ichannel_by_id (module, input-channel);bse_source_n_ichannels (module);bse_source_n_ochannels (module);bse_source_ochannel_blurb (module, input-channel);bse_source_ochannel_cname (module, input-channel);bse_source_ochannel_name (module, input-channel);bse_source_set_input (imodule, input-channel, omodule, output-channel);bse_source_set_input_by_id (imodule, input-channel, omodule, output-channel);bse_source_unset_input (module, input-channel, omodule, output-channel);bse_source_unset_input_by_id (module, input-channel, omodule, output-channel);bse_track_get_part (track, tick);bse_track_get_timing (track, tick);bse_track_insert_part (track, tick, part);bse_track_list_parts (track);bse_track_remove_tick (track, tick);bse_type_blurb (type);bse_wave_chunk_get_mix_freq (wave, chunk-index);bse_wave_chunk_get_osc_freq (wave, chunk-index);bse_wave_load_wave (wave, file-name, wave-name);bse_wave_n_wave_chunks (wave);bse_wave_osc_pcm_seek_perc (wosc, pos-perc);bse_wave_osc_request_pcm_position (wosc);bse_wave_repo_load_file (wave-repo, file-name);bse_wave_repo_remove_wave (wave-repo, wave);bse_wave_use_editable (wave, chunk-index); DESCRIPTION (bse-container-get-item container item-type seq-id) bse_container_get_item (container, item_type, seq_id); BseContainer* container; container const gchar* item_type; Type of the item to retrieve SfiInt seq_id; Sequential ID RETURNS: BseItem* item; The item with seqid as requested Retrieve a containers immediate child from it's sequential id. (bse-container-list-items container) bse_container_list_items (container); BseContainer* container; container RETURNS: BseProxySeq* item_list; Retrieve all items within a container (bse-container-lookup-item container uname) bse_container_lookup_item (container, uname); BseContainer* container; The Container const gchar* uname; Unique item name RETURNS: BseItem* item; The item named by uname Lookup an immediate child of a container from its uname (the uname is the name of the item, unique between all immediate children of a container). (bse-data-pocket-create-entry data-pocket) bse_data_pocket_create_entry (data_pocket); BseDataPocket* data_pocket; Data Pocket RETURNS: SfiInt entry_id; The unique pocket entry ID Create a new entry in a data pocket. Entries have a unique ID which is required to set values in a data pocket. (bse-data-pocket-delete-entry data-pocket entry-id) bse_data_pocket_delete_entry (data_pocket, entry_id); BseDataPocket* data_pocket; Data Pocket SfiInt entry_id; The unique pocket entry ID RETURNS: BseErrorType error; BSE error code Delete an existing entry from a data pocket (bse-data-pocket-get-float data-pocket entry-id name) bse_data_pocket_get_float (data_pocket, entry_id, name); BseDataPocket* data_pocket; The data pocket storing values SfiInt entry_id; The unique pocket entry ID const gchar* name; Name for the value RETURNS: SfiReal number; The value stored in the data pocket entry Retrieve a previously set floating point value from a data pocket entry. (bse-data-pocket-get-int data-pocket entry-id name) bse_data_pocket_get_int (data_pocket, entry_id, name); BseDataPocket* data_pocket; The data pocket storing values SfiInt entry_id; The unique pocket entry ID const gchar* name; Name for the value RETURNS: SfiInt number; The value stored in the data pocket entry Retrieve a previously set integer value from a data pocket entry. (bse-data-pocket-get-n-entries data-pocket) bse_data_pocket_get_n_entries (data_pocket); BseDataPocket* data_pocket; The data pocket storing values RETURNS: SfiInt n_entries; The number of entries in use Retrieve the number of entries created in a data pocket. (bse-data-pocket-get-nth-entry-id data-pocket entry-index) bse_data_pocket_get_nth_entry_id (data_pocket, entry_index); BseDataPocket* data_pocket; The data pocket storing values SfiInt entry_index; index into number of entries present RETURNS: SfiInt entry_id; The unique pocket entry ID (or 0 if there's no such entry) Retrieve the ID of an entry in the data pocket by sequential index. (bse-data-pocket-get-object data-pocket entry-id name) bse_data_pocket_get_object (data_pocket, entry_id, name); BseDataPocket* data_pocket; The data pocket storing values SfiInt entry_id; The unique pocket entry ID const gchar* name; Name for the value RETURNS: BseItem* item; The value stored in the data pocket entry Retrieve a previously set object reference from a data pocket entry. (bse-data-pocket-get-string data-pocket entry-id name) bse_data_pocket_get_string (data_pocket, entry_id, name); BseDataPocket* data_pocket; The data pocket storing values SfiInt entry_id; The unique pocket entry ID const gchar* name; Name for the value RETURNS: const gchar* string; The value stored in the data pocket entry Retrieve a previously set string from a data pocket entry. (bse-data-pocket-set-float data-pocket entry-id name number) bse_data_pocket_set_float (data_pocket, entry_id, name, number); BseDataPocket* data_pocket; The data pocket storing values SfiInt entry_id; The unique pocket entry ID const gchar* name; Name for the value SfiReal number; The value to store in the data pocket entry RETURNS: BseErrorType error; BSE error code Set a named floating point value in a data pocket entry. Names are required to distinguish different values from each other when accessing values in a data pocket. (bse-data-pocket-set-int data-pocket entry-id name number) bse_data_pocket_set_int (data_pocket, entry_id, name, number); BseDataPocket* data_pocket; The data pocket storing values SfiInt entry_id; The unique pocket entry ID const gchar* name; Name for the value SfiInt number; The value to store in the data pocket entry RETURNS: BseErrorType error; BSE error code Set a named integer value in a data pocket entry. Names are required to distinguish different values from each other when accessing values in a data pocket. (bse-data-pocket-set-object data-pocket entry-id name item) bse_data_pocket_set_object (data_pocket, entry_id, name, item); BseDataPocket* data_pocket; The data pocket storing values SfiInt entry_id; The unique pocket entry ID const gchar* name; Name for the value BseItem* item; The value to store in the data pocket entry RETURNS: BseErrorType error; BSE error code Set a named object reference in a data pocket entry. Object references stored in a data pocket must exist within the same project that the data pocket belongs to (bse-data-pocket-set-string data-pocket entry-id name string) bse_data_pocket_set_string (data_pocket, entry_id, name, string); BseDataPocket* data_pocket; The data pocket storing values SfiInt entry_id; The unique pocket entry ID const gchar* name; Name for the value const gchar* string; The value to store in the data pocket entry RETURNS: BseErrorType error; BSE error code Set a named string in a data pocket entry. (bse-editable-sample-close esample) bse_editable_sample_close (esample); BseEditableSample* esample; Editable Sample Close an opened sample. (bse-editable-sample-collect-stats esample voffset offset-scale block-size stepping max-pairs) bse_editable_sample_collect_stats (esample, voffset, offset_scale, block_size, stepping, max_pairs); BseEditableSample* esample; Editable Sample SfiInt voffset; Offset of first stat block SfiReal offset_scale; Factor to scale voffset increments with SfiInt block_size; Block size to compute stat pairs from SfiInt stepping; Stepping within a stat block SfiInt max_pairs; Maximum number of (min, max) pairs to collect RETURNS: SfiFBlock* sample_block; Block of samples Collect statistics from sample blocks as (minimum, maximum) pairs. (bse-editable-sample-get-length esample) bse_editable_sample_get_length (esample); BseEditableSample* esample; Editable Sample RETURNS: SfiInt length; Number of values Return the number of values in the sample. (bse-editable-sample-get-n-channels esample) bse_editable_sample_get_n_channels (esample); BseEditableSample* esample; Editable Sample RETURNS: SfiInt n_channels; Number of channels Return the number of channels in the sample. (bse-editable-sample-get-osc-freq esample) bse_editable_sample_get_osc_freq (esample); BseEditableSample* esample; Editable Sample RETURNS: SfiReal osc_freq; Oscillator Frequency Return the oscillator frequency for the sample. (bse-editable-sample-open esample) bse_editable_sample_open (esample); BseEditableSample* esample; Editable Sample RETURNS: BseErrorType error; Open the sample for reading. (bse-editable-sample-read-samples esample voffset) bse_editable_sample_read_samples (esample, voffset); BseEditableSample* esample; Editable Sample SfiInt voffset; Value offset RETURNS: SfiFBlock* sample_block; Block of samples Read a set of samples from a specific offset. (bse-item-check-is-a item type-name) bse_item_check_is_a (item, type_name); BseItem* item; The Item const gchar* type_name; Type Name RETURNS: SfiBool is_a; (bse-item-common-ancestor item item2) bse_item_common_ancestor (item, item2); BseItem* item; First item BseItem* item2; Second item RETURNS: BseItem* ancestor; Common ancestor of both items Retrieve the common ancestor of two items if there's any. (bse-item-fixme-get-parasite item name) bse_item_fixme_get_parasite (item, name); BseItem* item; item const gchar* name; name RETURNS: SfiFBlock* parasite; (bse-item-fixme-set-parasite item name parasite) bse_item_fixme_set_parasite (item, name, parasite); BseItem* item; item const gchar* name; name SfiFBlock* parasite; parasite (bse-item-get-icon item) bse_item_get_icon (item); BseItem* item; item RETURNS: BseIcon* icon; Get the current icon of an item. (bse-item-get-name item) bse_item_get_name (item); BseItem* item; Item RETURNS: const gchar* name; Retrieve an item's name. (bse-item-get-name-or-type item) bse_item_get_name_or_type (item); BseItem* item; Item RETURNS: const gchar* name; Retrieve an item's name or type if it has no name. (bse-item-get-parent item) bse_item_get_parent (item); BseItem* item; Item RETURNS: BseItem* parent; Retrieve an item's parent. (bse-item-get-project item) bse_item_get_project (item); BseItem* item; Item RETURNS: BseItem* project; Retrieve an item's project. (bse-item-get-seqid item) bse_item_get_seqid (item); BseItem* item; Item RETURNS: SfiInt seq_id; Retrieve an item's sequential ID. The sequential ID depends on the item's type an it's position inbetween siblings of the same type within it's immediate container. (bse-item-get-type item) bse_item_get_type (item); BseItem* item; Item RETURNS: const gchar* type_id; Retrieve an item's type ID. (bse-item-get-type-blurb item) bse_item_get_type_blurb (item); BseItem* item; Item RETURNS: const gchar* type_blurb; Retrieve an item's type description. (bse-item-get-type-name item) bse_item_get_type_name (item); BseItem* item; Item RETURNS: const gchar* type_name; Retrieve an item's type name. (bse-item-get-uname-path item) bse_item_get_uname_path (item); BseItem* item; item RETURNS: const gchar* uname_path; Retrieve the project relative uname path for this item. (bse-item-list-proxies item property-name) bse_item_list_proxies (item, property_name); BseItem* item; item const gchar* property_name; Proxy property name RETURNS: BseProxySeq* proxy_list; List possible values for a proxy property of an item. (bse-item-set-name item name) bse_item_set_name (item, name); BseItem* item; Item const gchar* name; Name Set an item's name. (bse-item-unuse item) bse_item_unuse (item); BseItem* item; Item Decrement use count for when an item is not needed anymore. (bse-item-use item) bse_item_use (item); BseItem* item; Item RETURNS: BseItem* used_item; Increment use count to keep an item alive. (bse-janitor-add-action janitor action name blurb) bse_janitor_add_action (janitor, action, name, blurb); BseJanitor* janitor; Janitor const gchar* action; Action const gchar* name; Name const gchar* blurb; Blurb Install a user action for script control. (bse-janitor-exit janitor msg-type message) bse_janitor_exit (janitor, msg_type, message); BseJanitor* janitor; Janitor BseUserMsgType msg_type; Message Type const gchar* message; Message Exit a script, leaving a message. (bse-janitor-get-action janitor nth-action) bse_janitor_get_action (janitor, nth_action); BseJanitor* janitor; Janitor SfiInt nth_action; Nth Action RETURNS: const gchar* action; Retrieve an action of this janitor. (bse-janitor-get-action-blurb janitor nth-action) bse_janitor_get_action_blurb (janitor, nth_action); BseJanitor* janitor; Janitor SfiInt nth_action; Nth Action RETURNS: const gchar* action_blurb; Retrieve the help string of an action of this janitor. (bse-janitor-get-action-name janitor nth-action) bse_janitor_get_action_name (janitor, nth_action); BseJanitor* janitor; Janitor SfiInt nth_action; Nth Action RETURNS: const gchar* action_name; Retrieve the name of an action of this janitor. (bse-janitor-get-proc-name janitor) bse_janitor_get_proc_name (janitor); BseJanitor* janitor; Janitor RETURNS: const gchar* proc_name; Retrieve the procedure name of this janitor. (bse-janitor-get-script-name janitor) bse_janitor_get_script_name (janitor); BseJanitor* janitor; Janitor RETURNS: const gchar* script_name; Retrieve the script name of this janitor. (bse-janitor-kill janitor) bse_janitor_kill (janitor); BseJanitor* janitor; Janitor Kill a currently running janitor. (bse-janitor-n-actions janitor) bse_janitor_n_actions (janitor); BseJanitor* janitor; Janitor RETURNS: SfiInt n_actions; Retrieve number of user actions of this janitor. (bse-janitor-progress janitor progress) bse_janitor_progress (janitor, progress); BseJanitor* janitor; Janitor SfiReal progress; Progress Indicate progress (from 0.0 to 1.0 or -1 for unknown amount). (bse-janitor-remove-action janitor action) bse_janitor_remove_action (janitor, action); BseJanitor* janitor; Janitor const gchar* action; Action Remove a previously installed user action from script control. (bse-janitor-set-msg janitor msg-type message) bse_janitor_set_msg (janitor, msg_type, message); BseJanitor* janitor; Janitor BseUserMsgType msg_type; Message Type const gchar* message; Message Alter script status message. (bse-janitor-trigger-action janitor action) bse_janitor_trigger_action (janitor, action); BseJanitor* janitor; Janitor const gchar* action; Action Trigger an installed user action of this janitor. (bse-midi-notifier-current-time midi-notifier) bse_midi_notifier_current_time (midi_notifier); BseMidiNotifier* midi_notifier; Midi Notifier RETURNS: SfiInt msec_time; Test (bse-object-is-a item type-name) bse_object_is_a (item, type_name); BseObject* item; Item const gchar* type_name; Type Name RETURNS: SfiBool is_a_check; Check object type (bse-part-change-note part id tick duration note fine-tune velocity) bse_part_change_note (part, id, tick, duration, note, fine_tune, velocity); BsePart* part; Part SfiInt id; ID SfiInt tick; Start Tick SfiInt duration; Tick Duration SfiInt note; Note SfiInt fine_tune; Fine tune in cents per semitone SfiReal velocity; Velocity RETURNS: BseErrorType error; Change an existing note within a part. (bse-part-check-overlap part tick duration note) bse_part_check_overlap (part, tick, duration, note); BsePart* part; Part SfiInt tick; Start Tick SfiInt duration; Tick Duration SfiInt note; Note RETURNS: BsePartNoteSeq* note_list; Check whether a note would overlap with neighbours. (bse-part-delete-event part id) bse_part_delete_event (part, id); BsePart* part; Part SfiInt id; ID RETURNS: BseErrorType error; Delete an existing event from a part. (bse-part-deselect-event part id) bse_part_deselect_event (part, id); BsePart* part; Part SfiInt id; ID Deselect an existing event. (bse-part-deselect-rectangle part tick duration min-note max-note) bse_part_deselect_rectangle (part, tick, duration, min_note, max_note); BsePart* part; Part SfiInt tick; Selection Tick SfiInt duration; Selection Duration SfiInt min_note; Minimum Selection Note SfiInt max_note; Maximum Selection Note Deselect all notes within rectangle. (bse-part-get-max-note part) bse_part_get_max_note (part); BsePart* part; Part RETURNS: SfiInt note; Retrieve the maximum note supported in this part. (bse-part-get-max-tick part) bse_part_get_max_tick (part); BsePart* part; Part RETURNS: SfiInt tick; Maximum Tick Retrieve the maximum tick count represented in a part. (bse-part-get-min-note part) bse_part_get_min_note (part); BsePart* part; Part RETURNS: SfiInt note; Retrieve the minimum note supported in this part. (bse-part-get-notes part tick note) bse_part_get_notes (part, tick, note); BsePart* part; Part SfiInt tick; Tick SfiInt note; Note RETURNS: BsePartNoteSeq* note_list; Retrieve all notes of specific frequency at a specific tick. (bse-part-get-timing part tick) bse_part_get_timing (part, tick); BsePart* part; Part SfiInt tick; Tick to retrieve timing info about RETURNS: BseSongTiming* timing; Song Timing Retrieve song timing information at a specific tick. (bse-part-insert-note part tick duration note fine-tune velocity) bse_part_insert_note (part, tick, duration, note, fine_tune, velocity); BsePart* part; Part SfiInt tick; Start Tick SfiInt duration; Tick Duration SfiInt note; Note SfiInt fine_tune; Fine tune in cents per semitone SfiReal velocity; Velocity RETURNS: SfiInt id; Insert a new note into a part. (bse-part-is-selected-event part id) bse_part_is_selected_event (part, id); BsePart* part; Part SfiInt id; ID RETURNS: SfiBool selected; Check whether a specific event is selected. (bse-part-list-notes-crossing part tick duration) bse_part_list_notes_crossing (part, tick, duration); BsePart* part; Part SfiInt tick; Start Tick SfiInt duration; Tick Duration RETURNS: BsePartNoteSeq* note_list; List all notes within or crossing a tick range. (bse-part-list-selected-notes part) bse_part_list_selected_notes (part); BsePart* part; Part RETURNS: BsePartNoteSeq* note_list; List all currently selected notes. (bse-part-queue-notes-within part tick duration min-note max-note) bse_part_queue_notes_within (part, tick, duration, min_note, max_note); BsePart* part; Part SfiInt tick; Start Tick SfiInt duration; Tick Duration SfiInt min_note; Minimum Note SfiInt max_note; Maximum Note Queue updates for all notes starting within the given region. (bse-part-select-event part id) bse_part_select_event (part, id); BsePart* part; Part SfiInt id; ID Select an existing event. (bse-part-select-rectangle part tick duration min-note max-note) bse_part_select_rectangle (part, tick, duration, min_note, max_note); BsePart* part; Part SfiInt tick; Selection Tick SfiInt duration; Selection Duration SfiInt min_note; Minimum Selection Note SfiInt max_note; Maximum Selection Note Select all notes within rectangle. (bse-part-select-rectangle-exclusive part tick duration min-note max-note) bse_part_select_rectangle_exclusive (part, tick, duration, min_note, max_note); BsePart* part; Part SfiInt tick; Selection Tick SfiInt duration; Selection Duration SfiInt min_note; Minimum Selection Note SfiInt max_note; Maximum Selection Note Select all notes within rectangle and deselect all others. (bse-project-restore-from-file project file-name) bse_project_restore_from_file (project, file_name); BseProject* project; The project const gchar* file_name; Source file name RETURNS: BseErrorType error; Error indicating possible failures Load a project from file (bse-project-store-bse project file-name self-contained) bse_project_store_bse (project, file_name, self_contained); BseProject* project; The project const gchar* file_name; Destination file name SfiBool self_contained; Whether references to other objects (e.g. samples) should be stored or whether to include everything in a self-contained .bse file RETURNS: BseErrorType error; Error indicating possible failures Save a project into a BSE file (bse-project-activate project) bse_project_activate (project); BseProject* project; The project RETURNS: BseErrorType error; Activate a project, precondition to start playback. (bse-project-auto-deactivate project msec-delay) bse_project_auto_deactivate (project, msec_delay); BseProject* project; The project SfiInt msec_delay; Delay for deactivation in milliseconds Automatically deactivate a project once playback stopped. (bse-project-can-play project) bse_project_can_play (project); BseProject* project; The project RETURNS: SfiBool can_play; Whether project playback makes sense Check whether project playback would makes sense. (bse-project-create-midi-synth project name) bse_project_create_midi_synth (project, name); BseProject* project; The project const gchar* name; MIDI synth name RETURNS: BseMidiSynth* midi_synth; New MIDI synth (bse-project-create-snet project name) bse_project_create_snet (project, name); BseProject* project; The project const gchar* name; Synth network name RETURNS: BseSNet* snet; New synth network (bse-project-create-song project name) bse_project_create_song (project, name); BseProject* project; The project const gchar* name; Song name RETURNS: BseSong* song; The new song (bse-project-deactivate project) bse_project_deactivate (project); BseProject* project; The project Deactivate the project, automatically stop playback. (bse-project-ensure-wave-repo project) bse_project_ensure_wave_repo (project); BseProject* project; The project RETURNS: BseWaveRepo* wrepo; The project's unique wave repo Ensure the project has a wave repository (bse-project-find-item project uname-path) bse_project_find_item (project, uname_path); BseProject* project; project const gchar* uname_path; uname-path RETURNS: BseItem* item; Find an item within a project, given its uname path. (bse-project-get-data-pocket project name) bse_project_get_data_pocket (project, name); BseProject* project; The project const gchar* name; Name of the data pocket RETURNS: BseDataPocket* data_pocket; The data pocket Retrieve a specifically named data pocket for this project (bse-project-get-state project) bse_project_get_state (project); BseProject* project; The project RETURNS: BseProjectState state; Project playback/activation state Retrieve the current project state. (bse-project-get-supers project) bse_project_get_supers (project); BseProject* project; project RETURNS: BseProxySeq* super_list; Retrieve all supers of this project. (bse-project-is-playing project) bse_project_is_playing (project); BseProject* project; The project RETURNS: SfiBool is_playing; Whether the project is currently producing sound Check whether a project is currently playing (bse-project-list-uname-paths project item-type) bse_project_list_uname_paths (project, item_type); BseProject* project; project const gchar* item_type; item-type RETURNS: BseStringSeq* uname_paths; List uname paths for all items of a specified type within this project. By their uname paths, items are uniquely identifyable within a project. (bse-project-match-items-by-uname project item-type uname) bse_project_match_items_by_uname (project, item_type, uname); BseProject* project; project const gchar* item_type; item-type const gchar* uname; uname RETURNS: BseProxySeq* item_list; Retrieve all items of a specific type within a project with matching uname (bse-project-play project) bse_project_play (project); BseProject* project; The project RETURNS: BseErrorType error; Activate a project and start project playback (and already playing project is first halted). (bse-project-start-playback project) bse_project_start_playback (project); BseProject* project; The project Start playback in an activated project. (bse-project-stop project) bse_project_stop (project); BseProject* project; The project Stop project playback and deactivate project. (bse-project-stop-playback project) bse_project_stop_playback (project); BseProject* project; The project Stop project playback. (bse-snet-can-create-source snet module-type)