Hi, On 11/18/2010 09:32 AM, Alon Levy wrote:
Looks pretty harmless, but that's from someone not even sure what XIM is (input management?).
Yes input management
Did you just miss these calls when doing the XLockDisplay addition before?
Yes. Regards, Hans
On Wed, Nov 17, 2010 at 12:30:46PM +0100, Hans de Goede wrote:The XIM functions end up waiting for a reply from the server, so they need locking around them. Idem for the XLookupString call. --- client/x11/red_window.cpp | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/client/x11/red_window.cpp b/client/x11/red_window.cpp index c3ee1b0..c50e307 100644 --- a/client/x11/red_window.cpp +++ b/client/x11/red_window.cpp @@ -733,7 +733,9 @@ void RedWindow_p::handle_key_press_event(RedWindow& window, XKeyEvent* event) if (x_input_context != NULL) { for (;;) { + XLockDisplay(x_display); len = XwcLookupString(x_input_context, event, utf32_buf, buf_size,&key_sym,&status); + XUnlockDisplay(x_display); if (status != XBufferOverflow) { break; } @@ -767,7 +769,9 @@ void RedWindow_p::handle_key_press_event(RedWindow& window, XKeyEvent* event) unsigned char buffer[16]; int i; + XLockDisplay(x_display); len = XLookupString(event, (char *)buffer, sizeof(buffer), NULL, NULL); + XUnlockDisplay(x_display); for (i = 0; i< len; i++) { window.get_listener().on_char((uint32_t)buffer[i]); } @@ -2135,7 +2139,9 @@ void RedWindow::on_focus_in() } _focused = true; if (x_input_context) { + XLockDisplay(x_display); XwcResetIC(x_input_context); + XUnlockDisplay(x_display); } XPlatform::on_focus_in(); get_listener().on_activate(); -- 1.7.3.2 _______________________________________________ Spice-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/spice-devel
_______________________________________________ Spice-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/spice-devel
