Commit Graph

1377 Commits

Author SHA1 Message Date
Alon Levy
703f32cda9 server/tests: add test_get_width/test_get_height 2012-05-03 13:09:50 +03:00
Alon Levy
2f02599e6a server/tests: refactor test_display_base 2012-05-03 13:09:50 +03:00
Yonit Halperin
8c9114f9f4 server/red_worker/video: don't override the clip in areas that belong only to sized frames 2012-05-03 13:09:49 +03:00
Yonit Halperin
318dce4abb server/red_worker.c/video: add support for frames of different sizes
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-03 13:07:01 +03:00
Yonit Halperin
0f1fb0ecc2 Update the spice-common submodule
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-03 12:31:03 +03:00
Yonit Halperin
21b857f3ce server/red_worker/video: don't detach a drawable from a stream due to it 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-03 12:31:02 +03:00
Yonit Halperin
81fe00b08a server/red_worker/video: upgrade stream by a screenshot instead of the last 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-03 12:30:59 +03:00
Yonit Halperin
80f0865b44 server/red_worker/video: maintain visible region and clip region for streams
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-03 12:30:55 +03:00
Yonit Halperin
3ccc9de184 server/red_worker: add get_stream_id 2012-05-03 12:30:54 +03:00
Yonit Halperin
892462658b Update the spice-common submodule
We need some rect/region getters methods that were added
2012-05-03 12:30:47 +03:00
Jeremy White
8d3ebe31dd Force 64 bit multiplication on 32 bit systems; fixes a bug where the server times out the display channel freakily fast. 2012-04-27 11:29:31 +03:00
Daniel P. Berrange
91210c671f Ensure __STDC_FORMAT_MACROS is always defined first
The client/common.h file defines __STDC_FORMAT_MACROS before
including inttypes.h so that the PRI* macros get defined in
C++. This is ignoring the possibility that other global
includes may have already pulled in inttypes.h

We need __STDC_FORMAT_MACROS to be defined before any header
files are included. Putting it in config.h satisfies this,
since config.h is always the first header
2012-04-26 18:46:52 +01:00
Daniel P. Berrange
5e15aa74c6 Disable -Waggregate-return if building with SLIRP
The API design of SLIRP means that it is not practical to use
the -Waggregate-return warning flag. Disable this flag in the
(unlikely) scenario where SLIRP is actually requested at build
time
2012-04-26 18:46:52 +01:00
Alon Levy
c6bf062810 bump spice-common with SpiceClips fix 2012-04-26 20:04:46 +03:00
Daniel P. Berrange
ef78242e19 Add some more 'noreturn' annotations
Methods which longjump, unconditionally raise an
exception, or call _exit()  cannot return control
to the caller so should be annotated with 'noreturn'

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 11:31:14 +01:00
Daniel P. Berrange
49e2b2679f Fix typo in is_equal_brush
The 3 part of the conditional in the is_equal_brush method
compared the b1->u.color field to itself, instead of b2->u.color

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 11:31:14 +01:00
Daniel P. Berrange
6d7d9bc12d Fix printf format specifiers for i686 hosts
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 11:00:01 +01:00
Daniel P. Berrange
3bbc53521e Add missing struct field initializers
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 10:51:37 +01:00
Daniel P. Berrange
e71cb83680 Ensure config.h is the first include in the file
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:49:34 +01:00
Daniel P. Berrange
f056a53b99 Add a few more syntax-check exemptions
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:49:32 +01:00
Daniel P. Berrange
8646341983 Add recent new committers to AUTHORS file / mailmap
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:49:29 +01:00
Daniel P. Berrange
d986fb466b Enable many more compiler warnings
* m4/manywarnings.m4m, m4/warnings.m4: Import GNULIB warnings
  modules
* m4/spice-compile-warnings.m4: Define SPICE_COMPILE_WARNINGS
* configure.ac: Replace compile warning check with a call to
  SPICE_COMPILE_WARNINGS
* client/Makefile.am: Use WARN_CXXFLAGS instead of WARN_CFLAGS

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:49:25 +01:00
Daniel P. Berrange
39565707a9 Make some int->pointer casts explicit
Tell the compiler that was really do intend to cast from int
to pointer, to prevent warnings about implicit casts

* server/tests/test_display_base.c: Add explicit casts

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:49:25 +01:00
Daniel P. Berrange
e1633c65cc Fix broken -I../common to be -I../spice-common in client
* Makefile.am: s/common/spice-common/

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:42:15 +01:00
Daniel P. Berrange
7af613362a VSCMsgHeader.reader_id is unsigned, so don't check for >= 0
* server/smartcard.c: Fix assertion to not check for >= 0 on
  unsigned variable

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:42:15 +01:00
Daniel P. Berrange
84c7a95c22 Avoid jumping across variables declarations with initializers
If a 'goto' statement jumps across a variable declaration
which also has an initializer, the variable is in an undefined
state. Splitting the the declaration & initialization doesn't
change that, but the compiler can at least now detect use of
the unintialized variable

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:42:15 +01:00
Daniel P. Berrange
3be7df0980 Convert cases of () to (void)
* server/reds.c, server/smartcard.c: s/()/(void)

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:42:15 +01:00
Daniel P. Berrange
93d8ca8191 Remove 2 *MB* stack frame in red_worker_main
The red_worker_main method allocates a RedWorker struct instance
on the stack. This struct is a full 2 MB in size which is not
at all resonable to allocate on the stack.

