On Thu, Oct 29, 2015 at 03:57:46PM -0400, Frediano Ziglio wrote: > > > > > From: Marc-André Lureau <marcandre.lureau@xxxxxxxxx> > > > > --- > > server/Makefile.am | 1 + > > server/display-channel.c | 38 +++++++++++++++++++++++++++++++++++ > > server/display-channel.h | 52 > > +++++++++++++++++++++++++++++++++++++++++++++--- > > server/red_worker.c | 37 +--------------------------------- > > 4 files changed, 89 insertions(+), 39 deletions(-) > > create mode 100644 server/display-channel.c > > > > diff --git a/server/Makefile.am b/server/Makefile.am > > index dc2fbc5..bd95818 100644 > > --- a/server/Makefile.am > > +++ b/server/Makefile.am > > @@ -106,6 +106,7 @@ libspice_server_la_SOURCES = \ > > red_time.h \ > > red_worker.c \ > > red_worker.h \ > > + display-channel.c \ > > display-channel.h \ > > cursor-channel.c \ > > cursor-channel.h \ > > diff --git a/server/display-channel.c b/server/display-channel.c > > new file mode 100644 > > index 0000000..643169c > > --- /dev/null > > +++ b/server/display-channel.c > > @@ -0,0 +1,38 @@ > > +/* > > + Copyright (C) 2009-2015 Red Hat, Inc. > > + > > + 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, see > > <http://www.gnu.org/licenses/>. > > +*/ > > +#include "display-channel.h" > > + > > +DisplayChannelClient *display_channel_client_new(DisplayChannel *display, > > + RedClient *client, > > RedsStream *stream, > > + int mig_target, > > + uint32_t *common_caps, int > > num_common_caps, > > + uint32_t *caps, int > > num_caps) > > +{ > > + DisplayChannelClient *dcc; > > + > > + dcc = (DisplayChannelClient*)common_channel_new_client( > > + COMMON_CHANNEL(display), sizeof(DisplayChannelClient), > > + client, stream, mig_target, TRUE, > > + common_caps, num_common_caps, > > + caps, num_caps); > > + spice_return_val_if_fail(dcc, NULL); > > + > > + ring_init(&dcc->palette_cache_lru); > > + dcc->palette_cache_available = CLIENT_PALETTE_CACHE_SIZE; > > + > > + return dcc; > > +} > > diff --git a/server/display-channel.h b/server/display-channel.h > > index fb38ee2..1b38932 100644 > > --- a/server/display-channel.h > > +++ b/server/display-channel.h > > @@ -15,15 +15,50 @@ > > You should have received a copy of the GNU Lesser General Public > > License along with this library; if not, see > > <http://www.gnu.org/licenses/>. > > */ > > -#ifndef RED_WORKER_CLIENT_H_ > > -# define RED_WORKER_CLIENT_H_ > > +#ifndef DISPLAY_CHANNEL_H_ > > +# define DISPLAY_CHANNEL_H_ > > + > > +#include <setjmp.h> > > > > #include "red_worker.h" > > +#include "reds_stream.h" > > #include "cache-item.h" > > #include "pixmap-cache.h" > > +#ifdef USE_OPENGL > > +#include "common/ogl_ctx.h" > > +#include "reds_gl_canvas.h" > > +#endif /* USE_OPENGL */ > > +#include "reds_sw_canvas.h" > > +#include "glz_encoder_dictionary.h" > > +#include "glz_encoder.h" > > +#include "stat.h" > > +#include "reds.h" > > +#include "mjpeg_encoder.h" > > +#include "red_memslots.h" > > +#include "red_parse_qxl.h" > > +#include "red_record_qxl.h" > > +#include "jpeg_encoder.h" > > +#ifdef USE_LZ4 > > +#include "lz4_encoder.h" > > +#endif > > +#include "demarshallers.h" > > +#include "zlib_encoder.h" > > +#include "red_channel.h" > > +#include "red_dispatcher.h" > > +#include "dispatcher.h" > > +#include "main_channel.h" > > +#include "migration_protocol.h" > > +#include "main_dispatcher.h" > > +#include "spice_server_utils.h" > > +#include "red_time.h" > > +#include "spice_bitmap_utils.h" > > +#include "spice_image_cache.h" > > + > > > > typedef int64_t red_time_t; > > > > +typedef struct DisplayChannel DisplayChannel; > > + > > typedef struct Drawable Drawable; > > > > #define PALETTE_CACHE_HASH_SHIFT 8 > > @@ -31,6 +66,8 @@ typedef struct Drawable Drawable; > > #define PALETTE_CACHE_HASH_MASK (PALETTE_CACHE_HASH_SIZE - 1) > > #define PALETTE_CACHE_HASH_KEY(id) ((id) & PALETTE_CACHE_HASH_MASK) > > > > +#define CLIENT_PALETTE_CACHE_SIZE 128 > > + > > /* Each drawable can refer to at most 3 images: src, brush and mask */ > > #define MAX_DRAWABLE_PIXMAP_CACHE_ITEMS 3 > > > > @@ -194,4 +231,13 @@ struct DisplayChannelClient { > > uint64_t streams_max_bit_rate; > > }; > > > > -#endif /* RED_WORKER_CLIENT_H_ */ > > +DisplayChannelClient * display_channel_client_new > > (DisplayChannel *display, > > + > > RedClient > > *client, > > + > > RedsStream > > *stream, > > + int > > mig_target, > > + > > uint32_t > > *common_caps, > > + int > > num_common_caps, > > + > > uint32_t > > *caps, > > + int > > num_caps); > > + > > +#endif /* DISPLAY_CHANNEL_H_ */ > > diff --git a/server/red_worker.c b/server/red_worker.c > > index 4d797c8..a90a28d 100644 > > --- a/server/red_worker.c > > +++ b/server/red_worker.c > > @@ -58,42 +58,11 @@ > > #include "common/ring.h" > > #include "common/generated_server_marshallers.h" > > > > -#ifdef USE_OPENGL > > -#include "common/ogl_ctx.h" > > -#include "reds_gl_canvas.h" > > -#endif /* USE_OPENGL */ > > +#include "display-channel.h" > > > > #include "spice.h" > > #include "red_worker.h" > > -#include "reds_stream.h" > > -#include "reds_sw_canvas.h" > > -#include "glz_encoder_dictionary.h" > > -#include "glz_encoder.h" > > -#include "stat.h" > > -#include "reds.h" > > -#include "mjpeg_encoder.h" > > -#include "red_memslots.h" > > -#include "red_parse_qxl.h" > > -#include "red_record_qxl.h" > > -#include "jpeg_encoder.h" > > -#ifdef USE_LZ4 > > -#include "lz4_encoder.h" > > -#endif > > -#include "demarshallers.h" > > -#include "zlib_encoder.h" > > -#include "red_channel.h" > > -#include "red_dispatcher.h" > > -#include "dispatcher.h" > > -#include "main_channel.h" > > -#include "migration_protocol.h" > > #include "spice_timer_queue.h" > > -#include "main_dispatcher.h" > > -#include "spice_server_utils.h" > > -#include "red_time.h" > > -#include "spice_bitmap_utils.h" > > -#include "spice_image_cache.h" > > -#include "pixmap-cache.h" > > -#include "display-channel.h" > > #include "cursor-channel.h" > > > > //#define COMPRESS_STAT > > @@ -317,8 +286,6 @@ typedef struct StreamActivateReportItem { > > #define WIDE_CLIENT_ACK_WINDOW 40 > > #define NARROW_CLIENT_ACK_WINDOW 20 > > > > -#define CLIENT_PALETTE_CACHE_SIZE 128 > > - > > typedef struct ImageItem { > > PipeItem link; > > int refs; > > @@ -334,8 +301,6 @@ typedef struct ImageItem { > > uint8_t data[0]; > > } ImageItem; > > > > -typedef struct DisplayChannel DisplayChannel; > > - > > enum { > > STREAM_FRAME_NONE, > > STREAM_FRAME_NATIVE, > > -- > > 2.4.3 > > > > This patch is not moving a function but adding a new display_channel_client_new. > There is a similar function (display_channel_client_create) in red_worker.c. > Actually some patches later this function is renamed to dcc_new and used instead > of display_channel_client_create. > http://cgit.freedesktop.org/~fziglio/spice-server/commit/?h=refactory&id=f74bdd6a8c86b32b81b5f0fcff13c72aadd117b4. > I think these patches should be merged together. If this is not too complicated conflict-wise, this sounds better indeed. Christophe
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel