diff options
author | Eion Robb <eion@robbmob.com> | 2008-01-14 02:17:03 +0300 |
---|---|---|
committer | Eion Robb <eion@robbmob.com> | 2008-01-14 02:17:03 +0300 |
commit | e03d63bfbf3fb066e08711ddeaf2cfd189f8f245 (patch) | |
tree | 38e734ee926b0a7a5258884899a8c828ca63c648 /skype_messaging_x11.c | |
parent | fd332cbf01d2ec4f781a54ec85f7d0877c831ced (diff) |
Fixed disconnection crasher, should be faster fetching x11 messages too
Diffstat (limited to 'skype_messaging_x11.c')
-rw-r--r-- | skype_messaging_x11.c | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/skype_messaging_x11.c b/skype_messaging_x11.c index dfd481c..e65faf1 100644 --- a/skype_messaging_x11.c +++ b/skype_messaging_x11.c @@ -70,7 +70,11 @@ skype_disconnect() e = g_new0(XEvent, 1);
e->xclient.type = DestroyNotify;
- XSendEvent(disp, win, False, 0, e);
+ XSendEvent(disp, win, False, 0, e); + + //wait here for the event to be handled + +
XDestroyWindow(disp, win);
XCloseDisplay(disp);
@@ -150,18 +154,27 @@ receive_message_loop(void) XEvent e;
GString *msg = NULL;
char msg_temp[21];
- size_t len;
+ size_t len; + Bool event_bool;
msg_temp[20] = '\0';
while(run_loop)
{
- XNextEvent(disp, &e);
- if (e.type != ClientMessage)
- {
- purple_debug_info("skype_x11", "Unknown event received: %d\n", e.xclient.type);
- XFlush(disp);
- continue;
- }
+ //XNextEvent(disp, &e);
+ //if (e.type != ClientMessage)
+ //{
+ // purple_debug_info("skype_x11", "Unknown event received: %d\n", e.xclient.type);
+ // XFlush(disp);
+ // continue;
+ //} + + event_bool = XCheckTypedEvent(disp, ClientMessage, &e); + if (event_bool == False) + { + usleep(1000); + continue; + } +
strncpy(msg_temp, e.xclient.data.b, 20);
len = strlen(msg_temp);
if (e.xclient.message_type == message_start)
|