summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2012-06-29server: add monitors_config supportfeatures/driver-server-monitors-configAlon Levy7-1/+285
a SpiceMsgDisplayMonitorsConfig is sent on two occasions: * as a result of a spice_qxl_monitors_config_async * whenever a client connects and there is a previously set monitors config Sending the new message is protected by a new cap, SPICE_DISPLAY_CAP_MONITORS_CONFIG More elaborately: spice_qxl_monitors_config_async receives a QXLPHYSICAL address of a QXLMonitorsConfig struct and reads it, caching it in the RedWorker, and sending it to all clients. Whenever a new client connects it receives a SpiceMsgDisplayMonitorsConfig message as well.
2012-06-27spice.h: bump SPICE_SERVER_VERSION for release 0.11.0Alon Levy1-1/+1
(cherry picked from commit dd5c995c32cf595d31e59975bd1b3216cf996656)
2012-06-27Revert "update spice-common for multiple monitor in single display channel ↵Alon Levy1-0/+0
support" This reverts commit 3baf290be79cfb1872b90f7724efa50aa343d74b.
2012-06-27Revert "spice.h: bump SPICE_SERVER_VERSION for release 0.11.0"Alon Levy1-1/+1
This reverts commit dd5c995c32cf595d31e59975bd1b3216cf996656.
2012-06-21spice.h: bump SPICE_SERVER_VERSION for release 0.11.0Alon Levy1-1/+1
2012-06-21update spice-common for multiple monitor in single display channel supportAlon Levy1-0/+0
2012-06-19Added configure option --disable-xineramaNikolay Orlyuk1-1/+14
This parameter was added to be able to control dependency on libXinerama. Which is really useful for package managers. Fixes bug #51192
2012-06-12Release 0.11.0Alon Levy3-4/+55
Current bumped and age bumped for new intefaces only (no backward incompatible changes). New libtool version is 2.0.1, using --version-info instead of --version-name. Doing the version change and --version-name to --version-info change here to avoid changing the libtool version twice. Added interfaces: spice_server_set_name spice_server_set_uuid spice_server_set_listen_socket_fd spice_server_is_server_mouse New library name in linux: libspice-server.so.1.1.0 Old: libspice-server.so.1.0.2
2012-06-07server/red_channel: s/channle/channelAlon Levy1-3/+3
2012-06-06m4/spice-compile-warnings: Squelch _FORTIFY_SOURCE when needed to avoid ↵Alon Levy1-2/+6
glibc #warnings. Fix copied from libvirt, commit by Eric Blake. glibc 2.15 (on Fedora 17) coupled with explicit disabling of optimization during development dies a painful death: /usr/include/features.h:314:4: error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp] Work around this by only conditionally defining _FORTIFY_SOURCE, in the case where glibc can actually use it. The trick is using AH_VERBATIM instead of AC_DEFINE.
2012-06-05server/spice.h: s/Pleaes/Please/Alon Levy1-1/+1
2012-05-31server/red_channel: do not attempt to write if the channel client is ↵Yonit Halperin1-0/+4
disconnected The red_channel_client_event call to red_channel_client_receive might result in a disconnected channel client. The following call to red_channel_client_push may call to red_peer_handle_outgoing with a disconnected socket.
2012-05-31server/red_channel: fix possible access to released channel clientsYonit Halperin2-20/+104
Added ref count for RedChannel and RedChannelClient. red_channel.c/red_peer_handle_incoming call to handler->cb->handle_message might lead to the release of the channel client, and the following call to handler->cb->release_msg_buf will be a violation. This bug can be produced by causing main_channel_handle_parsed call red_client_destory, e.g., by some violation in reds_on_main_agent_data that will result in a call to reds_disconnect.
2012-05-24server/red_worker: fix red_wait_pipe_item_sentYonit Halperin1-7/+5
Resolves: rhbz#824384 red_wait_pipe_item_sent mistakingly returned without waiting for sending the given pipe item when the channel wasn't blocked. As a result, we failed when we had to destroy a surface (e.g., QXL_IO_DESTROY_ALL_SURFACES) and to release all the drawables that are depended on it (by removing them or waiting they will be sent). In addition, red_wait_pipe_item_sent increased and decreased the reference to the pipe item using channel_cbs->hold_item, and channel_cbs->release_item. However, these calls can be called only by red_channel, otherwise display_channel_client_release_item_before_push is called twice and leads to a double call to ring_remove(&dpi->base). Instead ref/put_drawable_pipe_item should be called.
2012-05-24server/red_channel: remove red_channel_client_item_being_sentYonit Halperin3-31/+1
The above routine was risky, since red_channel_client_init_send_data can also be called with item==NULL. Thus, not all pipe items can be tracked. The one call that was made for this routine was not necessary.
2012-05-21server: handle red_channel_client_create returning NULLYonit Halperin6-2/+16
2012-05-21server/red_channel: prevent creating more than one channel client with the ↵Yonit Halperin1-4/+46
same type+id
2012-05-21server/video: do not allow non-streamable drawables be stream candidatesYonit Halperin1-0/+4
Resolves: rhbz#820669 Fix a segfault caused by a call to __red_is_next_stream_frame made by red_stream_maintenance, with a drawable that is not a DRAW_COPY one. The segfault is a reault of __red_is_next_stream_frame accessing red_drawable->u.copy.src_bitmap for a non DRAW_COPY drawable.
2012-05-16server/tests: test_display_streaming - test wide sized framesYonit Halperin1-3/+8
Before, we tested only higher frames, while wider frames would have triggered a bug in mjpeg_encoder, when spice is linked with libjpeg and not libjpeg-turbo.
2012-05-16server/mjpeg_encoder: realloc encoder->row, when a wider frame is givenYonit Halperin1-2/+8
Fix crashes when there are sized wider frames in the stream, and we are linked with libjpeg. Related : rhbz#813826 Resolves: rhbz#820669
2012-05-15server: move self_bitmap_image to RedDrawableAlon Levy3-16/+13
Simplify keeping count of self_bitmap_image by putting it in RedDrawable. It is allocated on reading from the command pipe and deallocated when the last reference to the RedDrawable is dropped, instead of keeping track of it in GlzDrawable and Drawable.
2012-05-15server/red_worker/put_red_drawable: s/drawable/red_drawable/Alon Levy1-6/+6
2012-05-15server/red_worker/red_handle_self_bitmap: add red_drawable local, one extra ↵Alon Levy1-7/+7
whitespace line removed
2012-05-15server/red_worker: rename SpiceImage *self_bitmap to self_bitmap_imageAlon Levy1-13/+13
2012-05-15Revert "server/red_worker: fix possible leak of self_bitmap"Alon Levy1-7/+5
This reverts commit 35dbf3ccc4b852f9dbb29eb8a53c94f26d2e3a6e. accidentally pushed v1 of patches, reverting in preperation of pushing v2.
2012-05-14server/red_worker: fix possible leak of self_bitmapAlon Levy1-5/+7
After the previous patch moving self_bitmap freeing inside red_drawable ref count, we have a possible self_bitmap leak: red_process_commands red_get_drawable | red_drawable #1, red_drawable->self_bitmap == 1 red_process_drawable | rd #2, d #1, d->self_bitmap != NULL release_drawable | rd #1, d# = 0, try to release self_bitmap, but blocked by rd #1 put_red_drawable | rd #0 This patch moves the call to release_drawable after the call to put_red_drawable, thereby fixing the above situation.
2012-05-14server/red_worker/red_process_commands: rename drawable to red_drawable ↵Alon Levy1-4/+4
(later add a local drawable)
2012-05-14server/red_worker: red_process_drawable: have single point of exitAlon Levy1-8/+5
2012-05-14server/red_worker: don't release self_bitmap unless refcount is 0Yonit Halperin1-4/+3
RHBZ: 808936
2012-05-10server/mjpeg_encoder: fix wrong size assigned to dest_lenYonit Halperin1-1/+1
It should have been the allocated size and not the occupied one. This led to a lot of unnecessary allocations and deallocations.
2012-05-10server/mjpeg_encoder: Fix memory leak for the inital output buffer given for ↵Yonit Halperin2-8/+8
each frame
2012-05-07server/reds: add "usbredir" to recognized channel namesAlon Levy1-0/+1
RHBZ: 819484 Signed-off-by: Alon Levy <alevy@redhat.com>
2012-05-04cleanup x11 library detection for building clientNahum Shalman1-12/+9
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.
2012-05-03server/tests/test_display_streaming: include tests for clip and sized framesYonit Halperin1-16/+181
CC: Alon Levy <alevy@redhat.com>
2012-05-03server/tests: use the correct dimensions in SIMPLE_UPDATEYonit Halperin1-2/+2
2012-05-03server/tests: add SLEEP command to test_display_baseYonit Halperin2-0/+10
2012-05-03server/tests: add clip to SIMPLE_DRAW_BITMAPYonit Halperin2-6/+30
2012-05-03server/tests/test_display_streaming: update to create sized framesAlon Levy1-7/+37
2012-05-03server/tests: add SIMPLE_DRAW_SOLID and SIMPLE_DRAW_BITMAPAlon Levy2-6/+39
2012-05-03server/tests: refactor CommandAlon Levy3-16/+37
2012-05-03server/tests: add test_get_width/test_get_heightAlon Levy2-0/+19
2012-05-03server/tests: refactor test_display_baseAlon Levy1-34/+45
2012-05-03server/red_worker/video: don't override the clip in areas that belong only ↵Yonit Halperin1-30/+12
to sized frames
2012-05-03server/red_worker.c/video: add support for frames of different sizesYonit Halperin3-61/+166
rhbz #813826 When playing a youtube video on Windows guest, the driver sometimes(**) sends images which contain the video frames, but also other parts of the screen (e.g., the youtube process bar). In order to prevent glitches, we send these images as part of the stream, using SPICE_MSG_DISPLAY_STREAM_DATA_SIZED. (**) It happens regularly with the you tube html5 player. With flash, it occurs when moving the cursor in the player area.
2012-05-03Update the spice-common submoduleYonit Halperin3-4/+6
spice-common changes: STREAM_DATA_SIZED message was added in order to support video streams with frames that their size is different from the initial size that the stream was created with. This patch also includes server and client adjustments to the new SpiceMsgDisplayStreamData.
2012-05-03server/red_worker/video: don't detach a drawable from a stream due to it ↵Yonit Halperin1-8/+8
being rendered. The previous patch took care that streams will be upgraded by a surface screenshot and not the last frame, if necessary. Thus, there is no more a reason for detaching drawables from streams when they are rendered. Moreover, detaching such drawables can cause glitches, in case they are still in the pipe, and red_update_area is called frequently and leads to stream frames rendering.
2012-05-03server/red_worker/video: upgrade stream by a screenshot instead of the last ↵Yonit Halperin1-21/+71
frame, if needed Upgrading a stream: When the stream's visible region is bigger than the one of the last frame, we will send an updated screenshot of the visible region, instead of sending the last frame losslessly.
2012-05-03server/red_worker/video: maintain visible region and clip region for streamsYonit Halperin1-12/+27
Differentiate between the clipping of the video stream, and the region that currently displays fragments of the video stream (henceforth, vis_region). The latter equals or contains the former one. For example, let c1 be the clip area at time t1, and c2 be the clip area at time t2, where t1 < t2. If c1 contains c2, and at least part of c1/c2, hasn't been covered by a non-video images, vis_region will contain c2, and also the part of c1/c2 that still displays fragments of the video. When we consider if a stream should be "upgraded" (1), due to its area being used by a rendering operation, or due to stopping the video, we should take into account the vis_region, and not the clip region (next patch: not upgrade by the last frame, but rather by vis_region). This fix will be more necessary when sized frames are introduced (see the following patches). Then, the vis_region might be larger than the last frame, and contain it, more frequently than before. (1) "upgrading a stream" stands for sending its last frame losslessly. Or more precisely, lossless resending of all the currently displayed lossy areas, that were sent as part of the stream.
2012-05-03server/red_worker: add get_stream_idYonit Halperin1-11/+16
2012-05-03Update the spice-common submoduleYonit Halperin1-0/+0
We need some rect/region getters methods that were added