[gtk-vnc] Introduce pulse audio bridge for GVnc
- From: Daniel P. Berrange <dberrange src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk-vnc] Introduce pulse audio bridge for GVnc
- Date: Fri, 9 Dec 2011 17:41:29 +0000 (UTC)
commit 1814f6c54b8a5ee2e5daeb80a5b2d7fe5403250f
Author: Daniel P. Berrange <berrange redhat com>
Date: Fri Dec 9 15:23:42 2011 +0000
Introduce pulse audio bridge for GVnc
Introduce a new library libgvncpulse-1.0.so which provides an
implementation of VncAudio that uses Pulse Audio for output
* Makefile.am, gvncpulse-1.0.pc.in: Add pkgconfig file for
libgvncpulse
* gtk-vnc.spec.in: Add gvncpulse & gvncpulse-devel sub-RPMS
* src/Makefile.am, src/gvncpulse.h, src/libgvncpulse_sym.version
Add gvncpulse-1.0 library
* src/vncaudiopulse.c, src/vncaudiopulse.h: Pulse audio
impl of VncAudio
* vapi/Makefile.am: Build vala binding for pulse audio
Makefile.am | 5 +
configure.ac | 2 +
gtk-vnc.spec.in | 50 +++++++++++++
gvncpulse-1.0.pc.in | 11 +++
src/Makefile.am | 60 +++++++++++++++-
src/gvncpulse.h | 27 +++++++
src/libgvncpulse_sym.version | 8 ++
src/vncaudiopulse.c | 167 ++++++++++++++++++++++++++++++++++++++++++
src/vncaudiopulse.h | 70 ++++++++++++++++++
vapi/Makefile.am | 15 ++++
10 files changed, 414 insertions(+), 1 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index e67c84e..4f1ee00 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,8 +4,13 @@ ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS}
pkgconfig_DATA = @PACKAGE -$(GTK_VNC_API_VERSION).pc gvnc-1.0.pc
pkgconfigdir = $(libdir)/pkgconfig
+if HAVE_PULSEAUDIO
+pkgconfig_DATA += gvncpulse-1.0.pc
+endif
+
EXTRA_DIST = \
gvnc-1.0.pc.in \
+ gvncpulse-1.0.pc.in \
$(PACKAGE)-1.0.pc.in \
$(PACKAGE)-2.0.pc.in \
$(PACKAGE).spec.in \
diff --git a/configure.ac b/configure.ac
index 26a0d8f..831fce9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -209,6 +209,7 @@ PKG_CHECK_MODULES(PULSEAUDIO, libpulse-simple, WANT_PULSEAUDIO="yes", AC_MSG_NOT
if test "x$WANT_PULSEAUDIO" = xyes; then
AC_DEFINE_UNQUOTED([HAVE_PULSEAUDIO], 1,[Define if we have and want pulseaudio.])
fi
+AM_CONDITIONAL([HAVE_PULSEAUDIO], [test "x$WANT_PULSEAUDIO" = "xyes"])
AC_SUBST(PULSEAUDIO_CFLAGS)
AC_SUBST(PULSEAUDIO_LIBS)
@@ -444,6 +445,7 @@ AC_CONFIG_FILES(
po/Makefile.in
vapi/Makefile
gvnc-1.0.pc
+ gvncpulse-1.0.pc
gtk-vnc-1.0.pc
gtk-vnc-2.0.pc
gtk-vnc.spec
diff --git a/gtk-vnc.spec.in b/gtk-vnc.spec.in
index d7c7898..097e4f5 100644
--- a/gtk-vnc.spec.in
+++ b/gtk-vnc.spec.in
@@ -19,6 +19,8 @@
%define with_vala 1
%endif
+%define with_pulse 1
+
Summary: A GTK2 widget for VNC clients
Name: gtk-vnc
Version: @VERSION@
@@ -50,6 +52,9 @@ BuildRequires: gtk3-devel
%if %{with_vala}
BuildRequires: vala-tools
%endif
+%if %{with_pulse}
+BuildRequires: pulseaudio-libs-devel
+%endif
%description
gtk-vnc is a VNC viewer widget for GTK2. It is built using coroutines
@@ -114,6 +119,29 @@ with the raw protocol itself.
Libraries, includes, etc. to compile with the gvnc library
+%if %{with_pulse}
+%package -n gvncpulse
+Summary: A Pulse Audio bridge for VNC connections
+
+%description -n gvncpulse
+gvncpulse is a bridge to the Pulse Audio system for VNC.
+It allows VNC clients to play back audio on the local
+system
+
+%package -n gvncpulse-devel
+Summary: Libraries, includes, etc. to compile with the gvncpulse library
+Group: Development/Libraries
+Requires: gvncpulse = %{version}-%{release}
+Requires: pkgconfig
+
+%description -n gvncpulse-devel
+gvncpulse is a bridge to the Pulse Audio system for VNC.
+It allows VNC clients to play back audio on the local
+system
+
+Libraries, includes, etc. to compile with the gvnc library
+%endif
+
%package -n gvnc-tools
Summary: Command line VNC tools
Group: Applications/Internet
@@ -259,6 +287,28 @@ rm -fr %{buildroot}
%{_datadir}/gir-1.0/GVnc-1.0.gir
%endif
+%if %{with_pulse}
+%files -n gvncpulse -f %{name}.lang
+%defattr(-, root, root)
+%{_libdir}/libgvncpulse-1.0.so.*
+%if %{with_gir}
+%{_libdir}/girepository-1.0/GVncPulse-1.0.typelib
+%endif
+%if %{with_vala}
+%{_datadir}/vala/vapi/gvncpulse-1.0.vapi
+%endif
+
+%files -n gvncpulse-devel
+%defattr(-, root, root)
+%{_libdir}/libgvncpulse-1.0.so
+%dir %{_includedir}/gvncpulse-1.0/
+%{_includedir}/gvncpulse-1.0/*.h
+%{_libdir}/pkgconfig/gvncpulse-1.0.pc
+%if %{with_gir}
+%{_datadir}/gir-1.0/GVncPulse-1.0.gir
+%endif
+%endif
+
%files -n gvnc-tools
%defattr(-, root, root)
%doc gtk-vnc-%{version}/AUTHORS
diff --git a/gvncpulse-1.0.pc.in b/gvncpulse-1.0.pc.in
new file mode 100644
index 0000000..4768d7c
--- /dev/null
+++ b/gvncpulse-1.0.pc.in
@@ -0,0 +1,11 @@
+prefix= prefix@
+exec_prefix= exec_prefix@
+libdir= libdir@
+includedir= includedir@
+
+Name: GVNC Pulse
+Description: Pulse audio bridge for VNC client connections
+Requires: gvnc-1.0 = @VERSION@
+Version: @VERSION@
+Libs: -L${libdir} -lgvncpulse-1.0
+Cflags: -I${includedir}/gvncpulse-1.0
diff --git a/src/Makefile.am b/src/Makefile.am
index 0f25863..e63f366 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,15 +1,17 @@
-EXTRA_DIST = libgvnc_sym.version libgtk-vnc_sym.version vncmarshal.txt
+EXTRA_DIST = libgvnc_sym.version libgvncpulse_sym.version libgtk-vnc_sym.version vncmarshal.txt
lib_LTLIBRARIES = libgvnc-1.0.la
BUILT_SOURCES =
if USE_VERSION_DEFS
GVNC_VERSION_FILE = $(builddir)/libgvnc_sym.def
+GVNCPULSE_VERSION_FILE = $(builddir)/libgvncpulse_sym.def
GTK_VNC_VERSION_FILE = $(builddir)/libgtk-vnc_sym.def
BUILT_SOURCES += $(GVNC_VERSION_FILE) $(GTK_VNC_VERSION_FILE)
else
GVNC_VERSION_FILE = $(srcdir)/libgvnc_sym.version
+GVNCPULSE_VERSION_FILE = $(srcdir)/libgvncpulse_sym.version
GTK_VNC_VERSION_FILE = $(srcdir)/libgtk-vnc_sym.version
endif
@@ -87,6 +89,32 @@ libgvnc_1_0_la_SOURCES = \
vncmarshal.h vncmarshal.c \
vncutil.h vncutil.c
+if HAVE_PULSEAUDIO
+lib_LTLIBRARIES += libgvncpulse-1.0.la
+
+gvncpulse_includedir = $(includedir)/gvncpulse-1.0/
+gvncpulse_include_HEADERS = \
+ gvncpulse.h \
+ vncaudiopulse.h
+
+libgvncpulse_1_0_la_SOURCES = \
+ vncaudiopulse.h vncaudiopulse.c
+libgvncpulse_1_0_la_LIBADD = \
+ @GOBJECT_LIBS@ \
+ @PULSEAUDIO_LIBS@ \
+ libgvnc-1.0.la
+libgvncpulse_1_0_la_CFLAGS = \
+ @GOBJECT_CFLAGS@ \
+ @PULSEAUDIO_CFLAGS@ \
+ @WARNING_CFLAGS@ \
+ -DSYSCONFDIR=\""$(sysconfdir)"\" \
+ -DPACKAGE_LOCALE_DIR=\""$(datadir)/locale"\" \
+ -DG_LOG_DOMAIN=\"pulse-vnc\"
+libgvncpulse_1_0_la_LDFLAGS = \
+ $(VERSION_SCRIPT_FLAGS)$(GVNCPULSE_VERSION_FILE) \
+ -version-info 0:1:0 $(NO_UNDEFINED_FLAGS)
+endif
+
if WITH_UCONTEXT
libgvnc_1_0_la_SOURCES += continuation.h continuation.c coroutine_ucontext.c
EXTRA_DIST += coroutine_gthread.c
@@ -306,6 +334,9 @@ GVNC_INTROSPECTION_SRCS = \
$(builddir)/vncconnectionenums.h $(builddir)/vncconnectionenums.c \
$(srcdir)/vncutil.h $(srcdir)/vncutil.c
+GVNCPULSE_INTROSPECTION_SRCS = \
+ $(srcdir)/vncaudiopulse.h $(srcdir)/vncaudiopulse.c
+
GTK_VNC_INTROSPECTION_SRCS = \
$(srcdir)/vnccairoframebuffer.h $(srcdir)/vnccairoframebuffer.c \
$(srcdir)/vncdisplay.h $(srcdir)/vncdisplay.c \
@@ -341,6 +372,25 @@ GVnc-1.0.gir: libgvnc-1.0.la $(G_IR_SCANNER) Makefile.am
--pkg=gvnc-1.0 \
$(GVNC_INTROSPECTION_SRCS)
+GVncPulse-1.0.gir: libgvncpulse-1.0.la $(G_IR_SCANNER) Makefile.am
+ $(AM_V_GEN)PKG_CONFIG_PATH=$(top_builddir) $(G_IR_SCANNER) -v \
+ --namespace GVncPulse \
+ --nsversion 1.0 \
+ --include GObject-2.0 \
+ --include GVnc-1.0 \
+ $(PREFIX_ARGS) \
+ --library=$(builddir)/libgvncpulse-1.0.la \
+ --add-include-path=$(top_srcdir) \
+ --add-include-path=$(srcdir) \
+ --add-include-path=$(builddir) \
+ --c-include="gvncpulse.h" \
+ --output $@ \
+ -I$(top_srcdir) \
+ -I$(srcdir) \
+ --verbose \
+ --pkg=gvncpulse-1.0 \
+ $(GVNCPULSE_INTROSPECTION_SRCS)
+
GtkVnc-$(GTK_VNC_API_VERSION).gir: GVnc-1.0.gir libgtk-vnc-$(GTK_VNC_API_VERSION).la $(G_IR_SCANNER) Makefile.am
$(AM_V_GEN)PKG_CONFIG_PATH=$(top_builddir) $(G_IR_SCANNER) -v \
--namespace GtkVnc \
@@ -364,9 +414,17 @@ GtkVnc-$(GTK_VNC_API_VERSION).gir: GVnc-1.0.gir libgtk-vnc-$(GTK_VNC_API_VERSION
girdir = $(datadir)/gir-1.0
gir_DATA = GVnc-1.0.gir GtkVnc-$(GTK_VNC_API_VERSION).gir
+if HAVE_PULSEAUDIO
+gir_DATA += GVncPulse-1.0.gir
+endif
+
typelibsdir = $(libdir)/girepository-1.0
typelibs_DATA = GVnc-1.0.typelib GtkVnc-$(GTK_VNC_API_VERSION).typelib
+if HAVE_PULSEAUDIO
+typelibs_DATA += GVncPulse-1.0.typelib
+endif
+
%.typelib: %.gir
$(AM_V_GEN)$(G_IR_COMPILER) \
--includedir=$(srcdir) \
diff --git a/src/gvncpulse.h b/src/gvncpulse.h
new file mode 100644
index 0000000..de70663
--- /dev/null
+++ b/src/gvncpulse.h
@@ -0,0 +1,27 @@
+/*
+ * GTK VNC Widget
+ *
+ * Copyright (C) 2009-2010 Daniel P. Berrange <dan berrange com>
+ *
+ * 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.0 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef GVNCPULSE_H
+#define GVNCPULSE_H
+
+#include <gvnc.h>
+#include <vncaudiopulse.h>
+
+#endif
diff --git a/src/libgvncpulse_sym.version b/src/libgvncpulse_sym.version
new file mode 100644
index 0000000..f720239
--- /dev/null
+++ b/src/libgvncpulse_sym.version
@@ -0,0 +1,8 @@
+{
+ global:
+ vnc_audio_pulse_get_type;
+ vnc_audio_pulse_new;
+
+ local:
+ *;
+};
diff --git a/src/vncaudiopulse.c b/src/vncaudiopulse.c
new file mode 100644
index 0000000..b97a0e0
--- /dev/null
+++ b/src/vncaudiopulse.c
@@ -0,0 +1,167 @@
+/*
+ * GTK VNC Widget
+ *
+ * Copyright (C) 2010 Daniel P. Berrange <dan berrange com>
+ *
+ * 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.0 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <pulse/simple.h>
+#include <pulse/pulseaudio.h>
+
+#include "vncaudiopulse.h"
+#include "vncutil.h"
+
+#define VNC_AUDIO_PULSE_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE((obj), VNC_TYPE_AUDIO_PULSE, VncAudioPulsePrivate))
+
+struct _VncAudioPulsePrivate {
+ pa_simple *pa;
+};
+
+
+G_DEFINE_TYPE(VncAudioPulse, vnc_audio_pulse, VNC_TYPE_BASE_AUDIO);
+
+
+static gboolean vnc_audio_pulse_playback_start(VncAudio *audio,
+ VncAudioFormat *format)
+{
+ VncAudioPulse *pulse = VNC_AUDIO_PULSE(audio);
+ VncAudioPulsePrivate *priv = pulse->priv;
+ pa_sample_spec pulse_spec;
+ pa_buffer_attr buffer_attr;
+
+ if (priv->pa)
+ return FALSE;
+
+ switch (format->format) {
+ case VNC_AUDIO_FORMAT_RAW_U8:
+ pulse_spec.format = PA_SAMPLE_U8;
+ break;
+ case VNC_AUDIO_FORMAT_RAW_S16:
+ pulse_spec.format = PA_SAMPLE_S16LE;
+ break;
+ case VNC_AUDIO_FORMAT_RAW_S32:
+ pulse_spec.format = PA_SAMPLE_S32LE;
+ break;
+
+ case VNC_AUDIO_FORMAT_RAW_S8:
+ case VNC_AUDIO_FORMAT_RAW_U16:
+ case VNC_AUDIO_FORMAT_RAW_U32:
+ default:
+ return FALSE;
+ }
+ pulse_spec.channels = format->nchannels;
+ pulse_spec.rate = format->frequency;
+
+ /* FIXME: we might want customizable latency */
+ memset(&buffer_attr, 0, sizeof(buffer_attr));
+ buffer_attr.maxlength = -1;
+ buffer_attr.tlength = pa_usec_to_bytes(100 * PA_USEC_PER_MSEC, &pulse_spec);
+ buffer_attr.prebuf = -1;
+ buffer_attr.minreq = -1;
+
+ priv->pa = pa_simple_new(NULL, "gvnc", PA_STREAM_PLAYBACK,
+ NULL, "VNC Remote Desktop",
+ &pulse_spec, NULL, &buffer_attr, NULL);
+ return TRUE;
+}
+
+static gboolean vnc_audio_pulse_playback_stop(VncAudio *audio)
+{
+ VncAudioPulse *pulse = VNC_AUDIO_PULSE(audio);
+ VncAudioPulsePrivate *priv = pulse->priv;
+
+ if (!priv->pa)
+ return FALSE;
+
+ pa_simple_drain(priv->pa, NULL);
+ pa_simple_free(priv->pa);
+ priv->pa = NULL;
+
+ return TRUE;
+}
+
+static gboolean vnc_audio_pulse_playback_data(VncAudio *audio,
+ VncAudioSample *sample)
+{
+ VncAudioPulse *pulse = VNC_AUDIO_PULSE(audio);
+ VncAudioPulsePrivate *priv = pulse->priv;
+
+ if (pa_simple_write(priv->pa, sample->data, sample->length, NULL) < 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+static void vnc_audio_pulse_finalize(GObject *object)
+{
+ VncAudioPulse *ab = VNC_AUDIO_PULSE(object);
+ VncAudioPulsePrivate *priv = ab->priv;
+
+ VNC_DEBUG("Finalize VncAudioPulse=%p", ab);
+
+ if (priv->pa)
+ pa_simple_free(priv->pa);
+
+ G_OBJECT_CLASS(vnc_audio_pulse_parent_class)->finalize (object);
+}
+
+
+static void vnc_audio_pulse_class_init(VncAudioPulseClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = vnc_audio_pulse_finalize;
+
+ g_type_class_add_private(klass, sizeof(VncAudioPulsePrivate));
+}
+
+
+void vnc_audio_pulse_init(VncAudioPulse *fb)
+{
+ VncAudioPulsePrivate *priv;
+
+ priv = fb->priv = VNC_AUDIO_PULSE_GET_PRIVATE(fb);
+
+ memset(priv, 0, sizeof(*priv));
+
+ g_signal_connect(G_OBJECT(fb), "vnc-audio-playback-start",
+ G_CALLBACK(vnc_audio_pulse_playback_start), NULL);
+ g_signal_connect(G_OBJECT(fb), "vnc-audio-playback-stop",
+ G_CALLBACK(vnc_audio_pulse_playback_stop), NULL);
+ g_signal_connect(G_OBJECT(fb), "vnc-audio-playback-data",
+ G_CALLBACK(vnc_audio_pulse_playback_data), NULL);
+}
+
+
+VncAudioPulse *vnc_audio_pulse_new(void)
+{
+ return VNC_AUDIO_PULSE(g_object_new(VNC_TYPE_AUDIO_PULSE,
+ NULL));
+}
+
+
+/*
+ * Local variables:
+ * c-indent-level: 8
+ * c-basic-offset: 8
+ * tab-width: 8
+ * End:
+ */
diff --git a/src/vncaudiopulse.h b/src/vncaudiopulse.h
new file mode 100644
index 0000000..3543bd4
--- /dev/null
+++ b/src/vncaudiopulse.h
@@ -0,0 +1,70 @@
+/*
+ * GTK VNC Widget
+ *
+ * Copyright (C) 2010 Daniel P. Berrange <dan berrange com>
+ *
+ * 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.0 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef VNC_AUDIO_PULSE_H
+#define VNC_AUDIO_PULSE_H
+
+#include <glib-object.h>
+
+#include <vncbaseaudio.h>
+
+G_BEGIN_DECLS
+
+#define VNC_TYPE_AUDIO_PULSE (vnc_audio_pulse_get_type ())
+#define VNC_AUDIO_PULSE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VNC_TYPE_AUDIO_PULSE, VncAudioPulse))
+#define VNC_AUDIO_PULSE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VNC_TYPE_AUDIO_PULSE, VncAudioPulseClass))
+#define VNC_IS_AUDIO_PULSE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VNC_TYPE_AUDIO_PULSE))
+#define VNC_IS_AUDIO_PULSE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VNC_TYPE_AUDIO_PULSE))
+#define VNC_AUDIO_PULSE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VNC_TYPE_AUDIO_PULSE, VncAudioPulseClass))
+
+
+typedef struct _VncAudioPulse VncAudioPulse;
+typedef struct _VncAudioPulsePrivate VncAudioPulsePrivate;
+typedef struct _VncAudioPulseClass VncAudioPulseClass;
+
+struct _VncAudioPulse
+{
+ VncBaseAudio parent;
+
+ VncAudioPulsePrivate *priv;
+};
+
+struct _VncAudioPulseClass
+{
+ VncBaseAudioClass parent_class;
+
+};
+
+
+GType vnc_audio_pulse_get_type(void) G_GNUC_CONST;
+
+VncAudioPulse *vnc_audio_pulse_new(void);
+
+G_END_DECLS
+
+#endif /* VNC_AUDIO_PULSE_H */
+
+/*
+ * Local variables:
+ * c-indent-level: 8
+ * c-basic-offset: 8
+ * tab-width: 8
+ * End:
+ */
diff --git a/vapi/Makefile.am b/vapi/Makefile.am
index 780e071..f91264b 100644
--- a/vapi/Makefile.am
+++ b/vapi/Makefile.am
@@ -8,11 +8,26 @@ vapi_DATA = \
gvnc-1.0.vapi \
$(NULL)
+if HAVE_PULSEAUDIO
+vapi_DATA += \
+ gvncpulse-1.0.vapi
+endif
+
gvnc-1.0.vapi: $(top_builddir)/src/GVnc-1.0.gir
$(AM_V_GEN)$(VAPIGEN) \
--library gvnc-1.0 \
$<
+if HAVE_PULSEAUDIO
+gvncpulse-1.0.vapi: $(top_builddir)/src/GVncPulse-1.0.gir gvnc-1.0.vapi
+ $(AM_V_GEN)$(VAPIGEN) \
+ --vapidir=$(builddir) \
+ --pkg gvnc-1.0 \
+ --library gvncpulse-1.0 \
+ --girdir=$(top_builddir)/src \
+ $<
+endif
+
gtk-vnc-$(GTK_VNC_API_VERSION).vapi: $(top_builddir)/src/GtkVnc-$(GTK_VNC_API_VERSION).gir gvnc-1.0.vapi
$(AM_V_GEN)$(VAPIGEN) \
--vapidir=$(builddir) \
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]