Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/EionRobb/skype4pidgin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEion Robb <eion@robbmob.com>2008-11-12 23:08:44 +0300
committerEion Robb <eion@robbmob.com>2008-11-12 23:08:44 +0300
commit791ba3e5c0c7ad389210a86685d3d22dad78de74 (patch)
treea874ef2489731e2bb08f2672abe1ea2e85169a0d /skype_messaging_x11.c
parent7ab3896c957a48e9ebf38b652b19e40a24965a5c (diff)
Another attempt at fixing libxcb threading issues
Diffstat (limited to 'skype_messaging_x11.c')
-rw-r--r--skype_messaging_x11.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/skype_messaging_x11.c b/skype_messaging_x11.c
index 5bddfdb..861ea51 100644
--- a/skype_messaging_x11.c
+++ b/skype_messaging_x11.c
@@ -8,6 +8,7 @@ static GThread *receiving_thread = NULL;
Atom message_start, message_continue;
static gboolean run_loop = FALSE;
static unsigned char x11_error_code = 0;
+static GStaticMutex x11_mutex = G_STATIC_MUTEX_INIT;
static void receive_message_loop(void);
int x11_error_handler(Display *disp, XErrorEvent *error);
@@ -142,9 +143,9 @@ send_message(char* message)
{
for( i = 0; i < 20 && i + pos <= len; ++i )
e.xclient.data.b[ i ] = message[ i + pos ];
- XLockDisplay(disp);
+ g_static_mutex_lock2(&x11_mutex);
XSendEvent( disp, skype_win, False, 0, &e );
- XUnlockDisplay(disp);
+ g_static_mutex_unlock2(&x11_mutex);
e.xclient.message_type = message_continue; /* 2nd or greater message */
pos += i;
@@ -188,9 +189,9 @@ receive_message_loop(void)
Bool event_bool;
- XLockDisplay(disp);
+ g_static_mutex_lock2(&x11_mutex);
event_bool = XCheckTypedEvent(disp, ClientMessage, &e);
- XUnlockDisplay(disp);
+ g_static_mutex_unlock2(&x11_mutex);
if (!event_bool)
{
g_thread_yield();
@@ -215,9 +216,9 @@ receive_message_loop(void)
skype_debug_info("skype_x11", "unknown message type: %d\n", e.xclient.message_type);
if (disp)
{
- XLockDisplay(disp);
+ g_static_mutex_lock2(&x11_mutex);
XFlush(disp);
- XUnlockDisplay(disp);
+ g_static_mutex_unlock2(&x11_mutex);
}
continue;
}
@@ -227,9 +228,9 @@ receive_message_loop(void)
g_thread_create((GThreadFunc)skype_message_received, (void *)g_string_free(msg, FALSE), FALSE, NULL);
if (disp)
{
- XLockDisplay(disp);
+ g_static_mutex_lock2(&x11_mutex);
XFlush(disp);
- XUnlockDisplay(disp);
+ g_static_mutex_unlock2(&x11_mutex);
}
}
}