Commit Graph

401 Commits

Author SHA1 Message Date
Arnon Gilboa
a973e87a05 client/windows: remove precompiled header for common.h (fix broken windows debug build)
-Release currently doesn't use precompiled headers at all
-Debug is broken since common/*.c files don't include common.h
-PCH can be enabled for all but specifically-chosen c-files
2011-05-22 14:59:55 +03:00
Yonit Halperin
d63fd4c5b0 client: fix flipped video in Linux guest on windows client, RHBZ #667689
Video streams from Linux guests are oriented top-down, where gdi_canvas_put_image always
received display context for down-top oriented bitmap. I fixed create_bitmap
to consider the stream orientation.
2011-05-19 12:57:41 +03:00
Arnon Gilboa
8776562115 client/windows: undef SIZE_MAX in stdint.h
eliminating redefinition warning
2011-05-12 15:21:07 +03:00
Arnon Gilboa
ccddcdb82a client/windows: add common\ssl_verify.c/h to project
disable WarnAsError, due to c/c++ warnings
2011-05-12 15:13:40 +03:00
Arnon Gilboa
4ea4d4dc35 client/windows: inc version to 0,9,0,0 2011-05-12 15:13:39 +03:00
Arnon Gilboa
d3577b2772 client/windows: init PACKAGE_VERSION
in windows, we set PACKAGE_VERSION to the binary version
since we don't have config.h as generated by linux configure
2011-05-12 15:13:39 +03:00
Alon Levy
34e9375cc0 client: fix return code when missing host 2011-05-12 12:38:23 +03:00
Marc-André Lureau
d46f9d3f4e client: make use of ssl_verify.c
Fixed since v1:
- don't include C code, rather use the common lib
- add missing spice_openssl_verify_free() call
- keep the extra-parsing of subject for error reporting
2011-05-03 17:16:46 +02:00
Marc-André Lureau
27f771566d common: add windows.h where required, make gdi_handlers static
This patch has not been verified with VS/brew. It should be safe
hopefully. Compilation is fine with mingw32/spice-gtk.
2011-05-03 16:49:56 +02:00
Christophe Fergeau
1caee1f216 client: remove unused mb() macro 2011-05-03 14:44:11 +02:00
Christophe Fergeau
e17767e892 add missing static 2011-05-03 14:44:11 +02:00
Christophe Fergeau
4a989d6c7a win32: remove obsolete preprocessor #defines
SW_CANVAS_NO_CHUNKS isn't used anywhere but in this file.
SW_CANVAS_CACHE is now defined directly in the files where it's
needed so we no longer need it in the .vcproj file.
2011-05-03 14:44:11 +02:00
Christophe Fergeau
e0c20725c8 s/USE_OGL/USE_OPENGL
This is more explicit about what it does, and not much longer
2011-05-03 14:44:11 +02:00
Christophe Fergeau
78c1465ed3 add #include <config.h> to all source files
When using config.h, it must be the very first include in all source
files since it contains #define that may change the compilation process
(eg libc structure layout changes when it's used to enable large file
support on 32 bit x86 archs). This commit adds it at the beginning
of all .c and .cpp files
2011-05-03 14:44:10 +02:00
Christophe Fergeau
2db7212175 autotools: correctly build canvas-related code
spice client and spice server shares code from
common/{gdi,gl,sw}_canvas.[ch]. However, while most of the code is
shared, the server code wants a canvas compiled with
SW_CANVAS_IMAGE_CACHE defined while the client code wants a canvas
compiled with SW_CANVAS_CACHE.

The initial autotools refactoring didn't take that into account,
this is now fixed by this commit. After this commit, the canvas
files from common/ are no longer compiled as part of the
libspice-common.la convenience library. Instead, there are "proxy"
canvas source files in client/ and server/ which #include the
appropriate C files after defining the relevant #define for the
binary that is being built.

To prevent misuse of the canvas c files and headers in common/,
SPICE_CANVAS_INTERNAL must be set when including the canvas headers
from common/ or when building the c files from common/ otherwise
the build will error out.
2011-05-03 14:44:10 +02:00
Christophe Fergeau
2a4614ea94 autotools: refactor the whole build machinery
spice Makefile.am setup is a bit confusing, with source file
names being listed several times in different Makefile.am
(generally, once in EXTRA_DIST and another time in another
Makefile.am in _SOURCES). The client binaries are built
by client/x11/Makefile.am, which means recursing into client,
then into x11 to finally build spicec. This Makefile.am is
also referencing files from common/ and client/, which is
a bit unusual with autotools.

This patch attempts to simplify the build process to get
something more usual from an autotools point of view.
The source from common/ are compiled into a libtool convenience
library, which the server and the client links against which avoids
referencing source files from common/ when building the server and
the client. The client is built in client/Makefile.am and directly
builds files from x11/ windows/ and gui/ if needed (without
recursing in these subdirectories).

This makes the build simpler to understand, and also makes it
possible to list source files once, which avoids potential
make distcheck breakage when adding new files.

There is a regression in this patch with respect to
sw_canvas/gl_canvas/gdi_canvas. They should be built with
different preprocessor #defines resulting in different behaviour
of the canvas for the client and the server. However, this is not
currently the case, both the client and the server will use the same
code for now (which probably means one of them is broken). This will
be fixed in a subsequent commit.

make distcheck passes, but compilation on windows using the
autotools build system hasn't been tested, which means it's likely
to be broken. It shouldn't be too hard ot fix it though, just let
me know of any issues with this.
2011-05-03 14:44:10 +02:00
Christophe Fergeau
da584a5e2d add missing "LGPLv2.1 or later" header to source files 2011-05-02 11:24:44 +02:00
Christophe Fergeau
04780d6996 client: remove c++ wrappers
client/ contains several .cpp file which only #include a .c file
of the same name. This is unusual and seems to only be done to
get C++ name mangling on the symbols defined in the C file.
Now that all headers files in common/ use extern "C", these
wrappers are no longer useful.
2011-05-02 11:24:44 +02:00
Christophe Fergeau
8a3f1e8e7a configure.ac: fix make dist 2011-05-02 11:24:43 +02:00
Christophe Fergeau
12f99d327f client: skip spaces in --host-subject
This fixes fdo bug #32896:

"Subject in certificates is stored in following format (values separated by
comma and space):

grep Subject: server-cert.pem | awk -F": " '{print $2}'
O=REDHAT, CN=10.34.58.2

While spicec expects that values in host subject are separated only by comma:

spicec --host-subject "O=REDHAT,CN=10.34.58.2"
"

In this case, ignoring spaces make it much easier to directly copy and paste
the subject line from certificates.
2011-04-18 12:55:41 +02:00
Christophe Fergeau
f73ab66cb8 client: add --version cmdline option to spicec
This fixes freedesktop bug #33907
2011-04-18 12:38:47 +02:00
Christophe Fergeau
d590b48a46 client: s/reqired/required in CmdLineParser 2011-04-18 12:38:44 +02:00
Christophe Fergeau
56a4a05ae7 client: s/AVAILIBLE/AVAILABLE in CmdLineParser
It was mispelt in a CmdLineParser enum.
2011-04-18 12:38:39 +02:00
Christophe Fergeau
bb9b8a3c13 gl: remove unused variables
gcc 4.6 warned about these.
2011-04-08 11:09:39 +02:00
Christophe Fergeau
ace31d1c8a gl: use correct pixman accessor for image data
Commit 774e5bd36f changed
-  dest->source.pixmap.x_image->data +
+  (uint8_t *)pixman_image_get_stride(dest->source.pixmap.pixman_image) +

The correct accessor to use is pixman_image_get_data. Thanks to gcc
4.6 for warning about a "different size" int to pointer conversion.
2011-04-08 11:09:36 +02:00
Christophe Fergeau
0fcba8ba40 client: use silent generation rules in Makefile.am
The server Makefile.am rules for marshallers generation are
prefixed with AM_V_SILENT to integrate nicely with automake silent
rules. The same AM_V_SILENT prefix isn't used in client/Makefile.am
resulting in verbose output even when automake silent mode is
enabled. This commit removes this verbosity.
2011-04-08 11:09:32 +02:00
Hans de Goede
66dde82fee spicec-x11: Work around a bug in xsel
Although ICCCM 2.2. Responsibilities of the Selection Owner:
http://tronche.com/gui/x/icccm/sec-2.html#s-2.2

Clearly states (about selection notify events):
The owner should set the specified selection, target, time, and property
arguments to the values received in the SelectionRequest event.

xsel sets the selection notify event target member to the incr atom when it
is going to send the clipboard data incremental, rather then setting it to
the UTF8_STRING atom (which was the target of the SelectionRequest).

Work around this (esp as it is likely other programs may get this wrong too)
and accept the incr atom as a valid target in a selection notify event.

This fixes Alon's test with running:
python -c "print list(range(1000))" | xsel -i -b
on the client.
2011-03-23 17:18:37 +01:00
Hans de Goede
4020e24345 spicec-x11: Don't crash on apps sending bad atoms as TARGETS
Some apps (bad xsel, bad!) send invalid Atoms in their TARGETS property,
causing spicec to exit because of an XError. This patch makes spicec survive
this scenario.

For more info on the xsel bug, see:
https://bugzilla.redhat.com/show_bug.cgi?id=690214
2011-03-23 17:11:25 +01:00
Christophe Fergeau
ade5ecb2c8 opengl: fix compilation
When OpenGL is enabled, build fails in DisplayChannel::create_surface
because Canvas *canvas is declared twice. Remove the first
declaration to fix compilation.
2011-03-23 11:26:29 +01:00
Alon Levy
644b727184 client/smartcard: use proper include delemiters 2011-03-22 09:44:52 +02:00
Hans de Goede
9d204f8b74 client: Don't handle hotkeys while sticky alt is active
In some cases rhev-m changes the hotkey for releasing the mouse grab
to ctrl + alt. This makes it impossible to send ctrl + alt + other-key
to the guest, even when using sticky alt.

What happens is:
-press alt until sticky alt activates
-release alt (but recorded state stays pressed due to sticky alt)
-press ctrl
-hotkey code sees ctrl+alt pressed, releases mouse grab
-mouse grab release code does an unpress all -> end of sticky state.

This patch makes it possible to atleast send ctrl + alt + del (or other key)
using sticky alt. Note: even with this patch it is still a bad idea to
use ctrl + alt as hotkey combi.
2011-03-11 14:59:15 +01:00
Alon Levy
1af83642c1 client/smartcard: handle the --smartcard-db option 2011-03-08 21:18:55 +02:00
Arnon Gilboa
1a648fb397 client/windows: cleanup vcproj based on updated libs
using updated windows libraries:
http://www.spice-space.org/download/stable/wspice-x86_08032011.zip
http://www.spice-space.org/download/stable/wspice-x64_08032011.zip

-remove IgnoreDefaultLibraryNames="MSVCRT.lib", since pixman is now compiled
using MT threading model similar to other libraries. It used to be mistakenly
compiled with MD.

-downgrade freetype lib to 2.3.11-7, which is the one used/tested with
CEGUI 0.6.2

-pthread lib patched (InterlockedCompareExchange), so x64 client will no
longer crash on SelectClipRgn, BitBlt etc.
2011-03-08 13:00:01 +02:00
Hans de Goede
15b8252289 x11: Use _exit rather then exit on X errors (rhbz#680763)
This avoids us trying to restore the original resolution when we're fullscreen
and an X error happens. As restoring fullscreen is a bad idea then as this
involves making more X calls, which can get us stuck (in side an XLockDisplay
call for example).
2011-03-01 18:08:20 +02:00
Uri Lublin
e9ee6cf914 client: exit nicely for --controller with no SPICE_XPI_SOCKET (rhbz#644292)
When starting spicec with --controller, SPICE_XPI_SOCKET environment
variable must be defined so spicec and the controller can be connected.
2011-03-01 17:58:47 +02:00
Hans de Goede
0c88a60ecc Fix keyb modifiers not syncing from client to client os (rhbz#679467) 2011-03-01 16:12:32 +02:00
Arnon Gilboa
a76fce5514 client/windows: use SPICE_PROTOCOL_DIR in project include dirs
instead of ..\..\..\spice-protocol. Relative path to another git tree is a bit
ugly, since it requires spice-protocol to be in a specific location.

SPICE_PROTOCOL_DIR should also be used in windows qxl and vdagent instead of
SPICE_COMMON_DIR, which is an old and confusing name, due to the common
directory in spice git repo.
2011-02-13 12:23:47 +02:00
Hans de Goede
81f0f04ddc Drop static_title.bmp from windows/Makefile.am 2011-02-11 15:36:43 +01:00
Alon Levy
85ce53b6be client/smartcard: libcacard dropped ReaderAddResponse
uses VSC_Error with code==VSC_SUCCESS instead. This means that the VSC_Error
message is overloaded. Instead of the other option of adding a message id,
since the connection is TCP so no messages may be dropped or reordered, by
having each message followed by a response there is no ambiguity. Still
this commit adds a queue for messages that we only have one of which outstanding
at a time, i.e. send, wait for response, send the next, etc. This further
simplifies the logic, while not adding much overhead since only when spicec
starts up it has a situation where it needs to send two events (ReaderAdd
and ATR for Card Insert).
2011-02-09 12:14:03 +02:00
Alon Levy
91bf99a1e9 client/smartcard: ignore VSC_Init 2011-02-07 21:32:40 +02:00
Alon Levy
aed4c72a49 client/smartcard: s/reader_id_t/uint32_t/ (libcacard changed) 2011-02-07 21:31:43 +02:00
Alon Levy
bf6f246b2e client: log subject-host mismatch, and raise ssl warnings to errors 2011-02-07 18:49:37 +02:00
Uri Lublin
ed9b8ae69f spice-client migration: fix minor for old migration support.
For not too old spice-migration, minor is 1.
For older (ancient) spice-migration, minor is 0.

Affects only VM migration while a spice client is connected.
2011-01-27 18:26:09 +02:00
Alon Levy
42f83d18b5 client/windows: don't allocate console unless required 2011-01-27 17:19:07 +02:00
Alon Levy
645236df2b client: fix broken vs2008 build 2011-01-27 17:19:06 +02:00
Alon Levy
9394b2c50e client: --help should not need platform initialization
separate initialization into before command line parsing and after,
call later only if command line parsing succeeds (in particular, it
"fails" if --help is given).
2011-01-27 17:19:05 +02:00
Alon Levy
d20c90c7ef client: gcc 4.6.0: two more unused variable fixes 2011-01-25 17:29:31 +02:00
Alon Levy
9076e2e957 client/cegui: cegui 0.6.0 gcc 4.6.0 related fix
cegui doesn't include stddef required for ptrdiff_t type, we
include it for it.
2011-01-25 17:29:31 +02:00
Alon Levy
6fb222e4f3 client/glz_decoder.cpp: gcc 4.6.0 unused fixes 2011-01-25 17:29:31 +02:00
Alon Levy
f899034fd2 client/display_channel: gcc 4.6.0 unused fixes 2011-01-25 17:29:31 +02:00
Alon Levy
46c70521d5 client/server: warning fixes (gcc 4.6.0)
gcc 4.6.0 added "[-Werror=unused-but-set-variable]", this and the next
few fixes tend to that. Mostly harmless.
2011-01-25 17:22:48 +02:00
Alon Levy
d3b22d86f0 client/server: add missing USE_TUNNEL
disable some code that only makes sense when USE_TUNNEL is defined
in client and server channel security level setting.
2011-01-25 17:16:27 +02:00
Alon Levy
5a2ef3b21c client/server: add missing smartchannel channel security handling
The name to channel id mapping for the smartcard channel is missing,
add it in client and server.
2011-01-25 17:16:18 +02:00
Alon Levy
4b81a8c2a5 client/cmd_line_parser: fix wrong reporting of bad argument in --bla=val case
We use get_opt_long, which allows non ambiguous abbreviations, but
since we didn't like that we have code that checks for abbreviations and
issues an error. But that code only handled separate argument and key like:
--bla value
and didn't handle them in the same arguemnts, like:
--bla=value
This patch fixes that, and gives a slightly better error report (it still
contains the =value part though)
2011-01-06 13:17:21 +02:00
Alon Levy
64c330793e client: CEGUI: search for CEGUI-0.6 to work in F15 (rawhide) 2011-01-05 15:02:56 +02:00
Thomas Tyminski
9f93db6f07 Fixes compilation error of Spice Client (Linux/X11) with OpenGL enabled modified: client/x11/red_window.cpp 2011-01-05 09:59:59 +01:00
Alon Levy
742703f641 mingw32: refix to build on mingw.. 2010-12-30 12:16:31 +02:00
Marc-André Lureau
d66c1904f9 client inputs: stop blinking keyboard when out of focus
We could introduce another boolean to prevent changes, or just reuse
_active_modifiers_event = true to prevent further update.

Additionaly this patch restore the keyboard state when focusing out,
which is fine when dealing with full remote desktop, but should be
reconsidered if/when SPICE supports remote windows managed by client
window manager for instance, imho.
2010-12-30 12:08:31 +02:00
Tiziano Mueller
3c46335004 jpeg_boolean is a mingw32-libjpeg specific thing. Use a define check rather than a version check. 2010-12-30 11:27:29 +02:00
Hans de Goede
392ed65dda spicec: Remove spice-client watermark (rhbz#662450)
This patch stops us from drawing the spice client watermark at the top of
the virtual machine view. We have had requests through several channels to
remove this as it has little added value, and is seen as annoying by some.
Given that we now also have a bugzilla for this I think it is time we really
remove it.
2010-12-16 14:54:46 +01:00
Hans de Goede
3e37f2c1e8 spicec-x11: Let the window manager place our window the 1st time (rhbz#662407)
The problem is that RedWindow::show calls the XLib MoveWindow function
on the window after it has been mapped, moving it to the location in
_show_pos. This is seen by the window manager as the application saying
I know exactly where I want my window to be placed, don't do placing for
me. Which causes the client window to always be shown at pos 0x0, even
though that may not be the best location.

What this patch does is:
1) It makes RedWindow::show not call MoveWindow when a window is
   first created normally and then shown
2) It makes RedWindow::show still call MoveWindow when:
   -when the window has been shown before, and was hidden for some
    reason (controller interface), and is now being re-shown
    so that it ends up being re-shown at its old position
   -when the window is a fullscreen window (screen.cpp always
    calls move on the window before showing it to set its position)
   -when the user switch from windowed mode -> fullscreen ->
    windowed mode again, to make sure that the windowed mode window
    is shown in the same position as before switching to fullscreen
    mode
2010-12-16 14:54:46 +01:00
Hans de Goede
4081d67162 spicec-x11: Add a class hint to our window managet hints
This helps people who want to tell their windowmanager to do something special
with spicec, like make it sticky, or whatever, see:
https://bugzilla.redhat.com/show_bug.cgi?id=662452#c4
2010-12-16 14:54:46 +01:00
Hans de Goede
e47fb5d74f spicec: Add a --title cmdline option (rhbz#662452) 2010-12-16 14:54:46 +01:00
Alon Levy
1bb1bcb9a0 mingw32 build: check for CXImage, disable if not found (only on mingw32)
v2:
 + simplify (Hans)
 + also report presence of cximage for mingw32 target
2010-12-08 17:13:52 +02:00
Alon Levy
0449d0520c mingw32 build: use PRIu64 instead of ll 2010-12-08 17:13:28 +02:00
Alon Levy
916863202a mingw32 build: various fixes 2010-12-08 17:13:08 +02:00
Alon Levy
ff3fb423ed mingw32 build: fix two functions 2010-12-08 17:13:02 +02:00
Alon Levy
8bea5d6b5a mingw32 build: add missing switch flags (nop) 2010-12-08 17:12:56 +02:00
Alon Levy
a19080980d mingw32 build: eol fixes 2010-12-08 17:12:48 +02:00
Alon Levy
78f81ec61c mingw32 build: windows/Makefile.am: double NULL definition 2010-12-08 17:12:43 +02:00
Alon Levy
5aba28df73 mingw32 build: missing linked files for spicec.exe 2010-12-08 17:12:36 +02:00
Alon Levy
9728ea7f5c mingw32 build: remove unused, initialize uninitialized, reorder constructor initializers 2010-12-08 17:11:45 +02:00
Alon Levy
d14b720a3f mingw32 build: fix assignement as condition warning 2010-12-08 17:11:45 +02:00
Alon Levy
1943352d60 mingw32 build: fixed using -1 as uninitialized value for unsigned variables 2010-12-08 17:11:45 +02:00
Alon Levy
06749bd66b mingw32 build: fix signed/unsigned warnings as errors 2010-12-08 17:11:45 +02:00
Alon Levy
af1bfa6250 mingw32 build: fix various warnings 2010-12-08 17:11:45 +02:00
Gerd Hoffmann
f6cacd0e51 mingw32 build: fix build errors
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2010-12-08 17:11:45 +02:00
Gerd Hoffmann
53c808947d mingw32 build: disable ms compiler pragmas for gcc
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2010-12-08 17:11:44 +02:00
Gerd Hoffmann
71aad4d7e8 mingw32 build: add client/windows/Makefile, tweak configure
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2010-12-07 21:36:37 +02:00
Gerd Hoffmann
09c0e2de2c build: s/HUGE/INFINITY/
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2010-12-07 21:36:37 +02:00
Gerd Hoffmann
8879a45d56 build: use jpeg_boolean with more recent libjpeg versions.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2010-12-07 21:36:37 +02:00
Arnon Gilboa
8a7e6fef27 spicec: do not call connect_secure when connect_unsecure fails due to protocol version mismatch (v2)
If connect_unsecure failed due to protocol version mismatch, don't try to
connect_secure with the same version, but retry (connect_secure or
connect_unsecure) with older version. catch (...) is handled by caller
at RedChannel::run().

This solves the following bug: when "new" Spice client (protocol version 2)
with given secure_port connects to "old" server which is not using the same
secure_port (or not using a secure_port at all), the client exits immediately.

In this scenario, the client first tries to use Spice protocol version 2 to
connect the unsecure port, and altough this fails due to version mismatch, it
tries to connect to the secure port with the same protocol version 2, which is
a wrong behavior, fails due to socket error 10061 (WSAECONNREFUSED -
Connection refused) and handled mistakenly by immediate exit, instead of
retrying with protocol version 1.
2010-12-07 14:34:22 +02:00
Alon Levy
9dfeeaefbe client/smartcard: add files to Makefile.am for make dist 2010-12-07 13:31:44 +02:00
Alon Levy
7e0a1dfa75 smartcard: configure option --enable-smartcard 2010-12-07 13:31:44 +02:00
Alon Levy
757686384f smartcard: client: add keyboard shortcuts for remove/insert virtual card 2010-12-07 13:31:31 +02:00
Alon Levy
a2afcde061 smartcard: client side (not enabled yet) 2010-12-07 13:31:31 +02:00
Alon Levy
eb79d1e568 add .gitignore for tests 2010-11-30 20:54:49 +02:00
Hans de Goede
aa3e19bfa4 spicec: Don't show a white screen if guest resolution does not fit fullscreen
Currently when going / starting fullscreen if the guest resolution for one of
the monitors is higher then that monitor on the client can handle, we show a
white screen. Leaving the user stuck (unless they know the fullscreen key
switch combi) with a white screen when starting the client fullscreen from
the XPI.

This patch changes the client to fall back to windowed mode in this case
instead.
2010-11-25 11:23:02 +01:00
Arnon Gilboa
eb3efa3cbb spicec: fix ASSERT to accept size == 0
which is useful when calling RedClient::on_clipboard_notify(VD_AGENT_CLIPBOARD_NONE, NULL, 0);
2010-11-24 13:09:10 +02:00
Arnon Gilboa
dd31c0cbfd spicec-win: add image copy-paste support
-currently png & bmp
-using wspice libs cximage.lib & png.lib
-jpg & tiff will follow
2010-11-24 10:30:40 +02:00
Hans de Goede
32d9486091 spicec-x11: Fix unhandled exception: no window proc crash (rhbz#655836)
When XIM + ibus is in use XIM creates an invisible window for its own
purposes, we sometimes get a _GTK_LOAD_ICONTHEMES ClientMessage event on
this window. Since this window was not explicitly created by spicec, it
does not have a Window Context (with the event handling function for the
window in question) set. This would cause spicec to throw an unhandled
exception and exit.

This patch replaces the exception throwing with silently ignoring
ClientMessage events on Windows without a Context and logging a warning
for other event types.
2010-11-23 18:18:48 +01:00
Hans de Goede
86e62813b3 spicec-x11: Fix modifier keys getting stuck (rhbz#655048)
Currently modifier keys (ctrl, alt) can get stuck when using the x11 client.
To reproduce under gnome:
-focus the client window without causing it to grab the keyborad (click on
 the title bar not the window)
-press crlt + alt + right arrow to switch virtual desktop
-press crlt + alt + left arrow to switch back
-notice ctrl + alt are stuck pressed

What is happening here is:
-We get a focus out event, caused by the hotkey combi key grab, focus event
 notify mode == NotifyGrab, and release all keys -> good
-We get another focus out event, as we really loose the focus.
 notify mode == NotifyWhileGrabbed, which we ignore as we already lost
 focus before
-We get a focus in event, as the focus is returning to us, but we don't
 really have the focus yet, as the hotkey combi key grab is still active
 (ie ctrl + alt are still pressed).
 We now sync the vm's modifier key state with the current X-server state,
 telling the vm ctrl + alt are pressed. Note we do this by directly reading
 the X-server keyboard status, we are not getting any key press events from the
 X-server -> bad
-We get another focus in event, as we really get the focus back,
 notify mode == NotifyUngrab. We ignore this one as already have gained the
 focus before. If we were to sync the vm modifier state here, all would be
 well we would no longer see the modifier keys pressed, or if we would we
 would get a release event when they get released (testing has shown both).

The solution here is to ignore the first focus in event, and do the modifier
sync on the second focus in event, or more in general to ignore focus events
where notify mode == NotifyWhileGrabbed.
2010-11-22 16:09:15 +01:00
Hans de Goede
e0911d1c92 spicec-x11: Add a few missing XLockDisplay calls (rhbz#654265)
The XIM functions end up waiting for a reply from the server, so they
need locking around them. Idem for the XLookupString call.
2010-11-17 12:31:53 +01:00
Hans de Goede
c278cfa88c spicec: Don't show gui when connection info is specified on the cmdline
Currently when compiled with the gui enabled if you specify a host to connect
to on the cmdline the gui flashes by (show_gui gets called, then the connect
handler calls hide_gui as soon as the connection is made).

This patch removes this ugly flashing by of the gui.
2010-11-09 13:03:58 +01:00
Hans de Goede
cec1d98029 spicec: Remove empty show / hide gui functions
When compiling without gui support just don't call show / hide
gui, rather then making them stubs, this makes it easier to follow what is
going on.
2010-11-09 13:03:57 +01:00
Hans de Goede
a6d76fb0fc spicec: Fix info layer sometimes not showing
Currently we are calling show_info_layer from hide_gui in application.cpp, but
there are 2 cases where this does not happen:

1) When compiled without gui support hide_gui is a complete nop, so we never
   show the info layer when compiled without gui support
2) When run with --controller we never show the gui, and hide_gui
   checks if there is a gui to hide as the first thing and if not returns
   resulting in show_info_layer not being called, and thus the info layer
   not showing when launched from the xpi

This patch fixes both by adding a call to show_info_layer from
on_visibility_start note that on_visibility_start also calls hide_gui,
so in some cases show_info_layer may be called twice, this is not a
problem as show_info_layer is protected against this.
2010-11-09 13:03:57 +01:00
Alon Levy
6f9ab51509 gitignore: add generated_*, vim temps, pyc 2010-11-08 16:06:55 +02:00
Arnon Gilboa
6dbea1bda1 spicec-win: ignore MSVCRT.lib in x86 build
Same as in x64 build, for using the updated wspice-0.6.3
2010-11-08 10:39:01 +02:00
Hans de Goede
bfaa457910 spicec: Make cegui log to <app_data_dir>/cegui.log
This stops the client from dropping CEGUI.log files into the cwd all
the time, and stops it from crashing when the cwd is not writable
(rhbz#650253).
2010-11-05 20:46:28 +01:00
Hans de Goede
922b831db2 spicec-x11: Listen for selection owner window destroy / close events too
These rarely happen as most apps have the decency to do a SetSelectionOwner
None before exiting. But some do not, so listen for these too.
2010-10-28 12:05:30 +02:00