Update to 0.11.3

This commit is contained in:
Søren Sandmann Pedersen 2012-09-06 13:05:12 -04:00
parent f6aa842b4b
commit 4a8f34ac5f
12 changed files with 10 additions and 496 deletions

1
.gitignore vendored
View File

@ -12,3 +12,4 @@ spice-0.5.3.tar.bz2
/spice-0.9.1.tar.bz2
/spice-0.10.0.tar.bz2
/spice-0.10.1.tar.bz2
/spice-0.11.3.tar.bz2

View File

@ -1,65 +0,0 @@
From c90d42e2acb6655508e37d42925dc6062d75f479 Mon Sep 17 00:00:00 2001
From: Alon Levy <alevy@redhat.com>
Date: Wed, 21 Mar 2012 17:55:23 +0200
Subject: [PATCH 1/4] server/red_memslots: drop two unused functions
cb_get_virt and cb_validate_virt have disappeared a long time ago,
not needed since:
commit 5ac88aa79fa6445f96e5419d8bf4fce81da63b90
Author: Gerd Hoffmann <kraxel@redhat.com>
Date: Thu Jul 1 17:55:33 2010 +0200
Properly parse QXLImage to the new-world SpiceImage
SpiceImage now replaces RedImage and has all image types in it.
All image data are now chunked (and as such not copied when demarshalling).
---
server/red_memslots.c | 14 --------------
server/red_memslots.h | 5 -----
2 files changed, 19 deletions(-)
diff --git a/server/red_memslots.c b/server/red_memslots.c
index d98f38c..5057218 100644
--- a/server/red_memslots.c
+++ b/server/red_memslots.c
@@ -127,20 +127,6 @@ unsigned long get_virt(RedMemSlotInfo *info, unsigned long addr, uint32_t add_si
return h_virt;
}
-void *cb_get_virt(void *opaque, unsigned long addr,
- uint32_t add_size, uint32_t group_id)
-{
- return (void *)get_virt((RedMemSlotInfo *)opaque, addr, add_size, group_id);
-}
-
-void cb_validate_virt(void *opaque,
- unsigned long virt, unsigned long from_addr,
- uint32_t add_size, uint32_t group_id)
-{
- int slot_id = get_memslot_id((RedMemSlotInfo *)opaque, from_addr);
- validate_virt((RedMemSlotInfo *)opaque, virt, slot_id, add_size, group_id);
-}
-
void *validate_chunk (RedMemSlotInfo *info, QXLPHYSICAL data, uint32_t group_id, uint32_t *data_size_out, QXLPHYSICAL *next_out)
{
QXLDataChunk *chunk;
diff --git a/server/red_memslots.h b/server/red_memslots.h
index 18d5208..7aea0a3 100644
--- a/server/red_memslots.h
+++ b/server/red_memslots.h
@@ -60,11 +60,6 @@ unsigned long get_virt(RedMemSlotInfo *info, unsigned long addr, uint32_t add_si
int group_id);
void *validate_chunk (RedMemSlotInfo *info, QXLPHYSICAL data, uint32_t group_id, uint32_t *data_size_out, QXLPHYSICAL *next_out);
-void *cb_get_virt(void *opaque, unsigned long addr,
- uint32_t add_size, uint32_t group_id);
-void cb_validate_virt(void *opaque,
- unsigned long virt, unsigned long from_addr,
- uint32_t add_size, uint32_t group_id);
void red_memslot_info_init(RedMemSlotInfo *info,
uint32_t num_groups, uint32_t num_slots,
uint8_t generation_bits,
--
1.7.10

View File

@ -1,47 +0,0 @@
From 9ee43c37ce8dc028695d81728ac6da88bb79b653 Mon Sep 17 00:00:00 2001
From: Alon Levy <alevy@redhat.com>
Date: Wed, 21 Mar 2012 17:57:32 +0200
Subject: [PATCH 2/4] server/red_memslots: use QXLPHYSICAL for addresses
Cannot assume unsigned long == QXLPHYSICAL, not true for 32 bit
architectures.
---
server/red_memslots.c | 2 +-
server/red_memslots.h | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/server/red_memslots.c b/server/red_memslots.c
index 5057218..8c8f3cc 100644
--- a/server/red_memslots.c
+++ b/server/red_memslots.c
@@ -91,7 +91,7 @@ void validate_virt(RedMemSlotInfo *info, unsigned long virt, int slot_id,
}
}
-unsigned long get_virt(RedMemSlotInfo *info, unsigned long addr, uint32_t add_size,
+unsigned long get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t add_size,
int group_id)
{
int slot_id;
diff --git a/server/red_memslots.h b/server/red_memslots.h
index 7aea0a3..75754d0 100644
--- a/server/red_memslots.h
+++ b/server/red_memslots.h
@@ -43,12 +43,12 @@ typedef struct RedMemSlotInfo {
unsigned long memslot_clean_virt_mask;
} RedMemSlotInfo;
-static inline int get_memslot_id(RedMemSlotInfo *info, unsigned long addr)
+static inline int get_memslot_id(RedMemSlotInfo *info, uint64_t addr)
{
return addr >> info->memslot_id_shift;
}
-static inline int get_generation(RedMemSlotInfo *info, unsigned long addr)
+static inline int get_generation(RedMemSlotInfo *info, uint64_t addr)
{
return (addr >> info->memslot_gen_shift) & info->memslot_gen_mask;
}
--
1.7.10

View File

@ -1,28 +0,0 @@
From f13ca1277418ed91d009a8db0faf36fbd1c0a7e0 Mon Sep 17 00:00:00 2001
From: Alon Levy <alevy@redhat.com>
Date: Tue, 20 Mar 2012 18:59:21 +0200
Subject: [PATCH 3/4] server/red_worker: fix for case where ASSERT is compiled
out
---
server/red_worker.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/server/red_worker.c b/server/red_worker.c
index 80fa825..8a4315d 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -8379,9 +8379,8 @@ static void red_display_marshall_stream_clip(RedChannelClient *rcc,
{
DisplayChannelClient *dcc = RCC_TO_DCC(rcc);
StreamAgent *agent = item->stream_agent;
- Stream *stream = agent->stream;
- ASSERT(stream);
+ ASSERT(agent->stream);
red_channel_client_init_send_data(rcc, SPICE_MSG_DISPLAY_STREAM_CLIP, &item->base);
SpiceMsgDisplayStreamClip stream_clip;
--
1.7.10

View File

@ -1,83 +0,0 @@
From 3d0448314812457e027e513c2d0dc163c421914a Mon Sep 17 00:00:00 2001
From: Alon Levy <alevy@redhat.com>
Date: Tue, 20 Mar 2012 19:00:49 +0200
Subject: [PATCH 4/4] server/red_memslots: don't assume 64 bit environment
assumption that unsigned long == QXLPHYSICAL causes get_virt to compute
the wrong slot. Fix by replacing addr variables to be of type
QXLPHYSICAL.
---
server/red_memslots.c | 13 ++++++++-----
server/red_memslots.h | 4 ++--
2 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/server/red_memslots.c b/server/red_memslots.c
index 8c8f3cc..249b241 100644
--- a/server/red_memslots.c
+++ b/server/red_memslots.c
@@ -19,10 +19,12 @@
#include <config.h>
#endif
+#include <inttypes.h>
+
#include "red_common.h"
#include "red_memslots.h"
-static unsigned long __get_clean_virt(RedMemSlotInfo *info, unsigned long addr)
+static unsigned long __get_clean_virt(RedMemSlotInfo *info, QXLPHYSICAL addr)
{
return addr & info->memslot_clean_virt_mask;
}
@@ -46,7 +48,7 @@ static void print_memslots(RedMemSlotInfo *info)
}
}
-unsigned long get_virt_delta(RedMemSlotInfo *info, unsigned long addr, int group_id)
+unsigned long get_virt_delta(RedMemSlotInfo *info, QXLPHYSICAL addr, int group_id)
{
MemSlot *slot;
int slot_id;
@@ -107,7 +109,7 @@ unsigned long get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t add_size
slot_id = get_memslot_id(info, addr);
if (slot_id > info->num_memslots) {
print_memslots(info);
- PANIC("slot_id too big, addr=%lx", addr);
+ PANIC("slot_id too big, addr=%" PRIx64, addr);
}
slot = &info->mem_slots[group_id][slot_id];
@@ -165,10 +167,11 @@ void red_memslot_info_init(RedMemSlotInfo *info,
info->mem_slots[i] = spice_new0(MemSlot, num_slots);
}
+ /* TODO: use QXLPHYSICAL_BITS */
info->memslot_id_shift = 64 - info->mem_slot_bits;
info->memslot_gen_shift = 64 - (info->mem_slot_bits + info->generation_bits);
- info->memslot_gen_mask = ~((unsigned long)-1 << info->generation_bits);
- info->memslot_clean_virt_mask = (((unsigned long)(-1)) >>
+ info->memslot_gen_mask = ~((QXLPHYSICAL)-1 << info->generation_bits);
+ info->memslot_clean_virt_mask = (((QXLPHYSICAL)(-1)) >>
(info->mem_slot_bits + info->generation_bits));
}
diff --git a/server/red_memslots.h b/server/red_memslots.h
index 75754d0..d50587f 100644
--- a/server/red_memslots.h
+++ b/server/red_memslots.h
@@ -53,10 +53,10 @@ static inline int get_generation(RedMemSlotInfo *info, uint64_t addr)
return (addr >> info->memslot_gen_shift) & info->memslot_gen_mask;
}
-unsigned long get_virt_delta(RedMemSlotInfo *info, unsigned long addr, int group_id);
+unsigned long get_virt_delta(RedMemSlotInfo *info, QXLPHYSICAL addr, int group_id);
void validate_virt(RedMemSlotInfo *info, unsigned long virt, int slot_id,
uint32_t add_size, uint32_t group_id);
-unsigned long get_virt(RedMemSlotInfo *info, unsigned long addr, uint32_t add_size,
+unsigned long get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t add_size,
int group_id);
void *validate_chunk (RedMemSlotInfo *info, QXLPHYSICAL data, uint32_t group_id, uint32_t *data_size_out, QXLPHYSICAL *next_out);
--
1.7.10

View File

@ -1,35 +0,0 @@
From ba3e9b3d792145283ff125b111b013ba392cdcbe Mon Sep 17 00:00:00 2001
From: Yonit Halperin <yhalperi@redhat.com>
Date: Sun, 13 May 2012 14:21:28 +0300
Subject: [PATCH] server/red_worker: don't release self_bitmap unless refcount
is 0
RHBZ: 808936
---
server/red_worker.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/server/red_worker.c b/server/red_worker.c
index 473d0d6..60f30d3 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -1695,13 +1695,12 @@ static inline void put_red_drawable(RedWorker *worker, RedDrawable *drawable, ui
{
QXLReleaseInfoExt release_info_ext;
- if (self_bitmap) {
- red_put_image(self_bitmap);
- }
if (--drawable->refs) {
return;
}
-
+ if (self_bitmap) {
+ red_put_image(self_bitmap);
+ }
worker->red_drawable_count--;
release_info_ext.group_id = group_id;
release_info_ext.info = drawable->release_info;
--
1.7.10.1

View File

@ -1,27 +0,0 @@
From ce8e865cf1fcd7ee6ef2e6f8b33506df31e3345e Mon Sep 17 00:00:00 2001
From: Alon Levy <alevy@redhat.com>
Date: Mon, 7 May 2012 14:14:37 +0300
Subject: [PATCH 6/8] server/reds: add "usbredir" to recognized channel names
RHBZ: 819484
Signed-off-by: Alon Levy <alevy@redhat.com>
---
server/reds.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/server/reds.c b/server/reds.c
index 1696fbc..26d6f89 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3971,6 +3971,7 @@ SPICE_GNUC_VISIBLE int spice_server_set_channel_security(SpiceServer *s, const c
#ifdef USE_SMARTCARD
[ SPICE_CHANNEL_SMARTCARD] = "smartcard",
#endif
+ [ SPICE_CHANNEL_USBREDIR ] = "usbredir",
};
int i;
--
1.7.10.1

View File

@ -1,68 +0,0 @@
From 1ba5d956168b0d0b9a9f16a843bd1b13cf897e78 Mon Sep 17 00:00:00 2001
From: Yonit Halperin <yhalperi@redhat.com>
Date: Thu, 10 May 2012 12:26:01 +0300
Subject: [PATCH 7/8] server/mjpeg_encoder: Fix memory leak for the inital
output buffer given for each frame
---
server/mjpeg_encoder.c | 11 +++--------
server/mjpeg_encoder.h | 5 +++++
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/server/mjpeg_encoder.c b/server/mjpeg_encoder.c
index 6b68549..74062f5 100644
--- a/server/mjpeg_encoder.c
+++ b/server/mjpeg_encoder.c
@@ -105,7 +105,6 @@ typedef struct {
unsigned char ** outbuffer; /* target buffer */
size_t * outsize;
- unsigned char * newbuffer; /* newly allocated buffer */
uint8_t * buffer; /* start of buffer */
size_t bufsize;
} mem_destination_mgr;
@@ -129,9 +128,7 @@ static boolean empty_mem_output_buffer(j_compress_ptr cinfo)
memcpy(nextbuffer, dest->buffer, dest->bufsize);
- free(dest->newbuffer);
-
- dest->newbuffer = nextbuffer;
+ free(dest->buffer);
dest->pub.next_output_byte = nextbuffer + dest->bufsize;
dest->pub.free_in_buffer = dest->bufsize;
@@ -184,12 +181,10 @@ spice_jpeg_mem_dest(j_compress_ptr cinfo,
dest->pub.term_destination = term_mem_destination;
dest->outbuffer = outbuffer;
dest->outsize = outsize;
- dest->newbuffer = NULL;
-
if (*outbuffer == NULL || *outsize == 0) {
/* Allocate initial buffer */
- dest->newbuffer = *outbuffer = malloc(OUTPUT_BUF_SIZE);
- if (dest->newbuffer == NULL)
+ *outbuffer = malloc(OUTPUT_BUF_SIZE);
+ if (*outbuffer == NULL)
ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 10);
*outsize = OUTPUT_BUF_SIZE;
}
diff --git a/server/mjpeg_encoder.h b/server/mjpeg_encoder.h
index c43827f..62ef207 100644
--- a/server/mjpeg_encoder.h
+++ b/server/mjpeg_encoder.h
@@ -27,6 +27,11 @@ MJpegEncoder *mjpeg_encoder_new(int width, int height);
void mjpeg_encoder_destroy(MJpegEncoder *encoder);
uint8_t mjpeg_encoder_get_bytes_per_pixel(MJpegEncoder *encoder);
+
+/*
+ * *dest must be either NULL or allocated by malloc, since it might be freed
+ * during the encoding, if its size is too small.
+ */
int mjpeg_encoder_start_frame(MJpegEncoder *encoder, SpiceBitmapFmt format,
uint8_t **dest, size_t *dest_len);
int mjpeg_encoder_encode_scanline(MJpegEncoder *encoder, uint8_t *src_pixels,
--
1.7.10.1

View File

@ -1,28 +0,0 @@
From 29f70d96d44fc4eaf3ffb027ce22cd4f8509b2bf Mon Sep 17 00:00:00 2001
From: Yonit Halperin <yhalperi@redhat.com>
Date: Thu, 10 May 2012 14:01:39 +0300
Subject: [PATCH 8/8] server/mjpeg_encoder: fix wrong size assigned to
dest_len
It should have been the allocated size and not the occupied one.
This led to a lot of unnecessary allocations and deallocations.
---
server/mjpeg_encoder.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server/mjpeg_encoder.c b/server/mjpeg_encoder.c
index 74062f5..42fe352 100644
--- a/server/mjpeg_encoder.c
+++ b/server/mjpeg_encoder.c
@@ -144,7 +144,7 @@ static void term_mem_destination(j_compress_ptr cinfo)
mem_destination_mgr *dest = (mem_destination_mgr *) cinfo->dest;
*dest->outbuffer = dest->buffer;
- *dest->outsize = dest->bufsize - dest->pub.free_in_buffer;
+ *dest->outsize = dest->bufsize;
}
/*
--
1.7.10.1

View File

@ -1,92 +0,0 @@
From c3eae628725012678b7141b49b0a15b8718ea9b3 Mon Sep 17 00:00:00 2001
From: Nahum Shalman <nshalman@elys.com>
Date: Thu, 3 May 2012 12:32:19 -0400
Subject: [PATCH] cleanup x11 library detection for building client
Consolidate two separate chunks of library hunting that depend on the
same check.
Check if we're actually building the client before looking for
client only libraries.
Hide some of the final output if we're not building the client.
---
configure.ac | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/configure.ac b/configure.ac
index 4b24c7d..66f9d12 100644
--- a/configure.ac
+++ b/configure.ac
@@ -183,7 +183,7 @@ AC_DEFINE_UNQUOTED([POSIX_YIELD_FUNC],$posix_yield_func,[The POSIX RT yield func
SPICE_REQUIRES=""
-if test "x$enable_gui" = "xyes"; then
+if test "x$enable_gui" = "xyes" && test "x$enable_client" = "xyes" ; then
PKG_CHECK_MODULES(CEGUI06, CEGUI-0.6 >= 0.6.0 CEGUI-0.6 < 0.7.0,
[
AC_SUBST(CEGUI06_CFLAGS)
@@ -254,7 +254,7 @@ SPICE_REQUIRES+=" openssl"
# AC_SUBST(GL_LIBS)
# SPICE_REQUIRES+=" gl glu"
-if test "x$enable_opengl" = "xyes"; then
+if test "x$enable_opengl" = "xyes" && test "x$enable_client" = "xyes" ; then
AC_CHECK_LIB(GL, glBlendFunc, GL_LIBS="$GL_LIBS -lGL", enable_opengl=no)
AC_CHECK_LIB(GLU, gluSphere, GL_LIBS="$GL_LIBS -lGLU", enable_opengl=no)
AC_DEFINE([USE_OPENGL], [1], [Define to build with OpenGL support])
@@ -269,11 +269,14 @@ AC_SUBST(GL_CFLAGS)
AC_SUBST(GL_LIBS)
SPICE_NONPKGCONFIG_LIBS+=" $GL_LIBS"
-if test "$red_target" = "x11"; then
+if test "x$red_target" = "xx11" && test "x$enable_client" = "xyes" ; then
PKG_CHECK_MODULES(XRANDR, xrandr)
PKG_CHECK_MODULES(XFIXES, xfixes)
+ PKG_CHECK_MODULES(MISC_X, x11 xext xrender)
AC_SUBST(XRANDR_CFLAGS)
AC_SUBST(XRANDR_LIBS)
+ AC_SUBST(MISC_X_CFLAGS)
+ AC_SUBST(MISC_X_LIBS)
PKG_CHECK_MODULES(XRANDR12,
xrandr >= 1.2,
@@ -288,12 +291,6 @@ if test "x$have_xrandr12" = "xyes" ; then
AC_DEFINE([HAVE_XRANDR12], [], [Define if we have XRANDR 12])
fi
-if test "$red_target" = "x11"; then
- PKG_CHECK_MODULES(MISC_X, x11 xext xrender)
- AC_SUBST(MISC_X_CFLAGS)
- AC_SUBST(MISC_X_LIBS)
-fi
-
PKG_CHECK_MODULES(XINERAMA,
xinerama >= 1.0,
have_xinerama=yes,
@@ -485,18 +482,18 @@ echo "
python: ${PYTHON}
Build Spice client: ${enable_client}
-
+" ; if test "x$enable_client" == "xyes"; then echo "\
Have XRANDR 1.2: ${have_xrandr12}
Have Xinerama: ${have_xinerama}
- Support tunneling: ${enable_tunnel}
-
Red target: ${red_target}
OpenGL: ${enable_opengl}
GUI: ${enable_gui}
+" ; fi ; echo "\
+ Support tunneling: ${enable_tunnel}
Smartcard: ${enable_smartcard}
--
1.7.10.2

View File

@ -1 +1 @@
70060129e274241b4a08e23e86de29a3 spice-0.10.1.tar.bz2
11bb416cb878e5d2c7d75e700d287bd2 spice-0.11.3.tar.bz2

View File

@ -8,23 +8,14 @@
%endif
Name: spice
Version: 0.10.1
Release: 6%{?dist}
Version: 0.11.3
Release: 1%{?dist}
Summary: Implements the SPICE protocol
Group: User Interface/Desktops
License: LGPLv2+
URL: http://www.spice-space.org/
Source0: http://www.spice-space.org/download/releases/%{name}-%{version}.tar.bz2
Source1: spice-xpi-client-spicec
Patch0: 0001-server-red_memslots-drop-two-unused-functions.patch
Patch1: 0002-server-red_memslots-use-QXLPHYSICAL-for-addresses.patch
Patch2: 0003-server-red_worker-fix-for-case-where-ASSERT-is-compi.patch
Patch3: 0004-server-red_memslots-don-t-assume-64-bit-environment.patch
Patch4: 0005-server-red_worker-don-t-release-self_bitmap-unless-r.patch
Patch5: 0006-server-reds-add-usbredir-to-recognized-channel-names.patch
Patch6: 0007-server-mjpeg_encoder-Fix-memory-leak-for-the-inital-.patch
Patch7: 0008-server-mjpeg_encoder-fix-wrong-size-assigned-to-dest.patch
Patch8: 0009-spice-configure-cleanup-client-build.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=613529
@ -35,7 +26,7 @@ ExclusiveArch: i686 x86_64
%endif
BuildRequires: pkgconfig
BuildRequires: spice-protocol >= 0.10.1
BuildRequires: spice-protocol >= 0.12.1
BuildRequires: celt051-devel
BuildRequires: pixman-devel alsa-lib-devel openssl-devel libjpeg-devel
%if %{build_client}
@ -95,15 +86,6 @@ using spice-server, you will need to install spice-server-devel.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%build
%if %{build_client}
@ -148,7 +130,7 @@ fi
%files server
%doc COPYING README NEWS
%{_libdir}/libspice-server.so.1
%{_libdir}/libspice-server.so.1.0.2
%{_libdir}/libspice-server.so.1.3.0
%post server -p /sbin/ldconfig
@ -160,6 +142,10 @@ fi
%{_libdir}/pkgconfig/spice-server.pc
%changelog
* Thu Sep 6 2012 Soren Sandmann <ssp@redhat.com> - 0.11.3-1
- Update to 0.11.3 and drop upstreamed patches
- BuildRequire spice-protocol 0.12.1
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.10.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild