New upstream release 0.8
Various small specfile improvements Enable vala bindings
This commit is contained in:
parent
0075d54f35
commit
9c8f0e1ee5
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@
|
||||
/spice-gtk-0.7.tar.bz2
|
||||
/spice-gtk-0.7.1-d5a8.tar.bz2
|
||||
/spice-gtk-0.7.39-ab64.tar.bz2
|
||||
/spice-gtk-0.8.tar.bz2
|
||||
|
32
0001-Handle-spice_audio_new-failures.patch
Normal file
32
0001-Handle-spice_audio_new-failures.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From 424c67ab1e6be34a35a5133f6037950b8bcb25b7 Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Fergeau <cfergeau@redhat.com>
|
||||
Date: Fri, 13 Jan 2012 19:19:40 +0100
|
||||
Subject: [PATCH spice-gtk 1/3] Handle spice_audio_new failures
|
||||
|
||||
spice_audio_new can return a NULL pointer when there's a failure
|
||||
during the initialization of the audio system. When this happens,
|
||||
we shouldn't keep initializing the spice audio channel as if nothing
|
||||
happened, but just stop the connection.
|
||||
This can be tested by forcing the "self" variable to NULL in
|
||||
spice_audio_new
|
||||
This should fix https://bugzilla.redhat.com/show_bug.cgi?id=772118
|
||||
---
|
||||
gtk/spice-audio.c | 2 ++
|
||||
1 files changed, 2 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/gtk/spice-audio.c b/gtk/spice-audio.c
|
||||
index f58a81e..3d6e34c 100644
|
||||
--- a/gtk/spice-audio.c
|
||||
+++ b/gtk/spice-audio.c
|
||||
@@ -221,6 +221,8 @@ SpiceAudio *spice_audio_new(SpiceSession *session, GMainContext *context,
|
||||
#ifdef WITH_GSTAUDIO
|
||||
self = SPICE_AUDIO(spice_gstaudio_new(session, context, name));
|
||||
#endif
|
||||
+ if (!self)
|
||||
+ return NULL;
|
||||
|
||||
spice_g_signal_connect_object(session, "notify::enable-audio", G_CALLBACK(session_enable_audio), self, 0);
|
||||
spice_g_signal_connect_object(session, "channel-new", G_CALLBACK(channel_new), self, 0);
|
||||
--
|
||||
1.7.7.4
|
||||
|
141
0002-spice-channel-Allow-calling-spice_msg_out_send-from-.patch
Normal file
141
0002-spice-channel-Allow-calling-spice_msg_out_send-from-.patch
Normal file
@ -0,0 +1,141 @@
|
||||
From 3cf733aa98df7cdceaf8ac25b25802a606a9d6e6 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Mon, 16 Jan 2012 15:28:00 +0100
|
||||
Subject: [PATCH spice-gtk 3/3] spice-channel: Allow calling
|
||||
spice_msg_out_send from any context
|
||||
|
||||
spice_msg_out can be not only called from system context and usb event
|
||||
handling thread context, but also from co-routine context. Calling from
|
||||
co-routine context happens when a response gets send synchronously from
|
||||
the handle_msg handler for a certain received packet. This happens with
|
||||
certain usbredir commands.
|
||||
|
||||
This triggers the following assert in the coroutine code:
|
||||
"GSpice-CRITICAL **: g_coroutine_wakeup: assertion `coroutine !=
|
||||
g_coroutine_self()' failed"
|
||||
|
||||
This patch fixes this by making spice_msg_out_send callable from any
|
||||
context and at the same time changing the code to not do unnecessary
|
||||
wakeups.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
gtk/spice-channel-priv.h | 2 +-
|
||||
gtk/spice-channel.c | 52 ++++++++++++++++++++++++++++++++++-----------
|
||||
2 files changed, 40 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/gtk/spice-channel-priv.h b/gtk/spice-channel-priv.h
|
||||
index ebdc5ce..5cd7ddb 100644
|
||||
--- a/gtk/spice-channel-priv.h
|
||||
+++ b/gtk/spice-channel-priv.h
|
||||
@@ -102,7 +102,7 @@ struct _SpiceChannelPrivate {
|
||||
GQueue xmit_queue;
|
||||
gboolean xmit_queue_blocked;
|
||||
GStaticMutex xmit_queue_lock;
|
||||
- GThread *main_thread;
|
||||
+ guint xmit_queue_wakeup_id;
|
||||
|
||||
char name[16];
|
||||
enum spice_channel_state state;
|
||||
diff --git a/gtk/spice-channel.c b/gtk/spice-channel.c
|
||||
index 83cd344..bdfb02b 100644
|
||||
--- a/gtk/spice-channel.c
|
||||
+++ b/gtk/spice-channel.c
|
||||
@@ -110,7 +110,6 @@ static void spice_channel_init(SpiceChannel *channel)
|
||||
spice_channel_set_common_capability(channel, SPICE_COMMON_CAP_MINI_HEADER);
|
||||
g_queue_init(&c->xmit_queue);
|
||||
g_static_mutex_init(&c->xmit_queue_lock);
|
||||
- c->main_thread = g_thread_self();
|
||||
}
|
||||
|
||||
static void spice_channel_constructed(GObject *gobject)
|
||||
@@ -649,14 +648,32 @@ void spice_msg_out_unref(SpiceMsgOut *out)
|
||||
static gboolean spice_channel_idle_wakeup(gpointer user_data)
|
||||
{
|
||||
SpiceChannel *channel = SPICE_CHANNEL(user_data);
|
||||
+ SpiceChannelPrivate *c = channel->priv;
|
||||
+
|
||||
+ /*
|
||||
+ * Note:
|
||||
+ *
|
||||
+ * - This must be done before the wakeup as that may eventually
|
||||
+ * call channel_reset() which checks this.
|
||||
+ * - The lock calls are really necessary, this fixes the following race:
|
||||
+ * 1) usb-event-thread calls spice_msg_out_send()
|
||||
+ * 2) spice_msg_out_send calls g_timeout_add_full(...)
|
||||
+ * 3) we run, set xmit_queue_wakeup_id to 0
|
||||
+ * 4) spice_msg_out_send stores the result of g_timeout_add_full() in
|
||||
+ * xmit_queue_wakeup_id, overwriting the 0 we just stored
|
||||
+ * 5) xmit_queue_wakeup_id now says there is a wakeup pending which is
|
||||
+ * false
|
||||
+ */
|
||||
+ g_static_mutex_lock(&c->xmit_queue_lock);
|
||||
+ c->xmit_queue_wakeup_id = 0;
|
||||
+ g_static_mutex_unlock(&c->xmit_queue_lock);
|
||||
|
||||
spice_channel_wakeup(channel, FALSE);
|
||||
- g_object_unref(channel);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
-/* system context */
|
||||
+/* any context (system/co-routine/usb-event-thread) */
|
||||
G_GNUC_INTERNAL
|
||||
void spice_msg_out_send(SpiceMsgOut *out)
|
||||
{
|
||||
@@ -664,17 +681,23 @@ void spice_msg_out_send(SpiceMsgOut *out)
|
||||
g_return_if_fail(out->channel != NULL);
|
||||
|
||||
g_static_mutex_lock(&out->channel->priv->xmit_queue_lock);
|
||||
- if (!out->channel->priv->xmit_queue_blocked)
|
||||
+ if (!out->channel->priv->xmit_queue_blocked) {
|
||||
+ gboolean was_empty;
|
||||
+
|
||||
+ was_empty = g_queue_is_empty(&out->channel->priv->xmit_queue);
|
||||
g_queue_push_tail(&out->channel->priv->xmit_queue, out);
|
||||
- g_static_mutex_unlock(&out->channel->priv->xmit_queue_lock);
|
||||
|
||||
- /* TODO: we currently flush/wakeup immediately all buffered messages */
|
||||
- if (g_thread_self() != out->channel->priv->main_thread)
|
||||
- /* We use g_timeout_add_full so that can specify the priority */
|
||||
- g_timeout_add_full(G_PRIORITY_HIGH, 0, spice_channel_idle_wakeup,
|
||||
- g_object_ref(out->channel), NULL);
|
||||
- else
|
||||
- spice_channel_wakeup(out->channel, FALSE);
|
||||
+ /* One wakeup is enough to empty the entire queue -> only do a wakeup
|
||||
+ if the queue was empty, and there isn't one pending already. */
|
||||
+ if (was_empty && !out->channel->priv->xmit_queue_wakeup_id) {
|
||||
+ out->channel->priv->xmit_queue_wakeup_id =
|
||||
+ /* Use g_timeout_add_full so that can specify the priority */
|
||||
+ g_timeout_add_full(G_PRIORITY_HIGH, 0,
|
||||
+ spice_channel_idle_wakeup,
|
||||
+ out->channel, NULL);
|
||||
+ }
|
||||
+ }
|
||||
+ g_static_mutex_unlock(&out->channel->priv->xmit_queue_lock);
|
||||
}
|
||||
|
||||
/* coroutine context */
|
||||
@@ -1688,7 +1711,6 @@ error:
|
||||
}
|
||||
|
||||
/* system context */
|
||||
-/* TODO: we currently flush/wakeup immediately all buffered messages */
|
||||
G_GNUC_INTERNAL
|
||||
void spice_channel_wakeup(SpiceChannel *channel, gboolean cancel)
|
||||
{
|
||||
@@ -2344,6 +2366,10 @@ static void channel_reset(SpiceChannel *channel, gboolean migrating)
|
||||
c->xmit_queue_blocked = TRUE; /* Disallow queuing new messages */
|
||||
g_queue_foreach(&c->xmit_queue, (GFunc)spice_msg_out_unref, NULL);
|
||||
g_queue_clear(&c->xmit_queue);
|
||||
+ if (c->xmit_queue_wakeup_id) {
|
||||
+ g_source_remove(c->xmit_queue_wakeup_id);
|
||||
+ c->xmit_queue_wakeup_id = 0;
|
||||
+ }
|
||||
g_static_mutex_unlock(&c->xmit_queue_lock);
|
||||
|
||||
g_array_set_size(c->remote_common_caps, 0);
|
||||
--
|
||||
1.7.7.4
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
7043735c55396bf634c27c5a8adb94a1 spice-gtk-0.7.39-ab64.tar.bz2
|
||||
761b6c3d74d962d437bdd72f54292498 spice-gtk-0.8.tar.bz2
|
||||
|
@ -1,20 +0,0 @@
|
||||
--- a/gtk/controller/controller.c
|
||||
+++ b/gtk/controller/controller.c
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
#include <glib.h>
|
||||
#include <glib-object.h>
|
||||
+#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <spice/controller_prot.h>
|
||||
--- a/gtk/controller/menu.c
|
||||
+++ b/gtk/controller/menu.c
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
#include <glib.h>
|
||||
#include <glib-object.h>
|
||||
+#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <spice/controller_prot.h>
|
@ -8,23 +8,26 @@
|
||||
%if 0%{?fedora} >= 15
|
||||
%define with_gtk3 1
|
||||
%endif
|
||||
%define _version_suffix -ab64
|
||||
|
||||
#define _version_suffix -ab64
|
||||
|
||||
Name: spice-gtk
|
||||
Version: 0.7.39
|
||||
Release: 3%{?dist}
|
||||
Summary: A GTK2 widget for SPICE clients
|
||||
Version: 0.8
|
||||
Release: 1%{?dist}
|
||||
Summary: A GTK+ widget for SPICE clients
|
||||
|
||||
Group: System Environment/Libraries
|
||||
License: LGPLv2+
|
||||
URL: http://spice-space.org/page/Spice-Gtk
|
||||
Source0: http://www.spice-space.org/download/gtk/%{name}-%{version}%{?_version_suffix}.tar.bz2
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
# 2 fixes from upstream git
|
||||
Patch0: 0001-Handle-spice_audio_new-failures.patch
|
||||
Patch1: 0002-spice-channel-Allow-calling-spice_msg_out_send-from-.patch
|
||||
|
||||
BuildRequires: intltool
|
||||
BuildRequires: gtk2-devel >= 2.14
|
||||
BuildRequires: spice-protocol >= 0.9.0
|
||||
BuildRequires: usbredir-devel >= 0.3.1
|
||||
BuildRequires: spice-protocol >= 0.10.1
|
||||
BuildRequires: usbredir-devel >= 0.3.3
|
||||
BuildRequires: libusb1-devel >= 1.0.9
|
||||
BuildRequires: libgudev1-devel
|
||||
BuildRequires: perl-Text-CSV
|
||||
@ -34,12 +37,16 @@ BuildRequires: pygtk2-devel python-devel zlib-devel
|
||||
BuildRequires: cyrus-sasl-devel
|
||||
BuildRequires: libcacard-devel
|
||||
BuildRequires: gobject-introspection-devel
|
||||
BuildRequires: libacl-devel
|
||||
BuildRequires: polkit-devel
|
||||
BuildRequires: gtk-doc
|
||||
BuildRequires: vala-tools
|
||||
%if %{with_gtk3}
|
||||
BuildRequires: gtk3-devel
|
||||
%endif
|
||||
# Hack because of bz #613466
|
||||
BuildRequires: libtool
|
||||
Requires: spice-glib%{?_isa} = %{version}-%{release}
|
||||
|
||||
ExclusiveArch: %{ix86} x86_64
|
||||
|
||||
@ -49,8 +56,8 @@ Client libraries for SPICE desktop servers.
|
||||
%package devel
|
||||
Summary: Development files to build GTK2 applications with spice-gtk-2.0
|
||||
Group: Development/Libraries
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: spice-glib-devel = %{version}-%{release}
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
Requires: spice-glib-devel%{?_isa} = %{version}-%{release}
|
||||
Requires: pkgconfig
|
||||
Requires: gtk2-devel
|
||||
|
||||
@ -69,7 +76,7 @@ spice-client-glib-2.0 is a SPICE client library for GLib2.
|
||||
%package -n spice-glib-devel
|
||||
Summary: Development files to build Glib2 applications with spice-glib-2.0
|
||||
Group: Development/Libraries
|
||||
Requires: spice-glib = %{version}-%{release}
|
||||
Requires: spice-glib%{?_isa} = %{version}-%{release}
|
||||
Requires: pkgconfig
|
||||
Requires: glib2-devel
|
||||
|
||||
@ -83,6 +90,7 @@ Libraries, includes, etc. to compile with the spice-glib-2.0 libraries
|
||||
%package -n spice-gtk3
|
||||
Summary: A GTK3 widget for SPICE clients
|
||||
Group: Development/Libraries
|
||||
Requires: spice-glib%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description -n spice-gtk3
|
||||
spice-client-glib-3.0 is a SPICE client library for Gtk3.
|
||||
@ -90,8 +98,8 @@ spice-client-glib-3.0 is a SPICE client library for Gtk3.
|
||||
%package -n spice-gtk3-devel
|
||||
Summary: Development files to build GTK3 applications with spice-gtk-3.0
|
||||
Group: Development/Libraries
|
||||
Requires: spice-gtk3 = %{version}-%{release}
|
||||
Requires: spice-glib-devel = %{version}-%{release}
|
||||
Requires: spice-gtk3%{?_isa} = %{version}-%{release}
|
||||
Requires: spice-glib-devel%{?_isa} = %{version}-%{release}
|
||||
Requires: pkgconfig
|
||||
Requires: gtk3-devel
|
||||
|
||||
@ -99,6 +107,15 @@ Requires: gtk3-devel
|
||||
spice-client-gtk-3.0 provides a SPICE viewer widget for GTK3.
|
||||
|
||||
Libraries, includes, etc. to compile with the spice-gtk3 libraries
|
||||
|
||||
%package -n spice-gtk3-vala
|
||||
Summary: Vala bindings for the spice-gtk-3.0 library
|
||||
Group: Development/Libraries
|
||||
Requires: spice-gtk3%{?_isa} = %{version}-%{release}
|
||||
Requires: spice-gtk3-devel%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description -n spice-gtk3-vala
|
||||
A module allowing use of the spice-gtk-3.0 widget from vala
|
||||
%endif
|
||||
|
||||
%package python
|
||||
@ -120,9 +137,15 @@ Simple clients for interacting with SPICE servers.
|
||||
spicy is a client to a SPICE desktop server.
|
||||
snappy is a tool to capture screen-shots of a SPICE desktop.
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q -n spice-gtk-%{version}%{?_version_suffix} -c
|
||||
|
||||
pushd spice-gtk-%{version}%{?_version_suffix}
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
popd
|
||||
|
||||
if [ -n '%{?_version_suffix}' ]; then
|
||||
mv spice-gtk-%{version}%{?_version_suffix} spice-gtk-%{version}
|
||||
fi
|
||||
@ -135,20 +158,19 @@ cp -a spice-gtk-%{version} spice-gtk3-%{version}
|
||||
%build
|
||||
|
||||
cd spice-gtk-%{version}
|
||||
%configure --enable-gtk-doc --with-gtk=2.0
|
||||
%configure --with-gtk=2.0 --enable-gtk-doc --with-usb-acl-helper-dir=%{_libexecdir}/spice-gtk/
|
||||
make %{?_smp_mflags}
|
||||
cd ..
|
||||
|
||||
%if %{with_gtk3}
|
||||
cd spice-gtk3-%{version}
|
||||
%configure --with-gtk=3.0
|
||||
%configure --with-gtk=3.0 --enable-vala --with-usb-acl-helper-dir=%{_libexecdir}/spice-gtk/
|
||||
make %{?_smp_mflags}
|
||||
cd ..
|
||||
%endif
|
||||
|
||||
|
||||
%install
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%if %{with_gtk3}
|
||||
cd spice-gtk3-%{version}
|
||||
@ -166,15 +188,20 @@ rm -f %{buildroot}%{_libdir}/python*/site-packages/*.a
|
||||
rm -f %{buildroot}%{_libdir}/python*/site-packages/*.la
|
||||
%find_lang %{name}
|
||||
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%post -p /sbin/ldconfig
|
||||
|
||||
%postun -p /sbin/ldconfig
|
||||
|
||||
%post -n spice-glib -p /sbin/ldconfig
|
||||
%postun -n spice-glib -p /sbin/ldconfig
|
||||
|
||||
%if %{with_gtk3}
|
||||
%post -n spice-gtk3 -p /sbin/ldconfig
|
||||
%postun -n spice-gtk3 -p /sbin/ldconfig
|
||||
%endif
|
||||
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%doc spice-gtk-%{version}/AUTHORS
|
||||
%doc spice-gtk-%{version}/COPYING
|
||||
%doc spice-gtk-%{version}/README
|
||||
@ -183,20 +210,19 @@ rm -rf %{buildroot}
|
||||
%{_libdir}/girepository-1.0/SpiceClientGtk-2.0.typelib
|
||||
|
||||
%files devel
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/libspice-client-gtk-2.0.so
|
||||
%{_includedir}/spice-client-gtk-2.0
|
||||
%{_libdir}/pkgconfig/spice-client-gtk-2.0.pc
|
||||
%{_datadir}/gir-1.0/SpiceClientGtk-2.0.gir
|
||||
|
||||
%files -n spice-glib -f %{name}.lang
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/libspice-client-glib-2.0.so.*
|
||||
%{_libdir}/libspice-controller.so.*
|
||||
%{_libdir}/girepository-1.0/SpiceClientGLib-2.0.typelib
|
||||
%{_libexecdir}/spice-gtk/spice-client-glib-usb-acl-helper
|
||||
%{_datadir}/polkit-1/actions/org.spice-space.lowlevelusbaccess.policy
|
||||
|
||||
%files -n spice-glib-devel
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/libspice-client-glib-2.0.so
|
||||
%{_libdir}/libspice-controller.so
|
||||
%{_includedir}/spice-client-glib-2.0
|
||||
@ -209,29 +235,36 @@ rm -rf %{buildroot}
|
||||
|
||||
%if %{with_gtk3}
|
||||
%files -n spice-gtk3
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/libspice-client-gtk-3.0.so.*
|
||||
%{_libdir}/girepository-1.0/SpiceClientGtk-3.0.typelib
|
||||
|
||||
%files -n spice-gtk3-devel
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/libspice-client-gtk-3.0.so
|
||||
%{_includedir}/spice-client-gtk-3.0
|
||||
%{_libdir}/pkgconfig/spice-client-gtk-3.0.pc
|
||||
%{_datadir}/gir-1.0/SpiceClientGtk-3.0.gir
|
||||
|
||||
%files -n spice-gtk3-vala
|
||||
%{_datadir}/vala/vapi/spice-client-glib-2.0.deps
|
||||
%{_datadir}/vala/vapi/spice-client-glib-2.0.vapi
|
||||
%{_datadir}/vala/vapi/spice-client-gtk-3.0.deps
|
||||
%{_datadir}/vala/vapi/spice-client-gtk-3.0.vapi
|
||||
%endif
|
||||
|
||||
%files python
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/python*/site-packages/SpiceClientGtk.so
|
||||
|
||||
%files tools
|
||||
%defattr(-,root,root,-)
|
||||
%{_bindir}/snappy
|
||||
%{_bindir}/spicy
|
||||
%{_bindir}/spicy-stats
|
||||
|
||||
%changelog
|
||||
* Mon Jan 16 2012 Hans de Goede <hdegoede@redhat.com> - 0.8-1
|
||||
- New upstream release 0.8
|
||||
- Various small specfile improvements
|
||||
- Enable vala bindings
|
||||
|
||||
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.7.39-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user