ee30e70841
- Do not let the connection gui flash by when a hostname has been specified on the cmdline - Fix spice client locking up when dealing with XIM input (#654265) - Fix modifier keys getting stuck (#655048) - Fix spice client crashing when dealing with XIM ibus input (#655836) - Fix spice client only showing a white screen in full screen mode
44 lines
1.8 KiB
Diff
44 lines
1.8 KiB
Diff
From c8a034f2858f247d6a00ec1ad47de491b7e99575 Mon Sep 17 00:00:00 2001
|
|
From: Hans de Goede <hdegoede@redhat.com>
|
|
Date: Tue, 23 Nov 2010 15:32:15 +0100
|
|
Subject: [PATCH spice 6/7] 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.
|
|
---
|
|
client/x11/platform.cpp | 10 +++++++++-
|
|
1 files changed, 9 insertions(+), 1 deletions(-)
|
|
|
|
diff --git a/client/x11/platform.cpp b/client/x11/platform.cpp
|
|
index 2009817..334a74f 100644
|
|
--- a/client/x11/platform.cpp
|
|
+++ b/client/x11/platform.cpp
|
|
@@ -295,7 +295,15 @@ void XEventHandler::on_event()
|
|
}
|
|
|
|
if (XFindContext(&_x_display, event.xany.window, _win_proc_context, &proc_pointer)) {
|
|
- THROW("no window proc");
|
|
+ /* 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 -> skip logging. */
|
|
+ if (event.type != ClientMessage) {
|
|
+ LOG_WARN(
|
|
+ "Event on window without a win proc, type: %d, window: %u",
|
|
+ event.type, (unsigned int)event.xany.window);
|
|
+ }
|
|
+ continue;
|
|
}
|
|
XUnlockDisplay(x_display);
|
|
((XPlatform::win_proc_t)proc_pointer)(event);
|
|
--
|
|
1.7.3.2
|
|
|