* server/red_worker.c: Move RedWorker struct to the heap

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:42:15 +01:00
Daniel P. Berrange
eeb2b65a7d Mark some variables as volatile
When using setjmp/longjmp the state of local variables can be
undefined in certain scenarios:

[quote man(longjmp)]
       The values of automatic variables are unspecified  after  a
       call to longjmp() if they meet all the following criteria:

       ·  they are local to the function that made the correspond‐
          ing setjmp(3) call;

       ·  their values are changed between the calls to  setjmp(3)
          and longjmp(); and

       ·  they are not declared as volatile.
[/quote]

* server/red_worker.c: Mark some vars as volatile

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:42:15 +01:00
Daniel P. Berrange
456634a63e Mark functions which never return control
* client/red_channel.cpp:  AbortTrigger::on_event can't return
  given its current impl
* server/red_worker.c: red_worker_main can't return

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:42:15 +01:00
Daniel P. Berrange
6a8b7585e2 Fix multiple printf format problems
All printf var-args style methods should be annotation with
their format. All format strings must be const strings.

* client/application.cpp, client/cmd_line_parser.cpp,
  client/hot_keys.cpp: Avoid non-const format
* client/client_net_socket.cpp: Fix broken format specifier
* client/red_peer.cpp: Fix missing format specifier
* client/platform.h: Add SPICE_GNUC_PRINTF annotation to term_printf
* client/utils.h: Add SPICE_GNUC_PRINTF annotation to string_printf
* server/glz_encoder_config.h, server/red_worker.c: Add
  SPICE_GNUC_PRINTF annotation to warning callbacks

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:42:11 +01:00
Daniel P. Berrange
832a98800d Fix const-ness violations
* server/red_worker.c: Add missing const for return type
* server/reds.c: Static strings must be declared const

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:40:18 +01:00
Daniel P. Berrange
e139521928 Don't do arithmetic on void * type, use uint8_t instead
Arithmetic on void * types is non-portable & trivially avoided

* server/dispatcher.c: Use uint8_t for arithmetic

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-04-25 09:40:18 +01:00
Alon Levy
1871295c07 spice-common: update submodule to verify_subject MSVC++ fix 2012-04-18 17:57:00 +03:00
Alon Levy
34101510ee spice-common: update submodule 2012-04-18 17:00:57 +03:00
Alon Levy
8a6307c65a update spice-common for MSVC++ build fixes 2012-04-18 16:04:36 +03:00
Aric Stewart
b87ef5170d update visual studio project file
Note, there may be line-ending issues here is we are not careful.  This file is a msdos formatted file.

There was some inconsistencies in those line-ending that I have normalized.

Signed-off-by: Aric Stewart <aric@codeweavers.com>
2012-04-18 16:01:27 +03:00
Alon Levy
42758228fc client/windows/redc.vcproj: switch to unix EOL (dos2unix) 2012-04-18 16:00:17 +03:00
Aric Stewart
962f239159 Update win32 generate(1).bat files to match modern usage
This involves:
 generating .c instead of .cpp files
 Not including "common.h"
 Standardizing some parameters

Signed-off-by: Aric Stewart <aric@codeweavers.com>
2012-04-18 14:06:04 +03:00
Aric Stewart
4aca52309c we do not need afxres.h included in redc.rc
It is not an MFC project so simply including windef.h is better and
allows for compiling with the Express editions of Visual Studio.
2012-04-18 14:05:50 +03:00
Michael Tokarev
351fe52ca7 fix error-path return in snd_set_record_peer()
The error_{1,2} labels in this functions are backwards.

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
2012-04-18 11:30:14 +03:00
Aric Stewart
197620e43a Copy getopt.h from old common/win/my_getopt-1.5/my_getopt
This patch completes the copy from
4d8f39020a which missed this file.
2012-04-17 10:27:17 +03:00
Aric Stewart
3cd2f843b5 update windows client generate.bat and generate1.bat
the python script is now in spice-common and client_marshallers.h needs
to be included instead of marshallers.h
2012-04-17 10:24:19 +03:00
Alon Levy
2ec2dbc78a server: allow failure in getvirt
This patch changed getvirt to continue working even if spice_critical
doesn't abort (i.e. SPICE_ABORT_LEVEL != -1). This is in preparation to
make getvirt not abort at all. The reason is that getvirt is run on
guest provided memory, so a bad driver can crash the vm.
2012-04-05 18:28:49 +03:00
Christophe Fergeau
2439c0dc90 Replace sprintf with snprintf use
The hotkey parser was generating a string with sprintf and data it got
from the controller socket (ie data which can have an arbitrary
length). Using sprintf there is a bad idea, replace it with snprintf.
2012-04-02 12:14:55 +02:00
Marc-André Lureau
8cd92109d4 spice-common: update to fix quic-encode warnings 2012-03-28 14:04:14 +02:00
Alon Levy
5dd5b70223 server: export spice_server_is_server_mouse predicate
To be used by qemu query-spice / info spice commands.
2012-03-26 14:41:03 +02:00
Marc-André Lureau
3fc870ad55 Remove files moved to spice-common 2012-03-26 02:40:17 +02:00
Marc-André Lureau
4d8f39020a Copy common/win/my_getopt-1.5/my_getopt client/windows 2012-03-25 19:00:00 +02:00
Marc-André Lureau
b34fd7432d Use the spice-common logging functions
It will abort by default for critical level messages. That behaviour
can be tuned at runtime.
2012-03-25 19:00:00 +02:00